# iODEAMotorJoint Struct Reference

ODE AMotor joint. More...

`#include <ivaria/ode.h>`

Inheritance diagram for iODEAMotorJoint:

List of all members.

## Public Member Functions

virtual float GetAMotorAngle (int axis_num)=0
Return the current angle for axis anum.
virtual float GetAMotorAngleRate (int axis_num)=0
Return the current angle rate for axis anum.
virtual csVector3 GetAMotorAxis (int axis_num)=0
Get AMotor axis.
virtual int GetAMotorAxisRelOrientation (int axis_num)=0
Get ``relative orientation'' mode: 0: The axis is anchored to the global frame.
virtual ODEAMotorMode GetAMotorMode ()=0
Get the angular motor mode.
virtual int GetAMotorNumAxes ()=0
Get the number of angular axes that will be controlled by the AMotor.
virtual void SetAMotorAngle (int axis_num, float angle)=0
Tell the AMotor what the current angle is along axis anum.
virtual void SetAMotorAxis (int axis_num, int rel_orient, float x, float y, float z)=0
Set AMotor axis.
virtual void SetAMotorAxis (int axis_num, int rel_orient, const csVector3 &axis)=0
Set AMotor axis.
virtual void SetAMotorMode (ODEAMotorMode mode)=0
Set the angular motor mode.
virtual void SetAMotorNumAxes (int axis_num)=0
Set the number of angular axes that will be controlled by the AMotor.

## Detailed Description

ODE AMotor joint.

An angular motor (AMotor) allows the relative angular velocities of two bodies to be controlled. The angular velocity can be controlled on up to three axes, allowing torque motors and stops to be set for rotation about those axes. This is mainly useful in conjunction with ball joints (which do not constrain the angular degrees of freedom at all), but it can be used in any situation where angular control is needed. To use an AMotor with a ball joint, simply attach it to the same two bodies that the ball joint is attached to.

Definition at line 665 of file ode.h.

## Member Function Documentation

 virtual float iODEAMotorJoint::GetAMotorAngle ( int axis_num ) ` [pure virtual]`

Return the current angle for axis anum.

In CS_ODE_AMOTOR_MODE_USER mode this is simply the value that was set with SetAMotorAngle. In CS_ODE_AMOTOR_MODE_EULER mode this is the corresponding euler angle.

 virtual float iODEAMotorJoint::GetAMotorAngleRate ( int axis_num ) ` [pure virtual]`

Return the current angle rate for axis anum.

In CS_ODE_AMOTOR_MODE_USER mode this is always zero, as not enough information is available. In CS_ODE_AMOTOR_MODE_EULER mode this is the corresponding euler angle rate.

 virtual csVector3 iODEAMotorJoint::GetAMotorAxis ( int axis_num ) ` [pure virtual]`

Get AMotor axis.

 virtual int iODEAMotorJoint::GetAMotorAxisRelOrientation ( int axis_num ) ` [pure virtual]`

Get ``relative orientation'' mode: 0: The axis is anchored to the global frame.

1: The axis is anchored to the first body. 2: The axis is anchored to the second body.

 virtual ODEAMotorMode iODEAMotorJoint::GetAMotorMode ( ) ` [pure virtual]`

Get the angular motor mode.

 virtual int iODEAMotorJoint::GetAMotorNumAxes ( ) ` [pure virtual]`

Get the number of angular axes that will be controlled by the AMotor.

 virtual void iODEAMotorJoint::SetAMotorAngle ( int axis_num, float angle ) ` [pure virtual]`

Tell the AMotor what the current angle is along axis anum.

This function should only be called in CS_ODE_AMOTOR_MODE_USER mode, because in this mode the AMotor has no other way of knowing the joint angles. The angle information is needed if stops have been set along the axis, but it is not needed for axis motors.

 virtual void iODEAMotorJoint::SetAMotorAxis ( int axis_num, int rel_orient, float x, float y, float z ) ` [pure virtual]`

Set AMotor axis.

/param axis_num - axis number /param rel_orient - ``relative orientation'' mode: 0: The axis is anchored to the global frame. 1: The axis is anchored to the first body. 2: The axis is anchored to the second body. /param x, y, z - axis

 virtual void iODEAMotorJoint::SetAMotorAxis ( int axis_num, int rel_orient, const csVector3 & axis ) ` [pure virtual]`

Set AMotor axis.

/param axis_num - axis number /param rel_orient - ``relative orientation'' mode: 0: The axis is anchored to the global frame. 1: The axis is anchored to the first body. 2: The axis is anchored to the second body.

 virtual void iODEAMotorJoint::SetAMotorMode ( ODEAMotorMode mode ) ` [pure virtual]`

Set the angular motor mode.

The mode parameter must be one of the following constants: CS_ODE_AMOTOR_MODE_USER (The AMotor axes and joint angle settings are entirely controlled by the user, this is the default mode), CS_ODE_AMOTOR_MODE_EULER ( Euler angles are automatically computed, when this mode is initially set the current relative orientations of the bodies will correspond to all euler angles at zero).

 virtual void iODEAMotorJoint::SetAMotorNumAxes ( int axis_num ) ` [pure virtual]`

Set the number of angular axes that will be controlled by the AMotor.

The argument num can range from 0 (which effectively deactivates the joint) to 3. This is automatically set to 3 in CS_ODE_AMOTOR_MODE_EULER mode.

The documentation for this struct was generated from the following file:

Generated for Crystal Space 1.4.1 by doxygen 1.7.1