Проблема в строке "this = rz ry * rx;". Вам нужно перегрузить оператор умножения для класса Matrix4f, чтобы он правильно перемножал матрицы. Ниже приведен пример перегрузки оператора умножения для класса Matrix4f:
Matrix4f operator*(const Matrix4f &lhs, const Matrix4f &rhs) { Matrix4f result; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { result.m[i][j] = 0; for (int k = 0; k < 4; k++) { result.m[i][j] += lhs.m[i][k] * rhs.m[k][j]; } } } return result; }
Вызывайте эту функцию умножения матриц в вашем коде следующим образом:
*this = rz * ry * rx;
Используйте выражение ToRadian() для перевода градусов в радианы, как вы это уже сделали в своем коде.
Проблема в строке "this = rz ry * rx;". Вам нужно перегрузить оператор умножения для класса Matrix4f, чтобы он правильно перемножал матрицы. Ниже приведен пример перегрузки оператора умножения для класса Matrix4f:
Matrix4f operator*(const Matrix4f &lhs, const Matrix4f &rhs) {Matrix4f result;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
result.m[i][j] = 0;
for (int k = 0; k < 4; k++) {
result.m[i][j] += lhs.m[i][k] * rhs.m[k][j];
}
}
}
return result;
}
Вызывайте эту функцию умножения матриц в вашем коде следующим образом:
*this = rz * ry * rx;Используйте выражение ToRadian() для перевода градусов в радианы, как вы это уже сделали в своем коде.