Main Page | Modules | Class List | File List | Class Members | File Members

3D Rotation
[Vision Package]


Classes

struct  Gan_Quaternion
 Quaternion structure. More...
struct  Gan_Rot3D
 Structure representing 3D rotation. More...
struct  Gan_Rot3D_Cov
 Structure representing covariance of 3D rotation. More...

Defines

#define Q1   rot1->data.q
#define Q1   qp.q1
#define Q2   rot2->data.q
#define Q2   qp.q2
#define Q0   qp.q0
#define Q3   qp.q3
#define RX   r->x
#define RY   r->y
#define RZ   r->z

Typedefs

typedef Gan_Quaternion Gan_Quaternion
 Quaternion structure.
typedef Gan_Rot3D Gan_Rot3D
 Structure representing 3D rotation.
typedef Gan_Rot3D_Cov Gan_Rot3D_Cov
 Structure representing covariance of 3D rotation.

Enumerations

enum  Gan_Rot3D_Type { GAN_ROT3D_QUATERNION, GAN_ROT3D_EXPONENTIAL, GAN_ROT3D_ANGLE_AXIS, GAN_ROT3D_MATRIX }
 Types of rotation handled by Gandalf. More...

Functions

void gan_quat_fill_q (Gan_Quaternion *q, double q0, double q1, double q2, double q3)
 Fill quaternion with values.
Gan_Quaternion gan_quat_fill_s (double q0, double q1, double q2, double q3)
 Fill quaternion with values.
Gan_Quaternion gan_quat_scale_s (Gan_Quaternion *q, double s)
 Multiply all the elements of a quaternion by a scalar value.
Gan_Quaternion gan_quat_divide_s (Gan_Quaternion *q, double s)
 Divide quaternion by scalar.
Gan_Quaternion gan_quat_unit_s (Gan_Quaternion *q)
 Scale quaternion to unit length.
Gan_Bool gan_rot3D_build_quaternion (Gan_Rot3D *rot, double q0, double q1, double q2, double q3)
 Fill rotation structure from quaternion.
Gan_Bool gan_rot3D_build_exponential (Gan_Rot3D *rot, double rx, double ry, double rz)
 Fill rotation structure from exponential rotation parameters.
Gan_Bool gan_rot3D_build_angle_axis (Gan_Rot3D *rot, double angle, double ax, double ay, double az)
 Fill rotation structure from angle/axis rotation parameters.
Gan_Bool gan_rot3D_build_matrix (Gan_Rot3D *rot, double Rxx, double Rxy, double Rxz, double Ryx, double Ryy, double Ryz, double Rzx, double Rzy, double Rzz)
 Fill rotation structure from matrix rotation parameters.
Gan_Bool gan_rot3D_ident_q (Gan_Rot3D *rot, Gan_Rot3D_Type type)
 Set null rotation with given type.
Gan_Rot3D gan_rot3D_ident_s (Gan_Rot3D_Type type)
 Return null rotation with given type.
Gan_Bool gan_rot3D_apply_v3_q (Gan_Rot3D *rot, Gan_Vector3 *X, Gan_Vector3 *X_new)
 Apply a rotation to a 3D point.
Gan_Vector3 gan_rot3D_apply_v3_s (Gan_Rot3D *rot, Gan_Vector3 *X)
 Return the rotation of a 3D point.
Gan_Bool gan_rot3D_mult_q (Gan_Rot3D *rot1, Gan_Rot3D *rot2, Gan_Rot3D *rot3)
 Combine two rotations into a third.
Gan_Rot3D gan_rot3D_mult_s (Gan_Rot3D *rot1, Gan_Rot3D *rot2)
 Combine two rotations and return a third.
Gan_Bool gan_rot3D_multI_q (Gan_Rot3D *rot1, Gan_Rot3D *rot2, Gan_Rot3D *rot3)
 Combine two rotations into a third.
Gan_Rot3D gan_rot3D_multI_s (Gan_Rot3D *rot1, Gan_Rot3D *rot2)
 Combine two rotations and return a third.
Gan_Bool gan_rot3D_scale_q (Gan_Rot3D *rot_s, double scale, Gan_Rot3D *rot_d)
 Scale rotation parameters.
Gan_Rot3D gan_rot3D_scale_s (Gan_Rot3D *rot_s, double scale)
 Multiply rotation parameters by scalar.
Gan_Bool gan_rot3D_divide_q (Gan_Rot3D *rot_s, double scale, Gan_Rot3D *rot_d)
 Divide rotation parameters by scalar.
Gan_Rot3D gan_rot3D_divide_s (Gan_Rot3D *rot_s, double scale)
 Divide rotation parameters by scalar.
Gan_Bool gan_rot3D_add_q (Gan_Rot3D *rot1, Gan_Rot3D *rot2, Gan_Rot3D *rot3)
 Add two sets of rotation parameters together.
Gan_Rot3D gan_rot3D_add_s (Gan_Rot3D *rot1, Gan_Rot3D *rot2)
 Add two sets of rotation parameters together.
Gan_Bool gan_rot3D_sub_q (Gan_Rot3D *rot1, Gan_Rot3D *rot2, Gan_Rot3D *rot3)
 Subtract two sets of rotation parameters from each other.
Gan_Rot3D gan_rot3D_sub_s (Gan_Rot3D *rot1, Gan_Rot3D *rot2)
 Subtract two sets of rotation parameters from each other.
Gan_Bool gan_rot3D_convert_q (Gan_Rot3D *rot_s, Gan_Rot3D_Type type, Gan_Rot3D *rot_d)
 Convert rotation from one type to another.
Gan_Rot3D gan_rot3D_convert_s (Gan_Rot3D *rot_s, Gan_Rot3D_Type type)
 Return conversion of rotation from one type to another.
Gan_Bool gan_rot3D_from_quaternion_q (Gan_Rot3D *rot, Gan_Quaternion *q, Gan_Rot3D_Type type)
 Convert rotation from quaternion to another type.
Gan_Rot3D gan_rot3D_from_quaternion_s (Gan_Quaternion *q, Gan_Rot3D_Type type)
 Return conversion of rotation from quaternion to another type.
Gan_Bool gan_rot3D_from_exponential_q (Gan_Rot3D *rot, Gan_Vector3 *r, Gan_Rot3D_Type type)
 Convert rotation from exponential to another type.
Gan_Rot3D gan_rot3D_from_exponential_s (Gan_Vector3 *r, Gan_Rot3D_Type type)
 Return conversion of rotation from exponential to another type.
Gan_Bool gan_rot3D_from_angle_axis_q (Gan_Rot3D *rot, double angle, Gan_Vector3 *axis, Gan_Rot3D_Type type)
 Convert rotation from angle/axis to another type.
Gan_Rot3D gan_rot3D_from_angle_axis_s (double angle, Gan_Vector3 *axis, Gan_Rot3D_Type type)
 Return conversion of rotation from angle/axis to another type.
Gan_Bool gan_rot3D_from_matrix_q (Gan_Rot3D *rot, Gan_Matrix33 *R, Gan_Rot3D_Type type)
 Convert rotation from matrix to another type.
Gan_Rot3D gan_rot3D_from_matrix_s (Gan_Matrix33 *R, Gan_Rot3D_Type type)
 Return conversion of rotation from matrix to another type.
Gan_Bool gan_rot3D_matrix_adjust (Gan_Matrix33 *R)
 Adjust rotation matrix to be orthogonal using SVD.
Gan_Quaterniongan_quat_scale_q (Gan_Quaternion *q1, double s, Gan_Quaternion *q2)
 Macro: Scale a quaternion.
Gan_Quaterniongan_quat_scale_i (Gan_Quaternion *q1, double s)
 Macro: Scale a quaternion in-place.
Gan_Quaterniongan_quat_divide_q (Gan_Quaternion *q1, double s, Gan_Quaternion *q2)
 Macro: Divide a quaternion by a scalar.
Gan_Quaterniongan_quat_divide_i (Gan_Quaternion *q1, double s)
 Macro: Divide a quaternion by a scalar in-place.
Gan_Quaterniongan_quat_unit_q (Gan_Quaternion *q1, Gan_Quaternion *q2)
 Macro: Scale a quaternion to unit norm.
Gan_Quaterniongan_quat_unit_i (Gan_Quaternion *q1)
 Macro: Scale a quaternion to unit norm in-place.
double gan_quat_sqrlen_q (Gan_Quaternion *q1)
 Macro: Return the squared length of a quaternion.
double gan_quat_sqrlen_s (Gan_Quaternion *q1)
 Macro: Return the squared length of a quaternion.
Gan_Quaterniongan_quat_add_q (Gan_Quaternion *q1, Gan_Quaternion *q2, Gan_Quaternion *q3)
 Macro: Add two quaternions.
Gan_Quaterniongan_quat_sub_q (Gan_Quaternion *q1, Gan_Quaternion *q2, Gan_Quaternion *q3)
 Macro: Subtract two quaternions.
Gan_Bool gan_rot3D_scale_i (Gan_Rot3D *rot, double s)
 Macro: Scale rotation parameters in-place.
Gan_Bool gan_rot3D_divide_i (Gan_Rot3D *rot, double s)
 Macro: Divide rotation parameters by a scalar in-place.
Gan_Bool gan_rot3D_increment (Gan_Rot3D *rot1, Gan_Rot3D *rot2)
 Macro: Add two sets of rotation parameters.
Gan_Bool gan_rot3D_add_i2 (Gan_Rot3D *rot1, Gan_Rot3D *rot2)
 Macro: Add two sets of rotation parameters.
Gan_Bool gan_rot3D_decrement (Gan_Rot3D *rot1, Gan_Rot3D *rot2)
 Macro: Subtract two sets of rotation parameters.
Gan_Bool gan_rot3D_sub_i2 (Gan_Rot3D *rot1, Gan_Rot3D *rot2)
 Macro: Subtract two sets of rotation parameters.

Enumeration Type Documentation

enum Gan_Rot3D_Type
 

Types of rotation handled by Gandalf.

Enumeration values:
GAN_ROT3D_QUATERNION  Quaternion representation of rotation.
GAN_ROT3D_EXPONENTIAL  Exponential matrix representation of rotation.
GAN_ROT3D_ANGLE_AXIS  Angle/axis representation of rotation.
GAN_ROT3D_MATRIX  Matrix representation of rotation.


Function Documentation

Gan_Quaternion* gan_quat_add_q Gan_Quaternion q1,
Gan_Quaternion q2,
Gan_Quaternion q3
 

Macro: Add two quaternions.

Implemented as a macro call to gan_vec4_add_q().

Gan_Quaternion* gan_quat_divide_i Gan_Quaternion q1,
double  s
 

Macro: Divide a quaternion by a scalar in-place.

Implemented as a macro call to gan_vec4_divide_i().

Gan_Quaternion* gan_quat_divide_q Gan_Quaternion q1,
double  s,
Gan_Quaternion q2
 

Macro: Divide a quaternion by a scalar.

Implemented as a macro call to gan_vec4_divide_q().

void gan_quat_fill_q Gan_Quaternion q,
double  q0,
double  q1,
double  q2,
double  q3
 

Fill quaternion with values.

Parameters:
q Pointer to quaternion to fill
q0 First element of q, representing the rotation angle
q1 Second element of q, representing the rotation axis x-coordinate
q2 Second element of q, representing the rotation axis y-coordinate
q3 Second element of q, representing the rotation axis z-coordinate
Fills a structure containing a quaternion with its four elements.

Returns:
no value.
See also:
gan_quat_fill_s()

Gan_Quaternion gan_quat_fill_s double  q0,
double  q1,
double  q2,
double  q3
 

Fill quaternion with values.

Parameters:
q0 First element of q, representing the rotation angle
q1 Second element of q, representing the rotation axis x-coordinate
q2 Second element of q, representing the rotation axis y-coordinate
q3 Second element of q, representing the rotation axis z-coordinate
Fills a structure containing a quaternion with its four elements.

Returns:
a filled quaternion structure.
See also:
gan_quat_fill_q()

Gan_Quaternion* gan_quat_scale_i Gan_Quaternion q1,
double  s
 

Macro: Scale a quaternion in-place.

Implemented as a macro call to gan_vec4_scale_i().

Gan_Quaternion* gan_quat_scale_q Gan_Quaternion q1,
double  s,
Gan_Quaternion q2
 

Macro: Scale a quaternion.

Implemented as a macro call to gan_vec4_scale_q().

Gan_Quaternion gan_quat_scale_s Gan_Quaternion q,
double  s
 

Multiply all the elements of a quaternion by a scalar value.

Parameters:
q Pointer to quaternion to rescale
s Scalar value by which to multiply quaternion
Multiplies all the elements of a quaternion by the same scalar value.

Returns:
a quaternion structure containing the new elements.
See also:
gan_quat_divide_s()

double gan_quat_sqrlen_q Gan_Quaternion q1  ) 
 

Macro: Return the squared length of a quaternion.

Implemented as a macro call to gan_vec4_sqrlen_q().

double gan_quat_sqrlen_s Gan_Quaternion q1  ) 
 

Macro: Return the squared length of a quaternion.

Implemented as a macro call to gan_vec4_sqrlen_s().

Gan_Quaternion* gan_quat_sub_q Gan_Quaternion q1,
Gan_Quaternion q2,
Gan_Quaternion q3
 

Macro: Subtract two quaternions.

Implemented as a macro call to gan_vec4_sub_q().

Gan_Quaternion* gan_quat_unit_i Gan_Quaternion q1  ) 
 

Macro: Scale a quaternion to unit norm in-place.

Implemented as a macro call to gan_vec4_unit_i().

Gan_Quaternion* gan_quat_unit_q Gan_Quaternion q1,
Gan_Quaternion q2
 

Macro: Scale a quaternion to unit norm.

Implemented as a macro call to gan_quat_unit_q().

Gan_Bool gan_rot3D_add_i2 Gan_Rot3D rot1,
Gan_Rot3D rot2
 

Macro: Add two sets of rotation parameters.

Overwrites rot2 with the result. Implemented as a macro call to gan_rot3D_add_q().

Gan_Bool gan_rot3D_apply_v3_q Gan_Rot3D rot,
Gan_Vector3 X,
Gan_Vector3 X_new
 

Apply a rotation to a 3D point.

Rotation definition is $ X_{new} = R\:X $.

Gan_Vector3 gan_rot3D_apply_v3_s Gan_Rot3D rot,
Gan_Vector3 X
 

Return the rotation of a 3D point.

Returns $ R\:X $.

Gan_Bool gan_rot3D_decrement Gan_Rot3D rot1,
Gan_Rot3D rot2
 

Macro: Subtract two sets of rotation parameters.

Overwrites rot1 with the result. Implemented as a macro call to gan_rot3D_add_q().

Gan_Bool gan_rot3D_divide_i Gan_Rot3D rot,
double  s
 

Macro: Divide rotation parameters by a scalar in-place.

Implemented as a macro call to gan_rot3D_scale_q().

Gan_Bool gan_rot3D_increment Gan_Rot3D rot1,
Gan_Rot3D rot2
 

Macro: Add two sets of rotation parameters.

Overwrites rot1 with the result. Implemented as a macro call to gan_rot3D_add_q().

Gan_Bool gan_rot3D_mult_q Gan_Rot3D rot1,
Gan_Rot3D rot2,
Gan_Rot3D rot3
 

Combine two rotations into a third.

For matrices $ R_3 = R_1\:R_2 $.

Gan_Rot3D gan_rot3D_mult_s Gan_Rot3D rot1,
Gan_Rot3D rot2
 

Combine two rotations and return a third.

For matrices return $ R_1\:R_2 $.

Gan_Bool gan_rot3D_multI_q Gan_Rot3D rot1,
Gan_Rot3D rot2,
Gan_Rot3D rot3
 

Combine two rotations into a third.

For matrices $ R_3 = R_1\:R_2^{-1} $.

Gan_Rot3D gan_rot3D_multI_s Gan_Rot3D rot1,
Gan_Rot3D rot2
 

Combine two rotations and return a third.

For matrices returns $ R_1\:R_2^{-1} $.

Gan_Bool gan_rot3D_scale_i Gan_Rot3D rot,
double  s
 

Macro: Scale rotation parameters in-place.

Implemented as a macro call to gan_rot3D_scale_q().

Gan_Bool gan_rot3D_sub_i2 Gan_Rot3D rot1,
Gan_Rot3D rot2
 

Macro: Subtract two sets of rotation parameters.

Overwrites rot2 with the result. Implemented as a macro call to gan_rot3D_sub_q().


Generated on Fri Mar 17 12:45:02 2006 by  doxygen 1.3.9.1