from_dual_quat#
- метод класса RigidTransform.from_dual_quat(cls, dual_quat, *, scalar_first=False)#
Инициализация из единичного двойного кватерниона.
Единичные двойные кватернионы кодируют ориентацию в вещественном единичном кватернионе и перемещение в двойном кватернионе. Существует двойное покрытие, т.е. единичные двойные кватернионы q и -q представляют одно и то же преобразование.
Единичные двойные кватернионы должны иметь вещественный кватернион с единичной нормой и двойной кватернион, ортогональный вещественному кватерниону, чтобы удовлетворять ограничению единичной нормы. Эта функция обеспечит оба свойства через нормализацию.
- Параметры:
- dual_quatarray_like, форма (N, 8) или (8,)
Одиночный единичный двойной кватернион или набор единичных двойных кватернионов. Действительная часть хранится в первых четырех компонентах, а двойная часть — в последних четырех компонентах.
- scalar_firstbool, необязательно
Идёт ли скалярная компонента первой или последней в двух отдельных кватернионах, представляющих вещественную и двойную части. По умолчанию False, т.е. используется порядок скаляр-последний.
- Возвращает:
- преобразовать
RigidTransformэкземпляр Одиночное преобразование или стек преобразований.
- преобразовать
Примеры
>>> from scipy.spatial.transform import RigidTransform as Tf >>> import numpy as np
Creating from a single unit dual quaternion:
>>> tf = Tf.from_dual_quat([ ... 0.0617101, -0.06483886, 0.31432811, 0.94508498, ... 0.04985168, -0.26119618, 0.1691491, -0.07743254]) >>> tf.as_matrix() array([[0.79398752, -0.60213598, -0.08376202, 0.24605262], [0.58613113, 0.79477941, -0.15740392, -0.4932833], [0.16135089, 0.07588122, 0.98397557, 0.34262676], [0., 0., 0., 1.]]) >>> tf.single True