Есть ли эквивалент для D3DXMatrixRotationYawPitchRoll () для разработчиков на iphone? - PullRequest
0 голосов
/ 06 июля 2010

Функция D3DXMatrixRotationYawPitchRoll() создает матрицу с указанными отклонением, шагом и креном.Есть ли эквивалентная функция для разработчиков iphone ??

Я нашел красивый маленький пример проекта для рисования извилистой дороги или американских горок здесь.

Это не много кодаи комментарии кажутся в основном понятными, но код опирается на несколько функций DirectX, которые я еще недостаточно умен, чтобы воссоздать в C для использования в моем проекте iphone.

Может кто-то указать мне на правдунаправление здесь?Мне нужно создать матрицу вращения из значений yaw, pitch, roll.

Эта сигнатура функции DirectX такова:

     D3DXMATRIX * D3DXMatrixRotationYawPitchRoll(
  __inout  D3DXMATRIX *pOut,
  __in     FLOAT Yaw,
  __in     FLOAT Pitch,
  __in     FLOAT Roll
);

Есть ли для нее эквивалентный glu * ()?


(... часов чтения позже)


Что ж, после долгого чтения (с большим количеством информации), вот что я собрал:

Этот сайт очень помог!

Похоже, мне нужно будет преобразовать 3 угла Эйлера (это то, что называется тангаж, крен, рыскание) в три независимыхединичные кватернионы:

Qx = [ cos(a/2), (sin(a/2), 0, 0)]
Qy = [ cos(b/2), (0, sin(b/2), 0)]
Qz = [ cos(c/2), (0, 0, sin(c/2))]

И затем объединить их в один кватернион с помощью:

Qcombined = Qx * Qy * Qz

Затем я могу преобразовать этот результирующий кватернион "единицы"вернемся к той матрице вращения, которая понравится openGL, выполнив это:

Matrix =  [ 1 - 2y2 - 2z2    2xy - 2wz      2xz + 2wy
              2xy + 2wz    1 - 2x2 - 2z2    2yz - 2wx
              2xz - 2wy      2yz + 2wx    1 - 2x2 - 2y2 ]

1 Ответ

0 голосов
/ 06 июля 2010

смотрите здесь: http://en.wikipedia.org/wiki/Rotation_matrix#Three_dimensions

Вы должны создать матрицу, составленную из Rz (-roll) * Rx (-pitch) * Ry (yaw), затем использовать результат вызовом glMultMatrix (еслиу вас есть матрицы мэров столбцов) или достаточно glMultTransposeMatrix (если у вас есть матрицы мэров строк), чтобы установить представление.http://www.opengl.org/sdk/docs/man/xhtml/glMultTransposeMatrix.xml http://www.opengl.org/sdk/docs/man/xhtml/glMultMatrix.xml

...