Координата Эйлера для вектора направления

0

Я пытаюсь сделать программу для первого лица в OpenGL.

Я использовал библиотеку GLM для вычислений, которая имеет только функцию lookAt() для Матрицы просмотра. Однако параметры функции определяют местоположение камеры и координаты x, y, z того, на что она смотрит.

Я хочу изменить шаг, рыть, перевернуть в x, y, z. Однако, похоже, в Интернете нет никаких уравнений.

Roll игнорируется, но как использовать только шаг и рыскание, вы получите координаты x, y, z?

  • 0, 0 возвращает 0, 0, 1
  • 0, pi возвращает 0, 1, 0
  • pi, 0 возвращает 1, 0, 0 и т.д.

Может ли кто-нибудь помочь с расчетами для всех значений 0 - 2pi?

  • 0
    Вы должны прочитать об основных матрицах вращения вокруг соответствующих осей x, y & z. Чтобы повернуть точку или вектор вокруг начала координат в данном пространстве, просто умножьте точку / вектор на соответствующую матрицу вращения. en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations
Теги:
opengl
vector

1 ответ

1
Лучший ответ

Постройте матрицы вращения для рыскания, подачи и броска и умножьте их. Получаемый продукт представляет собой матрицу с векторами базовой оси с вращающейся координатой в качестве ее столбцов. Однако векторам не гарантировано быть ортогональными. На самом деле может случиться так, что два или все три из них станут коллинерами из-за эффекта, называемого кардановым замком. Gimbal lock также является причиной того, что вы не должны использовать вращения Euler вообще.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню