@yatanai
Поклонник православного С

Как изменить оси вращения в кватернионе?

У меня есть инерциальный датчик который выдаёт кватерионы и вектор ускорения.
Контроллер ориентирован как
Z - по гравитации, X - "справа" по направлению взгляда, У - по направлению взгляда.
И суть в том что когда я кручу по оси Х, тоесть пытаюсь смотреть вверх-вниз, то всё ок. Но другие оси поменяны местами. Тоесть, если я кручу контроллер по Z, то в игровом пространстве оно крутится по Y и наоборот.

Моя цель - поменять оси вращения местами в кватернионе. Как?
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
@yatanai Автор вопроса
Поклонник православного С
Неожиданно, когда я решил побаловаться перестановками переменных в своём коде, всё решилось.
В моём случае достаточно было поменять компоненты W и X местами, и после инвертировать X. (У меня оно вращалось в обратную сторону)
Тоесть в итоге я сделал (w, x, y, z) ->(x, -w, y, z)
Так же я гуглил чужой код и нашёл другую перестановку (w, x, y, z) ->(-y, x, z, w), но в моём случае она не дала нужных осей.
Некоторые перестановки полностью ломают движок и пространство начинает схлопываться, так что осторожнее
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы