Skip to content

dual_quat_normalizeDualQuatNormalizeDualQuatNormalizedual_quat_normalizeT_dual_quat_normalizeπŸ”—

Short descriptionπŸ”—

dual_quat_normalizeDualQuatNormalizeDualQuatNormalizedual_quat_normalizeT_dual_quat_normalize β€” Normalize a dual quaternion.

SignatureπŸ”—

dual_quat_normalize( dual_quaternion DualQuaternion, out dual_quaternion DualQuaternionNormalized )void DualQuatNormalize( const HTuple& DualQuaternion, HTuple* DualQuaternionNormalized )static void HOperatorSet.DualQuatNormalize( HTuple dualQuaternion, out HTuple dualQuaternionNormalized )def dual_quat_normalize( dual_quaternion: Sequence[float] ) -> Sequence[float]

Herror T_dual_quat_normalize( const Htuple DualQuaternion, Htuple* DualQuaternionNormalized )

static HDualQuaternionArray HDualQuaternion::DualQuatNormalize( const HDualQuaternionArray& DualQuaternion )

HDualQuaternion HDualQuaternion::DualQuatNormalize( ) const

static HDualQuaternion[] HDualQuaternion.DualQuatNormalize( HDualQuaternion[] dualQuaternion )

HDualQuaternion HDualQuaternion.DualQuatNormalize( )

DescriptionπŸ”—

The operator dual_quat_normalizeDualQuatNormalize normalizes the input dual quaternion DualQuaterniondualQuaterniondual_quaternion and returns the normalized dual quaternion, which is also called a unit dual quaternion, in DualQuaternionNormalizeddualQuaternionNormalizeddual_quaternion_normalized.

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 norm of a unit dual quaternion \(\hat{q} = q_{r} + \varepsilon q_{d}\) is 1, i.e., \(\hat{q} \bar{\hat{q}}=1\). This is equivalent to the following two conditions:

\[\begin{eqnarray*} \begin{array}{rcl} \| q_{r} \| = q_{r} \bar{q}_{r} &=& 1 \\ q_{r} \bar{q}_{d} + \bar{q}_{r} q_{d} &=& 0, \end{array} \end{eqnarray*}\]

where \(\bar{q}\) represents the conjugate quaternion of \(q\) (see quat_conjugateQuatConjugate).

A 3D rigid transformation can be represented by a unit dual quaternion.

AttentionπŸ”—

If the norm of the real part of DualQuaterniondualQuaterniondual_quaternion is 0, dual_quat_normalizeDualQuatNormalize returns the error code 9310 (H_ERR_DQ_ZERO_NORM) because in this case no normalization is possible.

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(-array) β†’ (real)HTuple (double)HDualQuaternion, HTuple (double)Sequence[float]Htuple (double)

Unit dual quaternion.

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

Normalized dual quaternion.

Combinations with other operatorsπŸ”—

Combinations

Possible predecessors

dual_quat_composeDualQuatCompose

Possible successors

dual_quat_to_hom_mat3dDualQuatToHomMat3d

See also

dual_quat_interpolateDualQuatInterpolate, pose_to_dual_quatPoseToDualQuat, screw_to_dual_quatScrewToDualQuat, dual_quat_to_screwDualQuatToScrew, dual_quat_to_poseDualQuatToPose, dual_quat_conjugateDualQuatConjugate, serialize_dual_quatSerializeDualQuat, deserialize_dual_quatDeserializeDualQuat, dual_quat_trans_line_3dDualQuatTransLine3d, dual_quat_trans_point_3dDualQuatTransPoint3d, quat_normalizeQuatNormalize

ModuleπŸ”—

Foundation