10

我在这里阅读了文档:http ://www.opengl.org/sdk/docs/man2/xhtml/glRotate.xml

它指定角度以度为单位。它说 X,Y,Z 是向量。如果我说 glRotate(2,1,0,0) 表示我将围绕 X 轴旋转 2 度。

如果我说 glRotate(2,0.5,0,0) 和 glRotate(2,0.0174524,0,0) 会发生什么

我不明白在那种情况下到底发生了什么,有人可以帮我解释一下吗?

它是否以角度的百分比旋转?

4

3 回答 3

8

它仍将围绕 X 轴旋转 2 度。您链接的该页面还显示以下内容:

x y z = 1 (if not, the GL will normalize this vector).

这意味着向量 (x,y,z) 是一个单位向量(长度为 1),如果不是,GL 将对向量进行归一化(将其除以其长度,使其长度为 1)。

结论:x,y和z参数定义了一个向量,其中方向是唯一相关的部分,长度将由函数处理。因此,您可以安全地放入任何矢量,它只会围绕该矢量旋转。

于 2013-10-03T23:52:41.390 回答
1

它没有说xy并且z是向量。如果您使用支持 MathML 的浏览器打开页面,您会看到类似

glRotate 产生围绕向量 (x,y,z) 的角度旋转。

x, y,z是单个向量的分量。同样,它没有说“ xyz = 1(如果不是,GL 将规范化这个向量) ”:相反,它说:

||(x,y,z)||=1(如果不是,GL 将规范化这个向量)。

所以,(x,y,z)是向量,函数将围绕它产生旋转。如果您提供的向量未归一化,则 GL 将对其进行归一化,因此glRotate(2,0.5,0,0)glRotate(2,0.0174524,0,0)是等价的。

于 2017-12-27T14:27:24.640 回答
0

glRotate意味着您可以将当前矩阵旋转给定向量 (x, y, z)angle度数。所以参数 x、y、z 只是 3D 空间中向量(线)的 3 个基本参数。正如你所看到的,一个向量有方向和长度,但是在这个函数中,长度是没有用的,所以无论你的向量长度是1还是100还是0.2,在这个函数中都没有意义。这只是一个方向标记。

于 2022-02-18T10:17:57.950 回答