Operator Reference

dual_quat_normalizeT_dual_quat_normalizeDualQuatNormalizeDualQuatNormalizedual_quat_normalize (Operator)

dual_quat_normalizeT_dual_quat_normalizeDualQuatNormalizeDualQuatNormalizedual_quat_normalize — Normalize a dual quaternion.

Signature

dual_quat_normalize( : : DualQuaternion : DualQuaternionNormalized)

Herror T_dual_quat_normalize(const Htuple DualQuaternion, Htuple* DualQuaternionNormalized)

void DualQuatNormalize(const HTuple& DualQuaternion, HTuple* DualQuaternionNormalized)

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

HDualQuaternion HDualQuaternion::DualQuatNormalize() const

def dual_quat_normalize(dual_quaternion: Sequence[float]) -> Sequence[float]

Description

The operator dual_quat_normalizedual_quat_normalizeDualQuatNormalizeDualQuatNormalizedual_quat_normalize normalizes the input dual quaternion DualQuaternionDualQuaternionDualQuaterniondualQuaterniondual_quaternion and returns the normalized dual quaternion, which is also called a unit dual quaternion, in DualQuaternionNormalizedDualQuaternionNormalizedDualQuaternionNormalizeddualQuaternionNormalizeddual_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 is 1, i.e., . This is equivalent to the following two conditions: where represents the conjugate quaternion of (see quat_conjugatequat_conjugateQuatConjugateQuatConjugatequat_conjugate).

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

Attention

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

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

DualQuaternionDualQuaternionDualQuaterniondualQuaterniondual_quaternion (input_control)  dual_quaternion(-array) HDualQuaternion, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Unit dual quaternion.

DualQuaternionNormalizedDualQuaternionNormalizedDualQuaternionNormalizeddualQuaternionNormalizeddual_quaternion_normalized (output_control)  dual_quaternion(-array) HDualQuaternion, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Normalized dual quaternion.

Possible Predecessors

dual_quat_composedual_quat_composeDualQuatComposeDualQuatComposedual_quat_compose

Possible Successors

dual_quat_to_hom_mat3ddual_quat_to_hom_mat3dDualQuatToHomMat3dDualQuatToHomMat3ddual_quat_to_hom_mat3d

See also

dual_quat_interpolatedual_quat_interpolateDualQuatInterpolateDualQuatInterpolatedual_quat_interpolate, pose_to_dual_quatpose_to_dual_quatPoseToDualQuatPoseToDualQuatpose_to_dual_quat, screw_to_dual_quatscrew_to_dual_quatScrewToDualQuatScrewToDualQuatscrew_to_dual_quat, dual_quat_to_screwdual_quat_to_screwDualQuatToScrewDualQuatToScrewdual_quat_to_screw, dual_quat_to_posedual_quat_to_poseDualQuatToPoseDualQuatToPosedual_quat_to_pose, dual_quat_conjugatedual_quat_conjugateDualQuatConjugateDualQuatConjugatedual_quat_conjugate, serialize_dual_quatserialize_dual_quatSerializeDualQuatSerializeDualQuatserialize_dual_quat, deserialize_dual_quatdeserialize_dual_quatDeserializeDualQuatDeserializeDualQuatdeserialize_dual_quat, dual_quat_trans_line_3ddual_quat_trans_line_3dDualQuatTransLine3dDualQuatTransLine3ddual_quat_trans_line_3d, dual_quat_trans_point_3ddual_quat_trans_point_3dDualQuatTransPoint3dDualQuatTransPoint3ddual_quat_trans_point_3d, quat_normalizequat_normalizeQuatNormalizeQuatNormalizequat_normalize

Module

Foundation