mtimes, *

Кватернионное умножение

Синтаксис

Описание

пример

quatC = A*B реализует кватернионное умножение, если либо A или B является кватернионом. Либо A или B должно быть скаляром.

Можно использовать кватернионное умножение, чтобы составить операторы вращения:

  • Чтобы составить последовательность поворотов системы координат, умножьте кватернионы в порядке нужной последовательности вращений. Для примера, применить p кватернион с последующим q кватернионом, умножить в порядок <reservedrangesplaceholder0>. Оператор вращения становится(pq)v(pq), где v представляет объект для поворота, заданный в кватернионной форме. * представляет собой сопряжение.

  • Чтобы составить последовательность поворотов точек, умножьте кватернионы в обратном порядке требуемой последовательности поворотов. Для примера, применить p кватернион с последующим q кватернионом, умножить в обратном порядке, qp. Оператор вращения становится (qp)v(qp).

Примеры

свернуть все

Создайте вектор-столбец 4 на 1, Aи скаляром, b. Умножайте A время b.

A = quaternion(randn(4,4))
A=4×1 quaternion array
      0.53767 +  0.31877i +   3.5784j +   0.7254k
       1.8339 -   1.3077i +   2.7694j - 0.063055k
      -2.2588 -  0.43359i -   1.3499j +  0.71474k
      0.86217 +  0.34262i +   3.0349j -  0.20497k

b = quaternion(randn(1,4))
b = quaternion
    -0.12414 +  1.4897i +   1.409j +  1.4172k

C = A*b
C=4×1 quaternion array
      -6.6117 +   4.8105i +  0.94224j -   4.2097k
      -2.0925 +   6.9079i +   3.9995j -   3.3614k
       1.8155 -   6.2313i -    1.336j -     1.89k
      -4.6033 +   5.8317i + 0.047161j -    2.791k

Входные параметры

свернуть все

Вход для умножения, заданный как кватернион, массив кватернионов, действительный скаляр или массив действительных скаляров.

Если B является нескалярным, тогда A должно быть скалярным.

Типы данных: quaternion | single | double

Вход для умножения, заданный как кватернион, массив кватернионов, действительный скаляр или массив действительных скаляров.

Если A является нескалярным, тогда B должно быть скалярным.

Типы данных: quaternion | single | double

Выходные аргументы

свернуть все

Кватернионовый продукт, возвращаемое как кватернион или массив кватернионов.

Типы данных: quaternion

Алгоритмы

свернуть все

Умножение кватерниона на реальный скаляр

Учитывая кватернион

q=aq+bqя+cqj+dqk,

продукт q и действительной скалярной β является

βq=βaq+βbqя+βcqj+βdqk

Умножение кватерниона на кватернион Скаляр

Определение базисных элементов для кватернионов,

я2=j2=k2=ijk=-1,

можно расширить, чтобы заполнить таблицу, результирующую умножение базисного элемента кватерниона:

 1яjk
11яjk
яя−1k− j
jj− k−1я
kkj− i−1

При чтении таблицы строки считываются первыми, например: ij = k и ji = − k.

Учитывая два кватерниона, q=aq+bqя+cqj+dqk, и p=ap+bpя+cpj+dpk, умножение может быть расширено как:

z=pq=(ap+bpя+cpj+dpk)(aq+bqя+cqj+dqk)=apaq+apbqя+apcqj+apdqk+bpaqя+bpbqя2+bpcqij+bpdqik+cpaqj+cpbqji+cpcqj2+cpdqjk+dpaqk+dpbqki+dpcqkj+dpdqk2

Можно упростить уравнение с помощью таблицы умножения кватерниона:

z=pq=apaq+apbqя+apcqj+apdqk+bpaqяbpbq+bpcqkbpdqj+cpaqjcpbqkcpcq+cpdqя+dpaqk+dpbqjdpcqяdpdq

Ссылки

[1] Kuipers, Jack B. Quaternions and Rotation Sequences: A Primer with Applications to Orbits, Aerospace and Virtual Reality. Princeton, NJ: Princeton University Press, 2007.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2020a