Как бы я создал матрицу вращения, которая вращает X на a, Y на b и Z на c?
Мне нужны формулы, если вы не используете функции / методы API ardor3d.
Матрица настроена так
xx, xy, xz, yx, yy, yz, zx, zy, zz
С кватернионом тоже все в порядке.
См. Википедия . Это дает отдельные матрицы для каждой оси вращения. Но X*(Y*(Z*v))), конечно, равно (X*Y*Z)*v, поэтому вы можете получить одну матрицу вращения R как R=X*Y*Z.
X*(Y*(Z*v)))
(X*Y*Z)*v
R=X*Y*Z
Это у вас работает?
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