| ## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# iODEAMotorJoint Struct Reference

ODE AMotor joint. More...

`#include <ivaria/ode.h>`

Inheritance diagram for iODEAMotorJoint:

[legend]
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, const csVector3 &axis)=0
| Set AMotor axis.
virtual void | SetAMotorAxis (int axis_num, int rel_orient, float x, float y, float z)=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 658 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,
|  | 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::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::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:

- ivaria/ode.h