=head1 NAME
Box2D::b2Joint - Base joint class.
=head1 SYNOPSIS
# Don't use this class directly, use a subclass.
=head1 DESCRIPTION
The base joint class. Joints are used to constraint two bodies together
in various fashions. Some joints also feature limits and motors.
=head1 METHODS
=head2 GetAnchorA()
Get the anchor point on bodyA in world coordinates. Implemented in
C<Box2D::b2DistanceJoint>, C<Box2D::b2FrictionJoint>,
C<Box2D::b2GearJoint>, C<Box2D::b2LineJoint>, C<Box2D::b2MouseJoint>,
C<Box2D::b2PrismaticJoint>, C<Box2D::b2PulleyJoint>,
C<Box2D::b2RevoluteJoint>, and C<Box2D::b2WeldJoint>.
Returns a C<Box2D::b2Vec2>
=head2 GetAnchorB()
Get the anchor point on bodyB in world coordinates. Implemented in
C<Box2D::b2DistanceJoint>, C<Box2D::b2FrictionJoint>,
C<Box2D::b2GearJoint>, C<Box2D::b2LineJoint>, C<Box2D::b2MouseJoint>,
C<Box2D::b2PrismaticJoint>, C<Box2D::b2PulleyJoint>,
C<Box2D::b2RevoluteJoint>, and C<Box2D::b2WeldJoint>.
Returns a C<Box2D::b2Vec2>
=head2 GetBodyA()
Get the first body attached to this joint.
Returns a C<Box2D::b2Body>
=head2 GetBodyB()
Get the second body attached to this joint.
Returns a C<Box2D::b2Body>
=head2 GetNext()
Get the next joint the world joint list.
Returns a C<Box2D::b2Joint>
=head2 GetReactionForce( $inv_dt )
Get the reaction force on body2 at the joint anchor in Newtons.
Implemented in C<Box2D::b2DistanceJoint>, C<Box2D::b2FrictionJoint>,
C<Box2D::b2GearJoint>, C<Box2D::b2LineJoint>, C<Box2D::b2MouseJoint>,
C<Box2D::b2PrismaticJoint>, C<Box2D::b2PulleyJoint>,
C<Box2D::b2RevoluteJoint>, and C<Box2D::b2WeldJoint>.
Parameters:
=over 4
=item * C<float32> C<$inv_dt>
=back
Returns a C<Box2D::b2Vec2>
=head2 GetReactionTorque( $inv_dt )
Get the reaction torque on body2 in N*m. Implemented in
C<Box2D::b2DistanceJoint>, C<Box2D::b2FrictionJoint>,
C<Box2D::b2GearJoint>, C<Box2D::b2LineJoint>, C<Box2D::b2MouseJoint>,
C<Box2D::b2PrismaticJoint>, C<Box2D::b2PulleyJoint>,
C<Box2D::b2RevoluteJoint>, and C<Box2D::b2WeldJoint>.
Parameters:
=over 4
=item * C<float32> C<$inv_dt>
=back
Returns a C<float32>
=head2 GetType()
Get the type of the concrete joint.
Returns a C<Box2D::b2JointType>
=head2 GetUserData()
Get the user data pointer.
=head2 IsActive()
Short-cut function to determine if either body is inactive.
Returns a C<bool>
=head2 SetUserData( $data )
Set the user data pointer.
Parameters:
=over 4
=item * C<scalar> C<$data>
=back
=head1 SEE ALSO
=over 4
=item * L<Box2D>
=item * L<Box2D::b2JointDef>
=item * L<Box2D::b2DistanceJoint>
=item * L<Box2D::b2FrictionJoint>
=item * L<Box2D::b2GearJoint>
=item * L<Box2D::b2LineJoint>
=item * L<Box2D::b2MouseJoint>
=item * L<Box2D::b2PrismaticJoint>
=item * L<Box2D::b2PulleyJoint>
=item * L<Box2D::b2RevoluteJoint>
=item * L<Box2D::b2WeldJoint>
=back
=head1 BUGS
See L<Box2D/BUGS>
=head1 AUTHORS
See L<Box2D/AUTHORS>
=head1 COPYRIGHT & LICENSE
See L<Box2D/"COPYRIGHT & LICENSE">
=cut