Будьте добры развеять мои сомнения:) у меня следующая ситуация:
Предыстория:
Я пишу 3D игру и там соответственно нужно производить поворот тела в пространстве. нужно делать 2 поворота: по горизонтали и по вертикали. Вот так должно быть
, а сейчас у меня происходит вот так
т.е. вращение происходит по углам Эйлера, а не так как я хочу.
Это происходит потому что я произвожу 2 поворота
Код
Matrix.rotateM(mMVPMatrix, 0, yAngle, 0, 1, 0);
Matrix.rotateM(mMVPMatrix, 0, xAngle, 1, 0, 0);
Это код на java и opengl,но это не суть на чем написано суть в том что я сначала поворачиваю на угол yAngle вокруг оси {0 1 0} а потом вокруг на угол xAngle вокруг оси { 1 0 0}
Решение:
Как выход надо найти ОДИН поворот( угол=NEW_ANGLE а ось {X, Y, Z} ) заменяющий эти два и произвести всего одну операцию
Код
Matrix.rotateM(mMVPMatrix, 0, NEW_ANGLE, X, Y, Z);
И меня мучает вопрос не будет ли умножение матриц этих поворотов опять поворотом на эйлеровы координаты а не то что мне нужно ? И как сделать правильно?