Обработка - 3D-матрица вращения, по-разному вращающая некоторые точки - PullRequest
0 голосов
/ 08 мая 2020

Я работал над программой для рендеринга 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;
}

Вот ссылка на видео о том, что происходит, когда я пытаюсь повернуть куб .

...