2016-08-30 7 views
1

У меня есть кватернион, исходя из системы со следующим:Переключить оси и ручность кватерниона?

Right handed. 
Forward direction: Y axis 
Right direction: X axis 
Up direction: Z axis 

Мне нужно преобразовать это в систему координат, которая:

left-handed. 
Forward direction: X axis 
Right direction: Y axis 
Up direction: Z axis 

Я попытался отрицая ось и угол , Я попытался переключить значения, я не могу заставить это работать. Вся помощь очень ценится! Я работаю в C#, с

Microsoft.Xna.Quaternion. 

ответ

2

кватернион представляет собой структуру из четырех значений (w, x, y, z). Если он представляет собой поворот, то w = cos(phi/2) (phi - угол поворота) и (x, y, z) = sin(phi/2) * (ax, ay, az) ((ax, ay, az) - ось вращения).

Чтобы преобразовать кватернион в другую систему, достаточно преобразовать ось вращения. Для примера, преобразование является:

/0 1 0 \ 
T = | 1 0 0 | 
    \ 0 0 1/

Наконец, так как вы меняете беспристрастность, вы должны инвертировать кватернион или он будет вращаться в неправильном направлении. Подводя итог, преобразованный кватернион:

(w*, x*, y*, z*) = (w, -y, -x, -z) 

В целом:

(x*, y*, z*) = det(T) T (x, y, z) //Assuming column vectors 

 Смежные вопросы

  • Нет связанных вопросов^_^