2010-08-21 3 views
1

Ok, так вот, что у меня есть:OpenGL вектор вращения от матрицы

  • абстрактный «Объект» класс, который я сделал в рамках, чтобы использовать его в качестве базового класса для всех 3D-объектов.

  • a Матрица4 данного класса, предназначен для хранения информации о ротации объекта.

  • некоторые функции, которые умножают матрицу: для каждого из рысканий, шаг & вращения валов (как глобальные, так и локальные), я сделал метод, который умножает приведенную выше матрицу вращения на новую матрицу.

например: если вы локально рыскания объект на 45 градусов в направлении против часовой стрелки, затем

rotMatrix = newRotationZMatrix(45) * rotMatrix; 

То, что я хотел бы знать, что это лучший способ получить глобальное вращение объекта как вектор, вообще говоря, как вы получаете углы поворота вокруг X, Y и Z из матрицы преобразования, содержащей JUST вращения.

ответ

2

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

+0

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

+0

В случае, если это помогает в поиске, эту технику обычно называют «матричным разложением», – dbr

0

У меня есть аналогичный класс. Это одна из самых забавных для меня работы с матрицей 3D.

Хорошо, давайте ответим. Я работаю с OpenGL ES, поэтому для меня важна роль производительности. Я делаю рутину, тестирую ее, тестирую, стресс-тесты, перестраиваю всю процедуру и проверяю, тестирую ... пока не найду лучший способ сэкономить память и повысить производительность.

Таким образом, мышление в максимальной производительности, и если вы, как я, есть класс для работы с матрицами, я говорю вам, что лучший способ получить это:

• значения вращение в магазин в переменных прежде чем положить его в матрицу.

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

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