Я пытаюсь повернуть некоторые 3d-объекты вокруг оси x (мне не нужно поворачивать их по центру, поэтому нет необходимости переводить сначала в 0,0,0, а затем обратно в исходное положение). Я только что написал быстрый скрипт php, чтобы проверить его на файле obj. Я проверил страницу Википедии для поворота матрицы и был уверен, что мой код будет работать …
CreateXrotationMatrix принимает угол и создает необходимую матрицу вращения из
[1 0 0 ]
Rx(α)=[0 cosα -sinα]
[0 sinα cosα ]
function CreateXrotationMatrix($alpha)
{
$matrix = Array();
$matrix[0] = 1;
$matrix[1] = 0;
$matrix[2] = 0;
$matrix[3] = 0;
$matrix[4] = cos($alpha);
$matrix[5] = -sin($alpha);
$matrix[6] = 0;
$matrix[7] = sin($alpha);
$matrix[8] = cos($alpha);
return $matrix;
}
Затем MultiplyMatrices умножает матрицу 3×3 на заданную точку
function MultiplyMatrices($rotationMatrix, $point)
{
$returnMatrix = Array();
$returnMatrix[0] = $rotationMatrix[0]*$point[0] + $rotationMatrix[1]*$point[1] + $rotationMatrix[2]*$point[2];
$returnMatrix[1] = $rotationMatrix[3]*$point[0] + $rotationMatrix[4]*$point[1] + $rotationMatrix[4]*$point[2];
$returnMatrix[2] = $rotationMatrix[6]*$point[0] + $rotationMatrix[7]*$point[1] + $rotationMatrix[8]*$point[2];
return $returnMatrix;
}
Я запустил этот код в файле obj, который пытался повернуть на 270 градусов, и записал его в другой файл.
Когда я получил две модели рядом в блендере, они были только на 10 градусов друг от друга.
Есть идеи, что здесь не так?
Задача ещё не решена.
Других решений пока нет …