Skip to content

dual_quat_composeDualQuatComposeDualQuatComposedual_quat_composeT_dual_quat_composeπŸ”—

Short descriptionπŸ”—

dual_quat_composeDualQuatComposeDualQuatComposedual_quat_composeT_dual_quat_compose β€” Multiply two dual quaternions.

SignatureπŸ”—

dual_quat_compose( dual_quaternion DualQuaternionLeft, dual_quaternion DualQuaternionRight, out dual_quaternion DualQuaternionComposed )void DualQuatCompose( const HTuple& DualQuaternionLeft, const HTuple& DualQuaternionRight, HTuple* DualQuaternionComposed )static void HOperatorSet.DualQuatCompose( HTuple dualQuaternionLeft, HTuple dualQuaternionRight, out HTuple dualQuaternionComposed )def dual_quat_compose( dual_quaternion_left: Sequence[float], dual_quaternion_right: Sequence[float] ) -> Sequence[float]

Herror T_dual_quat_compose( const Htuple DualQuaternionLeft, const Htuple DualQuaternionRight, Htuple* DualQuaternionComposed )

static HDualQuaternionArray HDualQuaternion::DualQuatCompose( const HDualQuaternionArray& DualQuaternionLeft, const HDualQuaternionArray& DualQuaternionRight )

HDualQuaternion HDualQuaternion::DualQuatCompose( const HDualQuaternion& DualQuaternionRight ) const

static HDualQuaternion[] HDualQuaternion.DualQuatCompose( HDualQuaternion[] dualQuaternionLeft, HDualQuaternion[] dualQuaternionRight )

HDualQuaternion HDualQuaternion.DualQuatCompose( HDualQuaternion dualQuaternionRight )

DescriptionπŸ”—

The operator dual_quat_composeDualQuatCompose multiplies the two dual quaternions DualQuaternionLeftdualQuaternionLeftdual_quaternion_left and DualQuaternionRightdualQuaternionRightdual_quaternion_right and returns the product in DualQuaternionComposeddualQuaternionComposeddual_quaternion_composed.

For a brief introduction to dual quaternions, the used notation, and the relationship between dual quaternions and screws, see β€œSolution Guide III-C - 3D Vision”.

The multiplication of the dual quaternions \(\hat{p}\) and \(\hat{q}\) is \(\hat{p} \hat{q} = p_{r}q_{r}+\varepsilon (p_{r}q_{d} + p_{d}q_{r})\).

For the multiplication of quaternions see quat_composeQuatCompose.

Note that the multiplication of two dual quaternions is not commutative, i.e., \(\hat{p} \hat{q} \neq \hat{q} \hat{p}\).

If DualQuaternionLeftdualQuaternionLeftdual_quaternion_left and DualQuaternionRightdualQuaternionRightdual_quaternion_right are unit dual quaternions and, hence, represent 3D rigid transformations, their multiplication corresponds to the multiplication of their corresponding homogeneous transformation matrices. Consequently, dual_quat_composeDualQuatCompose can be used to concatenate two 3D rigid transformations analogously to pose_composePoseCompose or hom_mat3d_composeHomMat3dCompose.

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πŸ”—

DualQuaternionLeftdualQuaternionLeftdual_quaternion_left (input_control) dual_quaternion(-array) β†’ (real)HTuple (double)HDualQuaternion, HTuple (double)Sequence[float]Htuple (double)

Left dual quaternion.

DualQuaternionRightdualQuaternionRightdual_quaternion_right (input_control) dual_quaternion(-array) β†’ (real)HTuple (double)HDualQuaternion, HTuple (double)Sequence[float]Htuple (double)

Right dual quaternion.

DualQuaternionComposeddualQuaternionComposeddual_quaternion_composed (output_control) dual_quaternion(-array) β†’ (real)HTuple (double)HDualQuaternion, HTuple (double)Sequence[float]Htuple (double)

Product of the dual quaternions.

Combinations with other operatorsπŸ”—

Combinations

Possible predecessors

screw_to_dual_quatScrewToDualQuat

Possible successors

dual_quat_to_hom_mat3dDualQuatToHomMat3d, dual_quat_to_poseDualQuatToPose, dual_quat_to_screwDualQuatToScrew

Alternatives

pose_composePoseCompose, hom_mat3d_composeHomMat3dCompose

See also

dual_quat_interpolateDualQuatInterpolate, pose_to_dual_quatPoseToDualQuat, dual_quat_normalizeDualQuatNormalize, dual_quat_conjugateDualQuatConjugate, serialize_dual_quatSerializeDualQuat, deserialize_dual_quatDeserializeDualQuat, dual_quat_trans_line_3dDualQuatTransLine3d, dual_quat_trans_point_3dDualQuatTransPoint3d, quat_composeQuatCompose

ModuleπŸ”—

Foundation