Преобразовать единичный вектор в кватернион - PullRequest
6 голосов
/ 09 января 2011

Итак, я очень плохо знаком с кватернионами, но я понимаю основы того, как с ними манипулировать.В настоящее время я пытаюсь сравнить известный кватернион с двумя абсолютными точками в пространстве.Я надеюсь, что смогу просто преобразовать точки во второй кватернион, что даст мне простой способ сравнить их.

До сих пор я превращал две точки в единицу.вектор.Оттуда я надеялся, что смогу напрямую подключить ijk к воображаемой части кватерниона со скалярным нулем.Оттуда я мог умножить один кватернион на сопряженный другой, в результате чего был получен третий кватернион.Этот третий кватернион может быть преобразован в осевой угол, давая мне степень, на которую исходные два кватерниона отличаются.

Является ли этот мыслительный процесс правильным?Так что должно быть просто [0 ijk].Возможно, мне придется нормализовать кватернион впоследствии, но я в этом не уверен.

У меня плохое предчувствие, что это не прямое отображение вектора на кватернион.Я пытался посмотреть, как преобразовать единичный вектор в угол оси, но я не уверен, что это сработает, поскольку я не знаю, какой угол указать в качестве входного значения.

1 Ответ

1 голос
/ 01 мая 2014

нотация

Кватернионы определены в четырехпространстве с основаниями {1, i, j, k}. Гамильтон, как известно, вырезал фундаментальные отношения в камне моста Брогама в Дублине:

i 2 = j 2 = k 2 = i j k = -1.

Существует много эквивалентных кватернионных параметризаций, но здесь я буду использовать форму {скаляр, вектор }.

1.) A = {a0, a } и B = {b0, b }, где A и B - кватернионы, a0 и b0 - скаляры, а a и b - три вектора.

2.) X = {0, x } - векторный кватернион .

3.) (Некоммутативное) кватернионное произведение напрямую вытекает из свойств i, j и k, приведенных выше, A 'B = {a0 b0 - a . b , a0 b + b0 a + a x b }

4.) Кватернионный конъюгат представляет собой A * = {a0, - a }

5.) конъюгат кватернионного произведения является произведением конъюгатов в обратном порядке.
(A & otimes; B) * = B * & times; A *

6.) сопряжение векторного кватерниона является его отрицательным. X * = {0, - x } = -X

7.) Кватернионная норма - это | A | = & radic; (A & o; A *) = & radic; (a0 & sup2; + a . a )

8.) единица кватерниона - это та, которая имеет норму 1.

9.) Единица трехвекторная x = {x 1 , x 2 , x 3 } с х . x = 1 выражается как единичный векторный кватернион X = {0, x }, | X | = 1.

10.) Сферическое вращение вектора кватернионов X на угол & theta; о единичной векторной оси n составляет Q & times; X & times; Q *, где Q - кватернион {cos (& theta; / 2), sin (& theta; / 2) n }. Обратите внимание, что | Q | = 1.

Обратите внимание на форму векторного продукта кватерниона. Заданные векторные кватернионы X 1 = {0, x 1 ) и X 2 = {0, x 2 }, кватернионное произведение X 2 * X 1 * = { x 1 . x 2 , x 1 & times; x 2 }. Кватернион воссоединяет точечное произведение как скалярную часть и перекрестное произведение как векторную часть, разведенную более ста лет назад. Ни один из этих продуктов не является обратимым, но кватернион описан ниже.

Инверсия

Найдите кватернион сферического преобразования Q 12 , чтобы повернуть вектор X 1 для выравнивания с вектором X 2 .

Сверху

X 2 = Q 12 - * X 1 - Q 12 *

Умножение обеих сторон на X 1 *,

X 2 & x;; X 1 * = Q 12 & x; X 1 & times; ( Q 12 * +1201 ** +1202 ** & otimes; Х 1 *)

Помните, что ось вращения n является производной от перекрестного произведения x 1 & times; x 2 так что n . x 1 = 0 и Q * * X * = (X Q) * = X * Q, оставляя

X 2 & otimes; X 1 * = Q 12 & otimes; X 1 & otimes; X 1 * - Q 12 = Q 12 - Q 12

Таким образом, кватернионное преобразование может быть решено непосредственно как

Q 12 = & radic; (X 2 & times; X 1 *)

Вы один на квадратный корень кватерниона.Есть много способов сделать это, и лучший будет зависеть от вашего приложения, учитывая скорость и стабильность.

- hth,
Fred Klingener

...