1. 程式人生 > >p2之彈簧

p2之彈簧

P2中用來約束剛體運動的還有彈簧Spring。彈簧除約束兩個剛體之間的運動軌跡外,通過damping阻尼和stiffness剛度係數等屬性,使得剛體在向目標移動時,出現類似彈簧的簡諧運動。Spring只是抽象的父類,參與運動模擬的是兩個子類LinearSpring和RotationalSpring。 

1)LinearSpring:
LinearSpring是線性彈簧,對剛體的約束行為和距離關節DistanceConstraint相同,按照指定的距離restLength將兩個剛體約束在一起,其中任何一個剛體的位置發生變化,會牽制著另一個剛體運動,以保證兩者的間距為distance。在運動過程中,剛體bodyB呈現簡諧運動。兩個剛體的角度不受約束,可以繞節點旋轉。建構函式: 
function LinearSpring(bodyA:Body, bodyB:Body, options:Object) 
其中,bodyA和bodyB為受彈簧約束的兩個剛體,options為關節設定選項,可以預設,P2會按預設值進行設定。選項為: 
·stiffness:彈簧的剛度係數,預設100。 
·damping:彈簧做簡諧運動過程中的阻尼係數,預設1 
·restLength:彈簧不受力狀態下的長度,預設為worldAnchorA和worldAnchorB間的距離 
·localAnchorA:剛體bodyA本地座標系下的節點座標,預設[0,0] 
·localAnchorB:剛體bodyB本地座標系下的節點座標,預設[0,0] 
·worldAnchorA:彈簧節點在全域性座標系下的座標,設定後將自動轉換並覆蓋localAnchorA 
·worldAnchorB:彈簧節點在全域性座標系下的座標,設定後將自動轉換並覆蓋localAnchorB 
2)RotationalSpring:


RotationalSpring是扭力彈簧,對剛體的約束類似齒輪關節,按照指定的restAngle約束兩個剛體之間的角度差。當剛體的角度不等於restAngle時,bodyB會進行簡諧運動旋轉,直至角度差恢復至restAngle。兩個剛體的座標位置不受約束,可以自由移動。 
function LinearSpring(bodyA:Bodt, bodyB:Body, options:Object) 
其中,bodyA和bodyB為受彈簧約束的兩個剛體,options為關節設定選項,可以預設,P2會按預設值進行設定。選項為: 
·restAngle:彈簧不受力無簡諧運動下剛體bodyA和bodyB間的角度差,預設為建立扭力彈簧時兩個剛體之間的角度差 
·stiffness:彈簧的剛度係數,預設100。 
·damping:彈簧做簡諧運動過程中的阻尼係數,預設1