Как можно заставить все объекты, которые не выровнены относительно исходного центра (вектор 3 (0,0f, 0,0f, 0,0f)), вращаться вокруг своей центральной оси?
проблема в псевдокоде:
vector3 vector3 objectCenter = (10,5,0); // current object center
vector3 vector3 objectPosition = (40,5,0); // Place to translate the object
vector3 objectRotation; = 45.0f;
matrix.loadIdentity ();
matrix.translate (objectCenter);
//apply transformations
matrix.rotateX (objectRotation);
matrix.translate (-objectCenter);
//itś work correctly until here
//when i try to translate the object to the real position, the rotation is incorrect.
matrix.translate (objectPosition);
Я использую C ++, glm (для управления матрицами) и OpenGL.
если вы хотите повернуть объект локально в его собственную систему координат, сделайте это:
M=inverse(inverse(M)*rotation_matrix);
[edit1] подробнее о связи между M и объектом, систему координат которого он представляет