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.])