=head1 NAME
Box2D::b2RevoluteJointDef - Revolute joint definition.
=head1 SYNOPSIS
my $joint_def = Box2D::b2RevoluteJointDef->new();
$joint_def->Initialize( $body_a, $body_b, $anchor );
my $joint = $world->CreateJoint( $joint_def );
=head1 DESCRIPTION
Revolute joint definition. This requires defining an anchor point where
the bodies are joined. The definition uses local anchor points so that
the initial configuration can violate the constraint slightly. You also
need to specify the initial relative angle for joint limits. This helps
when saving and loading a game. The local anchor points are measured
from the body's origin rather than the center of mass because:
=over 4
=item 1.
you might not know where the center of mass will be.
=item 2.
if you add/remove shapes from a body and recompute the mass, the joints
will be broken.
=back
=head1 METHODS
=head2 new()
Default constructor.
Returns a C<Box2D::b2RevoluteJointDef>
=head2 Initialize( $bodyA, $bodyB, $anchor )
Initialize the bodies, anchors, and reference angle using a world
anchor point.
Parameters:
=over 4
=item * C<Box2D::b2Body> C<$bodyA>
=item * C<Box2D::b2Body> C<$bodyB>
=item * C<Box2D::b2Vec2> C<$anchor>
=back
=head2 enableLimit()
=head2 enableLimit( $enableLimit )
A flag to enable joint limits.
Parameters:
=over 4
=item * C<bool> C<$enableLimit> (optional)
=back
Returns a C<bool>
=head2 enableMotor()
=head2 enableMotor( $enableMotor )
A flag to enable the joint motor.
Parameters:
=over 4
=item * C<bool> C<$enableMotor> (optional)
=back
Returns a C<bool>
=head2 localAnchorA()
=head2 localAnchorA( $localAnchorA )
The local anchor point relative to body1'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 body2's origin.
Parameters:
=over 4
=item * C<Box2D::b2Vec2> C<$localAnchorB> (optional)
=back
Returns a C<Box2D::b2Vec2>
=head2 lowerAngle()
=head2 lowerAngle( $lowerAngle )
The lower angle for the joint limit (radians).
Parameters:
=over 4
=item * C<float32> C<$lowerAngle> (optional)
=back
Returns a C<float32>
=head2 maxMotorTorque()
=head2 maxMotorTorque( $maxMotorTorque )
The maximum motor torque used to achieve the desired motor speed.
Usually in N-m.
Parameters:
=over 4
=item * C<float32> C<$maxMotorTorque> (optional)
=back
Returns a C<float32>
=head2 motorSpeed()
=head2 motorSpeed( $motorSpeed )
The desired motor speed. Usually in radians per second.
Parameters:
=over 4
=item * C<float32> C<$motorSpeed> (optional)
=back
Returns a C<float32>
=head2 referenceAngle()
=head2 referenceAngle( $referenceAngle )
The body2 angle minus body1 angle in the reference state (radians).
Parameters:
=over 4
=item * C<float32> C<$referenceAngle> (optional)
=back
Returns a C<float32>
=head2 upperAngle()
=head2 upperAngle( $upperAngle )
The upper angle for the joint limit (radians).
Parameters:
=over 4
=item * C<float32> C<$upperAngle> (optional)
=back
Returns a C<float32>
=head1 SEE ALSO
=over 4
=item * L<Box2D>
=item * L<Box2D::b2RevoluteJoint>
=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