gpt4 book ai didi

c++ - OpenGl:glRotatef 机制以及如何在不移动的情况下围绕自身旋转正方形

转载 作者:太空宇宙 更新时间:2023-11-04 13:34:45 25 4
gpt4 key购买 nike

我无法理解 glrotatef 的机制或它是如何工作的,经过一些研究我发现它包含 4 个变量,它们是我用来旋转的角度,1 或 0 代表 x 轴,1或 0 代表 y 轴,1 或 0 代表 z 轴。

回答以下问题将帮助我理解 glrotatef

问题是

  1. 如果我们谈论的是我们想要旋转的正方形,我们发送给函数 glrotatef 的角度,它会作用于正方形的顶点,还是作用于旋转它们的直线?
  2. 编写一次函数 glRotatef 与旋转正方形时编写四次有什么区别,是否每个 glRotatef 函数都在正方形的一侧起作用?
  3. 我如何使用 glrotatef 和 gltranslatef 来围绕自身旋转一个正方形而不离开它的位置。
  4. 任何人都可以用最简单的方式解释 glrotatef 是如何工作的,并给出一些与代码的任何部分无关的例子,因为我是一个新手,我不理解关于 glrotatef 的大多数关于 stackoverflow 问题的代码。

最佳答案

在阅读问题的答案之前,我建议您阅读如何使用 model matrix 完成平移/旋转/缩放。

当您需要变换对象时,只需对对象具有的每个顶点执行操作即可。

P = [x,y,z,1] -- 你在 3D 中的点
M = [..] -- 你的 4x4 rotation matrix

M * P -- 你的旋转操作

根据我提供的引用资料,这里是非常简单的答案:

  1. 当您进行旋转时,您的每个顶点坐标位置将被重新计算,Opengl 将从新的 4 个顶点再次生成您的正方形。
  2. 旋转 1 次 60 度和旋转 2 次 30 度没有区别,您可以简单地通过数学来控制它(查看旋转矩阵链接):

M1 = 你的 60 度旋转矩阵

M2 = 你的 30 度旋转矩阵

M1 = M2 * M2 => M1 * P = M2 * M2 * P

  1. 这是我的答案:Rotating around a point different from origin
  2. Rotatef() 函数只是根据您提供的参数创建一个 4x4 旋转矩阵,并通过与生成的旋转相乘来更新您的 ModelView 矩阵。

关于c++ - OpenGl:glRotatef 机制以及如何在不移动的情况下围绕自身旋转正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29996197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com