scipy.spatial.transform.RigidTransform.

as_dual_quat#

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

Возвращает представление преобразования в виде двойного кватерниона.

Единичные двойные кватернионы кодируют ориентацию в вещественном единичном кватернионе и перемещение в двойном кватернионе. Существует двойное покрытие, т.е. единичные двойные кватернионы q и -q представляют одно и то же преобразование.

Параметры:
scalar_firstbool, необязательно

Идёт ли скалярная компонента первой или последней в двух отдельных кватернионах, представляющих вещественную и двойную части. По умолчанию False, т.е. используется порядок скаляр-последний.

Возвращает:
dual_quatnumpy.ndarray, форма (N, 8) или (8,)

Одиночный вектор единичного двойного кватерниона или набор векторов единичных двойных кватернионов. Вещественная часть хранится в первых четырёх компонентах, а двойная часть — в последних четырёх компонентах.

Примеры

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

Получить тождественный двойной кватернион (по умолчанию используем скаляр-последний порядок):

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

Когда мы хотим использовать соглашение скаляр-первый, мы используем аргумент:

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