home *** CD-ROM | disk | FTP | other *** search
- package Box2D.Dynamics.Joints
- {
- import Box2D.Common.Math.b2Vec2;
- import Box2D.Dynamics.b2Body;
-
- public class b2PulleyJointDef extends b2JointDef
- {
-
-
- public var maxLength1:Number;
-
- public var maxLength2:Number;
-
- public var length1:Number;
-
- public var localAnchor1:b2Vec2;
-
- public var localAnchor2:b2Vec2;
-
- public var groundAnchor1:b2Vec2;
-
- public var groundAnchor2:b2Vec2;
-
- public var ratio:Number;
-
- public var length2:Number;
-
- public function b2PulleyJointDef()
- {
- groundAnchor1 = new b2Vec2();
- groundAnchor2 = new b2Vec2();
- localAnchor1 = new b2Vec2();
- localAnchor2 = new b2Vec2();
- super();
- type = b2Joint.e_pulleyJoint;
- groundAnchor1.Set(-1,1);
- groundAnchor2.Set(1,1);
- localAnchor1.Set(-1,0);
- localAnchor2.Set(1,0);
- length1 = 0;
- maxLength1 = 0;
- length2 = 0;
- maxLength2 = 0;
- ratio = 1;
- collideConnected = true;
- }
-
- public function Initialize(b1:b2Body, b2:b2Body, ga1:b2Vec2, ga2:b2Vec2, anchor1:b2Vec2, anchor2:b2Vec2, r:Number) : void
- {
- body1 = b1;
- body2 = b2;
- groundAnchor1.SetV(ga1);
- groundAnchor2.SetV(ga2);
- localAnchor1 = body1.GetLocalPoint(anchor1);
- localAnchor2 = body2.GetLocalPoint(anchor2);
- var d1X:Number = anchor1.x - ga1.x;
- var d1Y:Number = anchor1.y - ga1.y;
- length1 = Math.sqrt(d1X * d1X + d1Y * d1Y);
- var d2X:Number = anchor2.x - ga2.x;
- var d2Y:Number = anchor2.y - ga2.y;
- length2 = Math.sqrt(d2X * d2X + d2Y * d2Y);
- ratio = r;
- var C:Number = length1 + ratio * length2;
- maxLength1 = C - ratio * b2PulleyJoint.b2_minPulleyLength;
- maxLength2 = (C - b2PulleyJoint.b2_minPulleyLength) / ratio;
- }
- }
- }
-