iPhone OpenGL: выяснение поворота объекта - PullRequest
0 голосов
/ 24 января 2011

Мне нужно найти вращение объекта.Итак, я вращаю куб на 2 оси, и когда пользователь щелкает, мне нужно повернуть куб на грань, на которой он щелкнул.Я посмотрел на матрицу ModelView и преобразовал точки из радиана в градусы, но диапазон изменяется от 0 до 180 (90 происходит дважды)

1 Ответ

2 голосов
/ 24 января 2011

Если вам известна матрица вида модели, вы можете найти кватернион, однозначно представляющий ваше вращение.

Вот ссылка с формулой для вычисления кватерниона из матрицы вращения http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm

РЕДАКТИРОВАТЬ:

Если у вас есть 2 матрицы вида модели для вашего объекта и вы хотите плавное перемещение из одной позиции в другую, вы все равно можете использовать кватернионы!

Пусть у вас есть 2матрицы w1 w2.Для каждой сборки кватернионов q1 и q2 с использованием существующих формул - это просто.Создайте анимацию так:

на каждом шаге анимации создайте текущий кватернион для поворота объекта:

allTransform = q2 - q1
currentTransform = q1 + t*allTransform

, где t от [0, 1], allTransform - это кватернион Когда вы знаетеcurrentTransform кватернион строит из нее матрицу представления модели - просто используя готовую формулу.

Это даст приятную и плавную анимацию.

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