scipy.spatial.transform.RigidTransform.

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