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_Quaternion * | gan_quat_scale_q (Gan_Quaternion *q1, double s, Gan_Quaternion *q2) |
Macro: Scale a quaternion. | |
Gan_Quaternion * | gan_quat_scale_i (Gan_Quaternion *q1, double s) |
Macro: Scale a quaternion in-place. | |
Gan_Quaternion * | gan_quat_divide_q (Gan_Quaternion *q1, double s, Gan_Quaternion *q2) |
Macro: Divide a quaternion by a scalar. | |
Gan_Quaternion * | gan_quat_divide_i (Gan_Quaternion *q1, double s) |
Macro: Divide a quaternion by a scalar in-place. | |
Gan_Quaternion * | gan_quat_unit_q (Gan_Quaternion *q1, Gan_Quaternion *q2) |
Macro: Scale a quaternion to unit norm. | |
Gan_Quaternion * | gan_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_Quaternion * | gan_quat_add_q (Gan_Quaternion *q1, Gan_Quaternion *q2, Gan_Quaternion *q3) |
Macro: Add two quaternions. | |
Gan_Quaternion * | gan_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. |
|
Types of rotation handled by Gandalf.
|
|
Macro: Add two quaternions. Implemented as a macro call to gan_vec4_add_q(). |
|
Macro: Divide a quaternion by a scalar in-place. Implemented as a macro call to gan_vec4_divide_i(). |
|
Macro: Divide a quaternion by a scalar. Implemented as a macro call to gan_vec4_divide_q(). |
|
Fill quaternion with values.
|
|
Fill quaternion with values.
|
|
Macro: Scale a quaternion in-place. Implemented as a macro call to gan_vec4_scale_i(). |
|
Macro: Scale a quaternion. Implemented as a macro call to gan_vec4_scale_q(). |
|
Multiply all the elements of a quaternion by a scalar value.
|
|
Macro: Return the squared length of a quaternion. Implemented as a macro call to gan_vec4_sqrlen_q(). |
|
Macro: Return the squared length of a quaternion. Implemented as a macro call to gan_vec4_sqrlen_s(). |
|
Macro: Subtract two quaternions. Implemented as a macro call to gan_vec4_sub_q(). |
|
Macro: Scale a quaternion to unit norm in-place. Implemented as a macro call to gan_vec4_unit_i(). |
|
Macro: Scale a quaternion to unit norm. Implemented as a macro call to gan_quat_unit_q(). |
|
Macro: Add two sets of rotation parameters. Overwrites rot2 with the result. Implemented as a macro call to gan_rot3D_add_q(). |
|
Apply a rotation to a 3D point. Rotation definition is . |
|
Return the rotation of a 3D point. Returns . |
|
Macro: Subtract two sets of rotation parameters. Overwrites rot1 with the result. Implemented as a macro call to gan_rot3D_add_q(). |
|
Macro: Divide rotation parameters by a scalar in-place. Implemented as a macro call to gan_rot3D_scale_q(). |
|
Macro: Add two sets of rotation parameters. Overwrites rot1 with the result. Implemented as a macro call to gan_rot3D_add_q(). |
|
Combine two rotations into a third. For matrices . |
|
Combine two rotations and return a third. For matrices return . |
|
Combine two rotations into a third. For matrices . |
|
Combine two rotations and return a third. For matrices returns . |
|
Macro: Scale rotation parameters in-place. Implemented as a macro call to gan_rot3D_scale_q(). |
|
Macro: Subtract two sets of rotation parameters. Overwrites rot2 with the result. Implemented as a macro call to gan_rot3D_sub_q(). |