
=head1 NAME

Box2D::b2PulleyJointDef - Pulley joint definition.

=head1 SYNOPSIS

  my $joint_def = Box2D::b2PulleyJointDef->new();
  $joint_def->Initialize( $bodyA, $bodyB, $groundAnchorA,
      $groundAnchorB, $anchorA, $anchorB, $ratio );
  my $joint = $world->CreateJoint( $joint_def );

=head1 DESCRIPTION

Pulley joint definition. This requires two ground anchors, two dynamic
body anchor points, max lengths for each side, and a pulley ratio.

=head1 METHODS

Default constructor.

Returns a C<Box2D::b2PulleyJointDef>

=head2 Initialize( $bodyA, $bodyB, $groundAnchorA, $groundAnchorB,
$anchorA, $anchorB, $ratio )

Initialize the bodies, anchors, lengths, max lengths, and ratio using
the world anchors.

Parameters:

=over 4

=item * C<Box2D::b2Body> C<$bodyA>

=item * C<Box2D::b2Body> C<$bodyB>

=item * C<Box2D::b2Vec2> C<$groundAnchorA>

=item * C<Box2D::b2Vec2> C<$groundAnchorB>

=item * C<Box2D::b2Vec2> C<$anchorA>

=item * C<Box2D::b2Vec2> C<$anchorB>

=item * C<float32> C<$ratio>

=back

=head2 groundAnchorA()

=head2 groundAnchorA( $groundAnchorA )

The first ground anchor in world coordinates. This point never moves.

Parameters:

=over 4

=item * C<Box2D::b2Vec2> C<$groundAnchorA> (optional)

=back

Returns a C<Box2D::b2Vec2>

=head2 groundAnchorB()

=head2 groundAnchorB( $groundAnchorB )

The second ground anchor in world coordinates. This point never moves.

Parameters:

=over 4

=item * C<Box2D::b2Vec2> C<$groundAnchorB> (optional)

=back

Returns a C<Box2D::b2Vec2>

=head2 lengthA()

=head2 lengthA( $lengthA )

The a reference length for the segment attached to bodyA.

Parameters:

=over 4

=item * C<float32> C<$lengthA> (optional)

=back

Returns a C<float32>

=head2 lengthB()

=head2 lengthB( $lengthB )

The a reference length for the segment attached to bodyB.

Parameters:

=over 4

=item * C<float32> C<$lengthB> (optional)

=back

Returns a C<float32>

=head2 localAnchorA()

=head2 localAnchorA( $localAnchorA )

The local anchor point relative to bodyA's origin.

Parameters:

=over 4

=item * C<Box2D::b2Vec2> C<$localAnchorA> (optional)

=back

Returns a C<Box2D::b2Vec2>

=head2 localAnchorB()

=head2 localAnchorB( $localAnchorB )

The local anchor point relative to bodyB's origin.

Parameters:

=over 4

=item * C<Box2D::b2Vec2> C<$localAnchorB> (optional)

=back

Returns a C<Box2D::b2Vec2>

=head2 maxLengthA()

=head2 maxLengthA( $maxLengthA )

The maximum length of the segment attached to bodyA.

Parameters:

=over 4

=item * C<float32> C<$maxLengthA> (optional)

=back

Returns a C<float32>

=head2 maxLengthB()

=head2 maxLengthB( $maxLengthB )

The maximum length of the segment attached to bodyB.

Parameters:

=over 4

=item * C<float32> C<$maxLengthB> (optional)

=back

Returns a C<float32>

=head2 ratio()

=head2 ratio( $ratio )

The pulley ratio, used to simulate a block-and-tackle.

Parameters:

=over 4

=item * C<float32> C<$ratio> (optional)

=back

Returns a C<float32>

=head1 SEE ALSO

=over 4

=item * L<Box2D>

=item * L<Box2D::b2PulleyJoint>

=item * L<Box2D::b2JointDef>

=item * L<Box2D::b2World>

=back

=head1 BUGS

See L<Box2D/BUGS>

=head1 AUTHORS

See L<Box2D/AUTHORS>

=head1 COPYRIGHT & LICENSE

See L<Box2D/"COPYRIGHT & LICENSE">

=cut
