API Documentation for:
Show:

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 );
        }/*#*/
    };