File:addBox2D\Dynamics\Joints\b2PulleyJointDef.js
//################################################################################################//
//################################################################################################//
// //
// ██████ ██ ██ ██ ██ ██ █████ ████ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ ██ ██ ██ ██ █████ ██ ██ ██ █████ ██ █████ █████ ██ ██ █████ ██ //
// ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ █████ //
// ██ ██ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ █████ ██ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ █████ ██ ██ █████ █████ █████ █████ ██ ██ ██ ████ █████ █████ ██ //
// ██ //
// █████ //
// //
//################################################################################################//
//################################################################################################//
// CLASS CONSTRUCTOR
/**
* Pulley joint definition. This requires two ground anchors,
* two dynamic body anchor points, and a pulley ratio.
*
* @class b2PulleyJointDef
* @constructor
* @extends {b2JointDef}
* @module Joints
*/
function b2PulleyJointDef() {
/**
* Invokes parent class constructor function reference.
*/
this.constructor( b2Joint.e_pulleyJoint );
////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// ██████ ██ ██ //
// ██ ██ ██ //
// ██ ██ ████ █████ █████ █████ ████ █████ ██ █████ █████ //
// ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ ██ ██ ██ ██ █████ ██ ██ ██ █████ █████ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ █████ █████ █████ ██ ████ ██ █████ █████ //
// ██ //
// ██ //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////
// property DECLARATIONS
/**
* The first ground anchor in world coordinates. This point
* never moves.
*
* @public
* @property groundAnchorA
* @type {b2Vec2}
* @default ( -1, 1 )
*/
this.groundAnchorA = new b2Vec2( -1, 1 );
/**
* The second ground anchor in world coordinates. This point
* never moves.
*
* @public
* @property groundAnchorB
* @type {b2Vec2}
* @default ( 1, 1 )
*/
this.groundAnchorB = new b2Vec2( 1, 1 );
/**
* The local anchor point relative to bodyA's origin.
*
* @public
* @property localAnchorA
* @type {b2Vec2}
* @default ( -1, 0 )
*/
this.localAnchorA = new b2Vec2( -1, 0 );
/**
* The local anchor point relative to bodyB's origin.
*
* @public
* @property localAnchorB
* @type {b2Vec2}
* @default ( 1, 0 )
*/
this.localAnchorB = new b2Vec2( 1, 0 );
// property INITIALISATIONS
/**
*
* @public
* @property type
* @type {int}
* @default b2Joint.e_pulleyJoint
*/
// @this.constructor( b2Joint.e_pulleyJoint ) above.
/**
* The a reference length for the segment attached to bodyA.
*
* @public
* @property lengthA
* @type {float}
* @default 0.0
*/
this.lengthA = 0.0;
/**
* The a reference length for the segment attached to bodyB.
*
* @public
* @property lengthB
* @type {float}
* @default 0.0
*/
this.lengthB = 0.0;
/**
* The pulley ratio, used to simulate a block-and-tackle.
*
* @public
* @property ratio
* @type {float}
* @default 1.0
*/
this.ratio = 1.0;
/**
* @public
* @property collideConnected
* @type {boolean}
* @default true
*/
this.collideConnected = true;
////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// ██ ██ ██ ██ //
// ██ ██ ██ //
// ██ █████ █████ █████ ████ ██ █████ █████ █████ █████ █████ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ ██ ██ ██ █████ ██ ██ ██ █████ ██ ██ ██ █████ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ ██ ██ ██ █████ ██ ██ ████ █████ ██ ██ █████ █████ //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////
} b2PulleyJointDef.prototype = p = new b2JointDef; Box2D.b2PulleyJointDef = b2PulleyJointDef;
////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// ██ ██ ██ ██ ██ //
// ███ ███ ██ ██ ██ //
// ███████ █████ █████ █████ █████ █████ █████ //
// ██ █ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ █████ //
// ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ //
// ██ ██ █████ ████ ██ ██ █████ █████ █████ //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////
// INSTANCE METHODS
/**
* @public
* @method initialize
* @param {b2Body} bodyA
* @param {b2Body} bodyB
* @param {b2Vec2} groundA
* @param {b2Vec2} groundB
* @param {b2Vec2} anchorA
* @param {b2Vec2} anchorB
* @param {number} ratio
* @return {void}
*/
p.initialize = function ( bodyA, bodyB, groundA, groundB, anchorA, anchorB, ratio ) {
ratio = ratio || 0;
this.bodyA = bodyA;
this.bodyB = bodyB;
this.groundAnchorA.copy( groundA );
this.groundAnchorB.copy( groundB );
this.bodyA.getLocalPoint( anchorA, this.localAnchorA );
this.bodyB.getLocalPoint( anchorB, this.localAnchorB );
this.lengthA = b2Vec2.distance( anchorA, groundA );
this.lengthB = b2Vec2.distance( anchorB, groundB );
this.ratio = ratio;
/*##if EXPORT_ASSERTS */
if ( b2Settings.ASSERTS_ENABLED ) {
b2Assert( this.ratio > b2Settings.b2_epsilon );
}/*#*/
};