繁体   English   中英

OpenGL:glRotatef机制以及如何围绕正方形旋转而不移动

[英]OpenGl: glRotatef mechanism & how to rotate square around itself without moving

我在了解glrotatef的机理或其工作原理时遇到问题,经过一些研究,我发现它包含4个变量,分别是我旋转的角度,x轴为1或0,x轴为1或0。 y轴,z轴为1或0。

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

问题是

  1. 如果我们正在讨论要旋转的正方形,那么我们发送给函数glrotatef的角度将在正方形的顶点或在旋转它们的线上起作用吗?
  2. 一次编写函数glRotatef和在旋转一个正方形时使用它写入四次有什么区别,每一个glRotatef函数都可以在正方形的一侧工作吗?
  3. 如何使用glrotatef和gltranslatef围绕自身旋转正方形而不移动它的位置。
  4. 谁能以最简单的方式解释glrotatef的工作原理,并给出一些示例而不涉及代码的任何部分,因为我是新手,而且我不了解有关glrotatef的stackoverflow问题上编写的大多数代码。

在阅读问题的答案之前,我建议您阅读如何使用模型矩阵进行平移/旋转/缩放

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

P = [x,y,z,1]-您在3D中的点
M = [..]-您的4x4 旋转矩阵

M * P-您的旋转操作

根据我提供的参考,这是非常简单的答案:

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

M1 =您的60度旋转矩阵

M2 =您的30度旋转矩阵

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

  1. 这是我的答案: 绕与原点不同的点旋转
  2. Rotatef()函数仅根据您提供的参数创建一个4x4旋转矩阵,并通过乘以生成的旋转来更新ModelView矩阵。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM