glm 正交旋转 space
glm rotation in ortho space
我这样设置正射投影:
transform = glm::ortho(0.0f, width, height, 0.0f);
这很好用,但是当我想像这样使用 glm::rotate
函数时:
transform = glm::rotate(transform, glm::radians(45.0f), glm::vec3(0, 0, 1));
我的对象围绕 0 : 0 : 0 旋转。
我的顶点是这样的:
GLfloat vertices[] = {
600, 100, 0,
612, 100, 0,
612, 130, 0,
600, 130, 0
};
如何让我的对象围绕其中心旋转?
如果你想围绕它的中心旋转,你必须:
- 平移对象,使对象的中心移动到 (0, 0)。
- 旋转对象。
- 移动对象,使中心点在其原始位置移动。
GLfloat center_x = 606.0f;
GLfloat center_y = 115.0f;
transform = glm::translate(transform, glm::vec3(center_x, center_y, 0));
transform = glm::rotate(transform, glm::radians(45.0f), glm::vec3(0, 0, 1));
transform = glm::translate(transform, glm::vec3(-center_x, -center_y, 0));
另见
我这样设置正射投影:
transform = glm::ortho(0.0f, width, height, 0.0f);
这很好用,但是当我想像这样使用 glm::rotate
函数时:
transform = glm::rotate(transform, glm::radians(45.0f), glm::vec3(0, 0, 1));
我的对象围绕 0 : 0 : 0 旋转。
我的顶点是这样的:
GLfloat vertices[] = {
600, 100, 0,
612, 100, 0,
612, 130, 0,
600, 130, 0
};
如何让我的对象围绕其中心旋转?
如果你想围绕它的中心旋转,你必须:
- 平移对象,使对象的中心移动到 (0, 0)。
- 旋转对象。
- 移动对象,使中心点在其原始位置移动。
GLfloat center_x = 606.0f;
GLfloat center_y = 115.0f;
transform = glm::translate(transform, glm::vec3(center_x, center_y, 0));
transform = glm::rotate(transform, glm::radians(45.0f), glm::vec3(0, 0, 1));
transform = glm::translate(transform, glm::vec3(-center_x, -center_y, 0));
另见