Для моего OpenGL приложения, у меня есть куб, определяемые следующие координаты:Используя матрицу для поворота кубы дает неправильный результат
coords=new float [] {-0.5f,0.5f,0.5f,1f,
-0.5f,-0.5f,0.5f,1f,
0.5f,-0.5f,0.5f,1f,
0.5f,0.5f,0.5f,1f,
-0.5f,0.5f,-0.5f,1f,
-0.5f,-0.5f,-0.5f,1f,
0.5f,-0.5f,-0.5f,1f,
0.5f,0.5f,-0.5f,1f};
, которая представляет следующую матрицу:
-0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5 0.5
0.5 -0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5
0.5 0.5 0.5 0.5 -0.5 -0.5 -0.5 -0.5
1 1 1 1 1 1 1 1
Я определяю вращение матрицы с:
float [] matrix=new float[16];
Matrix.setRotateM(matrix,0,90,1,0,0);
Так что моя матрица:
1 0 0 0
0 0 -1 0
0 1 0 0
0 0 0 1
Когда я пытаюсь применить поворот к координатам с Matrix.multiplyMM(coords,0,matrix,0,coords,0);
, я получаю следующий результат:
-0,5 -0,5 0,5 0,5 -0,5 -0,5 0,5 0,5
-0,5 -0,5 -0,5 -0,5 0,5 -0,5 -0,5 0,5
0,5 -0,5 -0,5 0,5 -0,5 -0,5 -0,5 -0,5
1 1 1 1 1 1 1 1
Для меня, и в соответствии с моим калькулятором, а, 6-й и 7-й элементы вторая строка неверна (они должны быть положительными). То же самое для 5-го и 8-го элементов третьей строки.
Может ли кто-нибудь сказать мне, где проблема?
Я могу ошибаться, но как же представляет собой матрицу, используя 1D массив? – CKing
@CKing - это обычные способы обработки матриц. – QBrute
@QBrute Я не следую. OP создает 1D-массив, но представляет данные как 2D-массив? – CKing