
=head1 NAME

Box2D::b2LineJoint - Provides two degrees of freedom: translation
along an axis and rotation in the plane.

=head1 SYNOPSIS

  my $joint - $world->CreateJoint( $joint_def );
  $joint->EnableLimit( 1 );
  $joint->EnableMotor( 1 );
  $joint->SetMotorSpeed( $speed );

=head1 DESCRIPTION

A line joint. This joint provides two degrees of freedom: translation
along an axis fixed in body1 and rotation in the plane. You can use a
joint limit to restrict the range of motion and a joint motor to drive
the motion or to model joint friction.

=head1 METHODS

=head2 EnableLimit( $flag )

Enable/disable the joint limit.

Parameters:

=over 4

=item * C<bool> C<$flag>

=back

=head2 EnableMotor( $flag )

Enable/disable the joint motor.

Parameters:

=over 4

=item * C<bool> C<$flag>

=back

=head2 GetAnchorA()

Get the anchor point on bodyA in world coordinates. Implements
C<Box2D::b2Joint>.

Returns a C<Box2D::b2Vec2>

=head2 GetAnchorB()

Get the anchor point on bodyB in world coordinates. Implements
C<Box2D::b2Joint>.

Returns a C<Box2D::b2Vec2>

=head2 GetJointSpeed()

Get the current joint translation speed, usually in meters per second.

Returns a C<float32>

=head2 GetJointTranslation()

Get the current joint translation, usually in meters.

Returns a C<float32>

=head2 GetLowerLimit()

Get the lower joint limit, usually in meters.

Returns a C<float32>

=head2 GetMaxMotorForce()

Returns a C<float32>

=head2 GetMotorForce()

Get the current motor force, usually in N.

Returns a C<float32>

=head2 GetMotorSpeed()

Get the motor speed, usually in meters per second.

Returns a C<float32>

=head2 GetReactionForce( $inv_dt )

Get the reaction force on body2 at the joint anchor in Newtons.
Implements C<Box2D::b2Joint>.

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. Implements C<Box2D::b2Joint>.

Parameters:

=over 4

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

=back

Returns a C<float32>

=head2 GetUpperLimit()

Get the upper joint limit, usually in meters.

Returns a C<float32>

=head2 IsLimitEnabled()

Is the joint limit enabled?

Returns a C<bool>

=head2 IsMotorEnabled()

Is the joint motor enabled?

Returns a C<bool>

=head2 SetLimits( $lower, $upper )

Set the joint limits, usually in meters.

Parameters:

=over 4

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

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

=back

=head2 SetMaxMotorForce( $force )

Set/Get the maximum motor force, usually in N.

Parameters:

=over 4

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

=back

=head2 SetMotorSpeed( $speed )

Set the motor speed, usually in meters per second.

Parameters:

=over 4

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

=back

=head1 SEE ALSO

=over 4

=item * L<Box2D>

=item * L<Box2D::b2LineJointDef>

=item * L<Box2D::b2Joint>

=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
