Skip to main content
`Ctrl`+`K`
scipy.spatial.transform.RigidTransform.

# as_dual_quat

RigidTransform.as_dual_quat(self, *, scalar_first=False)

  Return the dual quaternion representation of the transform.

  Unit dual quaternions encode orientation in a real unit quaternion and translation in a dual quaternion. There is a double cover, i.e., the unit dual quaternions q and -q represent the same transform.

  Parameters:
    scalar_first bool, optional

      Whether the scalar component goes first or last in the two individual quaternions that represent the real and the dual part. Default is False, i.e. the scalar-last order is used.

  Returns:
    dual_quat numpy.ndarray, shape (N, 8) or (8,)

      A single unit dual quaternion vector or a stack of unit dual quaternion vectors. The real part is stored in the first four components and the dual part in the last four components.

  Examples

      >>> from scipy.spatial.transform import RigidTransform as Tf
      >>> import numpy as np

  Get identity dual quaternion (we use scalar-last by default):

      >>> Tf.identity().as_dual_quat()
      array([0., 0., 0., 1., 0., 0., 0., 0.])

  When we want to use the scalar-first convention, we use the argument:

      >>> Tf.identity().as_dual_quat(scalar_first=True)
      array([1., 0., 0., 0., 0., 0., 0., 0.])