Я работал над программой для рендеринга 3D-форм в обработке 3.5.4, и я вращаю их с помощью матриц вращения, но некоторые точки, кажется, вращаются по-другому (я не уверен на 100%, как именно
Моя матрица поворота по X:
final float[][] xRotMat = new float[][]{
{1, 0, 0},
{0, cos(r), -sin(r)},
{0, sin(r), cos(r)}};
затем я превращаю точки (3D PVectors) в матрицы 3x1 и умножаю их с помощью этого кода :
float[][] multMatrix(float[][] a, float[][] b){
int colsA = a[0].length;
int rowsA = a.length;
int colsB = b[0].length;
int rowsB = b.length;
if (colsA != rowsB) {
println("Columns of A must match rows of B");
return null;
}
float result[][] = new float[rowsA][colsB];
for (int i = 0; i < rowsA; i++) {
for (int j = 0; j < colsB; j++) {
float sum = 0;
for (int k = 0; k < colsA; k++) {
sum += a[i][k] * b[k][j];
}
result[i][j] = sum;
}
}
return result;
}
Вот ссылка на видео о том, что происходит, когда я пытаюсь повернуть куб .