SMC_Quat1_Exp (FUN) ¶ FUNCTION SMC_Quat1_Exp : BOOL Creates a unit quaternion that represents a rotation of the given angle around the given axis. Axis/angle is represented by a single quaternion q = (0, u*alpha/2) where u is the unit vector along the axis of rotation and alpha is the angle of rotation. Note the scaling by 1/2! The result is undefined if the real part of the quaternion is non-zero. (Note: each rotation is represented by two quaternions: if q represents a rotation (i.e. if |q| = 1) then -q represents the same rotation.) InOut: Scope Name Type Comment Inout qDst SMC_Quat Inout Const q SMC_Quat The quaternion argument to exp. The real part must be zero. Return SMC_Quat1_Exp BOOL
SMC_Quat1_From_RotMatrix (FUN) ¶ FUNCTION SMC_Quat1_From_RotMatrix Converts a rotation matrix (orthonormal with determinant 1) to a unit quaternion. The result is undefined if m is not a rotation. InOut: Scope Name Type Inout q SMC_Quat Inout Const m SMC_Matrix3
SMC_Quat1_Ln (FUN) ¶ FUNCTION SMC_Quat1_Ln : BOOL Computes the natural logarithm of a unit quaternion. The result is undefined for non-unit quaternions. Note 1: the natural logarithm of a unit quaternion has the form (0, u*theta/2). u is the axis of rotation and theta is the angle of rotation such that q represents the rotation R(u, theta). Note 2: for the quaternion (1,0), this function returns 0. InOut: Scope Name Type Comment Return SMC_Quat1_Ln BOOL Inout qDst SMC_Quat Inout Const q SMC_Quat A unit quaternion
SMC_Quat1_RotDist (FUN) ¶ FUNCTION SMC_Quat1_RotDist : LREAL Computes the angular distance (in radian) between two unit quaternions. The angular distance is angle of the shortest rotation between q1 and q2. InOut: Scope Name Type Inout Const q1 SMC_Quat q2 SMC_Quat Return SMC_Quat1_RotDist LREAL
SMC_Quat1_Slerp (FUN) ¶ FUNCTION SMC_Quat1_Slerp Interpolates between two unit quaternions that represent orientations. InOut: Scope Name Type Inout qDst SMC_Quat Inout Const qLhs SMC_Quat qRhs SMC_Quat Input lambda LREAL
SMC_Quat1_To_RotMatrix (FUN) ¶ FUNCTION SMC_Quat1_To_RotMatrix Converts a unit quaternion to the corresponding rotation matrix (orthonormal with determinant 1). The result is undefined if q is not a unit. InOut: Scope Name Type Inout m SMC_Matrix3 Inout Const q SMC_Quat
SMC_Quat_ApplyRotation (FUN) ¶ FUNCTION SMC_Quat_ApplyRotation Applies a rotation to a vector which is represented as a quaternion with real part = 0 InOut: Scope Name Type Comment Inout qD SMC_Quat Inout Const qR SMC_Quat Unit quaternion which represents the rotation qS SMC_Quat The quaternion which should be rotated (real part = 0)
SMC_Quat_Add (FUN) ¶ FUNCTION SMC_Quat_Add : BOOL InOut: Scope Name Type Return SMC_Quat_Add BOOL Inout qDst SMC_Quat Inout Const qLhs SMC_Quat qRhs SMC_Quat
SMC_Quat_Compose (FUN) ¶ FUNCTION SMC_Quat_Compose Creates a quaternion from the real part (dR) and the imaginary part (vector v). InOut: Scope Name Type Inout q SMC_Quat Input dR LREAL Inout Const v SMC_Vector3D
SMC_Quat_Conj (FUN) ¶ FUNCTION SMC_Quat_Conj Computes the conjugate quaternion, i.e. the quaternion with identical real part and negated imaginary part. InOut: Scope Name Type Inout qConj SMC_Quat Inout Const q SMC_Quat