jaxtransform3d.transformations.norm_dual_quaternion#

jaxtransform3d.transformations.norm_dual_quaternion(dual_quat)[source]#

Normalize unit dual quaternion.

A unit dual quaternion has a real quaternion with unit norm and an orthogonal real part. Both properties are enforced by this function.

We use a two-step normalization procedure (see [2] for details):

  1. Multiply the dual quaternion \(\sigma = p + q \epsilon\) with the normalization factor \(\frac{1}{\sqrt{s}} = \frac{1}{\sqrt{p^T p}}\) for the real quaternion to obtain \(\sigma' = \frac{\sigma}{\sqrt{s}}\), which ensures that the norm is \(1 + t' \epsilon\).

  2. Multiply \(\sigma' = p' + q' \epsilon\) with the normalization factor \((1 - \frac{t'}{2} \epsilon)\) for the dual quaternion (since s’ = 1) to obtain \(\sigma'' = p' + q' \epsilon - p'^T q' p' \epsilon\).

Parameters:
dual_quatarray-like, shape (…, 8)

Dual quaternion to represent transform: (pw, px, py, pz, qw, qx, qy, qz)

Returns:
dual_quat_normarray, shape (…, 8)

Unit dual quaternion to represent transform with orthogonal real and dual quaternion.

See also

dual_quaternion_squared_norm

Computes the squared norm of a dual quaternion.

References

[1]

enki (2023). Properly normalizing a dual quaternion. https://stackoverflow.com/a/76313524

[2]

Alexander Fabisch (2025). Normalizing dual quaternions. https://alexanderfabisch.github.io/normalizing-dual-quaternions.html