У меня есть класс камеры, который держит ее ориентацию через углы Эйлера и положение. Что-то вроде того:
float m_x;
float m_y;
float m_z;
Vector4 m_pos;
И я хочу переместить эту камеру бесплатно в пространство.
Когда пользователь перемещает мышь вверх-вниз, камера должна вращаться вокруг оси x в своей собственной системе координат. Но я хочу держать только эти три угла и положение и ничего более.
Итак, алгоритм выглядит так:
Вопрос: как я могу вычислить углы поворота в системе координат по умолчанию (я имею в виду в (1, 0, 0), (0, 1, 0) и (0, 0, 1)), которые отвечают углам поворота в локальной координате камеры система?
Или может быть лучшее решение существует для этой проблемы?
Я отвечаю на краткий вопрос от ваш комментарий:
Как рассчитать вращение в одной системе координат, которая отвечает на вращение в другой системе координат?
Вы можете преобразовывать вращения между системами координат, применяя подходящую матрицу преобразования. Это, в свою очередь, может быть вычислено из углов Эйлера, см. Википедия раздел по формулам преобразования.
В зависимости от вашего приложения, вы можете или не должны принимать во внимание переводы, а также. Как я понимаю ваш вопрос, вы можете сосредоточиться на части вращения каждой трансформации.
Других решений пока нет …