【问题标题】:glm rotation in ortho space正交空间中的glm旋转
【发布时间】:2021-11-24 04:08:04
【问题描述】:

我这样设置我的正射投影:

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
};

如何让我的对象围绕其中心旋转?

【问题讨论】:

  • 我删除了glm 标签。 glm(广义线性模型)!= glm-math(GLM - OpenGL 数学)
  • @Rabbid76 感谢您的帮助,答案很有魅力,也感谢您提供此信息!

标签: c++ opengl glm-math


【解决方案1】:

如果你想围绕它的中心旋转,你必须:

  • 平移对象,使对象的中心移动到 (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));

另见How to use Pivot Point in Transformations

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多