Проблема с матрицей вращения, кроме вращения мой объект тоже переводится.
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;
}
Я создаю матрицу тождеств.
SetRotate делаетэто матрица вращения, для вращения pi / 4 вокруг оси z.
Я напечатал больше матриц, чтобы проверить, работает ли SetRotate, это действительно так, поэтому SetRotate хорошо выполняет свою работу, что-то ещедолжно быть причиной проблемы.
_spaceship - спрайт с 6 вершинами (два треугольника), и каждый из них я умножаю на матрицу вращения.VertexPositions хранит векторы для каждой позиции вершины.
Итак, матрица вращения в порядке, я хорошо проверил умножение векторной матрицы, я не понимаю, откуда может произойти этот дополнительный перевод.Мой объект поворачивается на pi / 4, но он переводится в X: -14.1421356237309, Y: -16.6170093578839, Z: 0, и предполагается, что все нули X: 0, Y: 0, Z: 0, как и довращение.