Как рассчитать наклон рыскания и крена по векторам ориентации? - PullRequest
4 голосов
/ 07 июля 2011

Я работаю с трехмерной графикой и столкнулся с проблемой. У меня есть модели, которые движутся в мире. Модели имеют базовый класс, который содержит их ориентацию в виде трех векторов ортогональных единиц, а именно: Направление , Вверх и Вправо . Они указывают, куда направлен фронт модели, соответственно вверх и в правильном направлении.

ИИ модели преследует цель путем изменения вектора Направление модели и всех других векторов ориентации соответственно, чтобы имитировать, что модель указывает на цель.

Я не могу отслеживать углы, на которые ИИ изменяет векторы ориентации, потому что файлы ИИ уже были предварительно скомпилированы, и я не могу их изменить. Кроме того, ИИ изменяет векторы, используя координаты положения модели и координаты положения цели.

У меня вопрос, как я могу получить рыскание , шаг и крен из векторов ориентации, чтобы создать матрицу вращения для поворота всей модели желаемая ориентация?

Спасибо за любую помощь.

[EDIT] Благодаря данному ответу я нашел это:

               X   Y   Z   W
             -                -
       Right | Rx  Ry  Rz  Rw |
          Up | Ux  Uy  Uz  Uw |
    -Forward |-Fx -Fy -Fz -Fw |
 Translation | Tx  Ty  Tz  Tw |
             -                -

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

[решаемые]

1 Ответ

4 голосов
/ 07 июля 2011

Вам не нужны рыскание, тангаж и крен. Три ортогональных единичных вектора Direction, Up и Right дают вам строки матрицы вращения. Это так просто.

См. 41:58 в Sensor Fusion на устройствах Android: революция в обработке движения .

Кстати, вы легко можете столкнуться с проблемами рыскания, тангажа и крена, см. 38: 25.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...