# dual_quat_compose (Operator)

## Name

`dual_quat_compose` — Multiply two dual quaternions.

## Signature

`dual_quat_compose( : : DualQuaternionLeft, DualQuaternionRight : DualQuaternionComposed)`

## Description

The operator `dual_quat_compose` multiplies the two dual quaternions `DualQuaternionLeft` and `DualQuaternionRight` and returns the product in `DualQuaternionComposed`.

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 and is .

For the multiplication of quaternions see `quat_compose`.

Note that the multiplication of two dual quaternions is not commutative, i.e., .

If `DualQuaternionLeft` and `DualQuaternionRight` 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_compose` can be used to concatenate two 3D rigid transformations analogously to `pose_compose` or `hom_mat3d_compose`.

## Execution Information

• Multithreading type: reentrant (runs in parallel with non-exclusive operators).
• Processed without parallelization.

## Parameters

`DualQuaternionLeft` (input_control)  dual_quaternion(-array) `→` (real)

Left dual quaternion.

`DualQuaternionRight` (input_control)  dual_quaternion(-array) `→` (real)

Right dual quaternion.

`DualQuaternionComposed` (output_control)  dual_quaternion(-array) `→` (real)

Product of the dual quaternions.

## Possible Predecessors

`screw_to_dual_quat`

## Possible Successors

`dual_quat_to_hom_mat3d`, `dual_quat_to_pose`, `dual_quat_to_screw`

## Alternatives

`pose_compose`, `hom_mat3d_compose`

`dual_quat_interpolate`, `pose_to_dual_quat`, `dual_quat_normalize`, `dual_quat_conjugate`, `serialize_dual_quat`, `deserialize_dual_quat`, `dual_quat_trans_line_3d`, `dual_quat_trans_point_3d`, `quat_compose`

Foundation