quat_composeQuatComposeQuatComposequat_composeT_quat_compose
Short description
quat_composeQuatComposeQuatComposequat_composeT_quat_compose — Multiply two quaternions.
Signature
quat_compose( quaternion QuaternionLeft, quaternion QuaternionRight, out quaternion QuaternionComposed )void QuatCompose( const HTuple& QuaternionLeft, const HTuple& QuaternionRight, HTuple* QuaternionComposed )static void HOperatorSet.QuatCompose( HTuple quaternionLeft, HTuple quaternionRight, out HTuple quaternionComposed )def quat_compose( quaternion_left: Sequence[float], quaternion_right: Sequence[float] ) -> Sequence[float]
Herror T_quat_compose( const Htuple QuaternionLeft, const Htuple QuaternionRight, Htuple* QuaternionComposed )
HQuaternion HQuaternion::QuatCompose( const HQuaternion& QuaternionRight ) const
HQuaternion HQuaternion.QuatCompose( HQuaternion quaternionRight )
Description
The operator quat_composeQuatCompose multiplies the two quaternions
QuaternionLeftquaternionLeftquaternion_left and QuaternionRightquaternionRightquaternion_right and returns the
result in QuaternionComposedquaternionComposedquaternion_composed.
A quaternion \(x\) is given by
\(x = x_{0} + x_{1}i + x_{2}j + x_{3}k\).
In HALCON, a quaternion is represented by a four value tuple:
\([x_{0},x_{1},x_{2},x_{3}]\).
The product of two quaternions \(x\) and \(y\) is defined as:
\[\begin{eqnarray*}
\begin{array}{rcl}
xy &=& (x_{0}y_{0} - x_{1}y_{1} - x_{2}y_{2} - x_{3}y_{3}) + \\
& & (x_{0}y_{1} + x_{1}y_{0} + x_{2}y_{3} - x_{3}y_{2})i + \\
& & (x_{0}y_{2} - x_{1}y_{3} + x_{2}y_{0} + x_{3}y_{1})j + \\
& & (x_{0}y_{3} + x_{1}y_{2} - x_{2}y_{1} + x_{3}y_{0})k \\
\end{array}
\end{eqnarray*}\]
As a consequence, the multiplication of two quaternions is not
commutative, i.e. \(xy \neq yx\).
Execution information
-
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
-
Multithreading scope: global (may be called from any thread).
-
Processed without parallelization.
Parameters
QuaternionLeftquaternionLeftquaternion_left (input_control) quaternion → (real)HTuple (double)HQuaternion, HTuple (double)Sequence[float]Htuple (double)
Left quaternion.
QuaternionRightquaternionRightquaternion_right (input_control) quaternion → (real)HTuple (double)HQuaternion, HTuple (double)Sequence[float]Htuple (double)
Right quaternion.
QuaternionComposedquaternionComposedquaternion_composed (output_control) quaternion → (real)HTuple (double)HQuaternion, HTuple (double)Sequence[float]Htuple (double)
Product of the input quaternions.
Combinations with other operators
Combinations
Possible predecessors
axis_angle_to_quatAxisAngleToQuat
Possible successors
quat_to_hom_mat3dQuatToHomMat3d, quat_to_poseQuatToPose, quat_rotate_point_3dQuatRotatePoint3d
See also
axis_angle_to_quatAxisAngleToQuat, quat_to_hom_mat3dQuatToHomMat3d, quat_rotate_point_3dQuatRotatePoint3d, quat_normalizeQuatNormalize, quat_conjugateQuatConjugate, dual_quat_composeDualQuatCompose
Module
Foundation