Проблема с матрицей вращения, кроме вращения мой объект тоже переводится - PullRequest
1 голос
/ 18 августа 2011

Проблема с матрицей вращения, кроме вращения мой объект тоже переводится.

Matrix m = new Matrix();   
m.SetRotate(new Vector(0, 0, 1), Math.PI / 4);  
m.PrintMatrix();    
for (int i = 0; i < 6; i++)    
{  
_spaceship.VertexPositions[i] *= m;  
}
  1. Я создаю матрицу тождеств.

  2. SetRotate делаетэто матрица вращения, для вращения pi / 4 вокруг оси z.

  3. Я напечатал больше матриц, чтобы проверить, работает ли SetRotate, это действительно так, поэтому SetRotate хорошо выполняет свою работу, что-то ещедолжно быть причиной проблемы.

  4. _spaceship - спрайт с 6 вершинами (два треугольника), и каждый из них я умножаю на матрицу вращения.VertexPositions хранит векторы для каждой позиции вершины.

Итак, матрица вращения в порядке, я хорошо проверил умножение векторной матрицы, я не понимаю, откуда может произойти этот дополнительный перевод.Мой объект поворачивается на pi / 4, но он переводится в X: -14.1421356237309, Y: -16.6170093578839, Z: 0, и предполагается, что все нули X: 0, Y: 0, Z: 0, как и довращение.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2018

Вам, вероятно, нужно нормализовать ваш vec3, прежде чем делать вращение.

0 голосов
/ 21 августа 2011

Положения вершин вашего космического корабля уже смещены?Если вы хотите повернуть модель вокруг ее центра, убедитесь, что вершины модели относительно центра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...