如果我想绕z轴旋转物体,然后再平移它,我必须执行
glm::mat4 transform;
GLfloat angle = 90f;
transform = glm::rotate(transform, angle, glm::vec3(0.0f, 0.0f, 1.0f));
transform = glm::translate(transform, glm::vec3(0.5f, -0.5f, 0.0f));
但它是反向运作的,先旋转后平移,因此我需要将其写成
glm::mat4 transform;
GLfloat angle = 90f;
transform = glm::translate(transform, glm::vec3(0.5f, -0.5f, 0.0f));
transform = glm::rotate(transform, angle, glm::vec3(0.0f, 0.0f, 1.0f));
这背后的数学原理是什么?为什么我必须倒序组合矩阵才能达到预期效果?