Я использую матрицы поворота. Я как то слишком абстрактно вопрос задал, давайте я Вам лучше конкретнее опишу ситуацию
Предыстория:
Я пишу 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);
Добавлено (17.02.2014, 13:25)
---------------------------------------------
Для матрицы поворота я нашел вот такую вот формулу из википедии
,
и,беру только x и y, потому как они мне и нужны.
И меня мучает вопрос не будет ли умножение этих матриц опять поворотом на эйлеровы координаты а не то что мне нужно ?