Как бы я создал матрицу вращения, которая вращает X на a, Y на b и Z на c? - PullRequest
1 голос
/ 06 декабря 2010

Как бы я создал матрицу вращения, которая вращает X на a, Y на b и Z на c?

Мне нужны формулы, если вы не используете функции / методы API ardor3d.

Матрица настроена так

xx, xy, xz,
yx, yy, yz,
zx, zy, zz

С кватернионом тоже все в порядке.

Ответы [ 2 ]

5 голосов
/ 06 декабря 2010

См. Википедия . Это дает отдельные матрицы для каждой оси вращения. Но X*(Y*(Z*v))), конечно, равно (X*Y*Z)*v, поэтому вы можете получить одну матрицу вращения R как R=X*Y*Z.

0 голосов
/ 06 декабря 2010

Это у вас работает?

glrotate(c, 0, 0, 1); // with respect to Z axis
glrotate(b, 0, 1, 0); // with respect to Y axis
glrotate(a, 1, 0, 0); // with respect to X axis
...