exponenta event banner

mtimes, *

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

Синтаксис

Описание

пример

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

Для создания операторов вращения можно использовать умножение кватерниона:

  • Чтобы составить последовательность вращений кадра, умножьте кватернионы в порядке желаемой последовательности вращений. Например, чтобы применить p кватернион, а затем q кватернион, умножьте в порядке pq. Оператор вращения становится (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 + bqi + cqj + dqk,

произведение q и вещественного скаляра β равно

βq = βaq + βbqi + βcqj + βdqk

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

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

i2 = j2 = k2 = ijk = -1,

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

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

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

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

z = pq = (ap + bpi + cpj + dpk) (aq + bqi + cqj + dqk) = apaq + apbqi + apcqj + apdqk + bpbqi2 + bpcqij + bpdqik + cpaqj + cpbqji + cpcqj2 + cpdqjk + dqk

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

z = pq = apaq + apbqi + apcqj + apdqk + bpaqi bpbq + bpcqk bpdqj + cpaqj cpbqk cpcq + cpdqi + dpaqk + dpbqj − dpcqi − dpdq

Ссылки

[1] Койперс, Джек Б. Кватернионы и последовательности вращения: праймер с приложениями для орбит, аэрокосмической и виртуальной реальности. Принстон, Нью-Джерси: Princeton University Press, 2007.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

Функции

Объекты

Представлен в R2018a