Skip to content

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🔗

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