Skip to content

dual_quat_to_hom_mat3dDualQuatToHomMat3dDualQuatToHomMat3ddual_quat_to_hom_mat3dT_dual_quat_to_hom_mat3dπŸ”—

Short descriptionπŸ”—

dual_quat_to_hom_mat3dDualQuatToHomMat3dDualQuatToHomMat3ddual_quat_to_hom_mat3dT_dual_quat_to_hom_mat3d β€” Convert a unit dual quaternion into a homogeneous transformation matrix.

SignatureπŸ”—

dual_quat_to_hom_mat3d( dual_quaternion DualQuaternion, out hom_mat3d HomMat3D )void DualQuatToHomMat3d( const HTuple& DualQuaternion, HTuple* HomMat3D )static void HOperatorSet.DualQuatToHomMat3d( HTuple dualQuaternion, out HTuple homMat3D )def dual_quat_to_hom_mat3d( dual_quaternion: Sequence[float] ) -> Sequence[float]

Herror T_dual_quat_to_hom_mat3d( const Htuple DualQuaternion, Htuple* HomMat3D )

HHomMat3D HDualQuaternion::DualQuatToHomMat3d( ) const

HHomMat3D HDualQuaternion.DualQuatToHomMat3d( )

DescriptionπŸ”—

The operator dual_quat_to_hom_mat3dDualQuatToHomMat3d converts a unit dual quaternion DualQuaterniondualQuaterniondual_quaternion, which represents a 3D rigid transformation, into its corresponding homogeneous transformation matrix HomMat3DhomMat3Dhom_mat_3d.

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 rotation part of HomMat3DhomMat3Dhom_mat_3d is computed from the real part of the dual quaternion, as described in quat_to_hom_mat3dQuatToHomMat3d. The translation part \({\mathbf T}\) of HomMat3DhomMat3Dhom_mat_3d is computed from the real and dual part of \(\hat{q} = q_{r} + \varepsilon q_{d}\):

\[\begin{eqnarray*} \begin{array}{rcl} p &=& q_{d} q_{r} \\ {\mathbf T} &=& 2.0{\mathbf v}_{p}, \end{array} \end{eqnarray*}\]

where \({\mathbf v}_{p}\) is the vector part of the quaternion \(p\).

AttentionπŸ”—

HomMat3DhomMat3Dhom_mat_3d will only be a valid rigid transformation matrix if DualQuaterniondualQuaterniondual_quaternion is a unit dual quaternion.

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

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

Unit dual quaternion.

HomMat3DhomMat3Dhom_mat_3d (output_control) hom_mat3d β†’ (real)HTuple (double)HHomMat3D, HTuple (double)Sequence[float]Htuple (double)

Transformation matrix.

Combinations with other operatorsπŸ”—

Combinations

Possible predecessors

screw_to_dual_quatScrewToDualQuat, dual_quat_interpolateDualQuatInterpolate, dual_quat_composeDualQuatCompose, dual_quat_normalizeDualQuatNormalize

Possible successors

affine_trans_point_3dAffineTransPoint3d

Alternatives

dual_quat_to_poseDualQuatToPose, dual_quat_to_screwDualQuatToScrew

See also

dual_quat_composeDualQuatCompose, pose_to_dual_quatPoseToDualQuat, dual_quat_conjugateDualQuatConjugate, serialize_dual_quatSerializeDualQuat, deserialize_dual_quatDeserializeDualQuat, dual_quat_trans_line_3dDualQuatTransLine3d, dual_quat_trans_point_3dDualQuatTransPoint3d, quat_to_hom_mat3dQuatToHomMat3d

ModuleπŸ”—

Foundation