我在这里阅读了文档: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) 会发生什么
我不明白在那种情况下到底发生了什么,有人可以帮我解释一下吗?
它是否以角度的百分比旋转?
我在这里阅读了文档: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) 会发生什么
我不明白在那种情况下到底发生了什么,有人可以帮我解释一下吗?
它是否以角度的百分比旋转?
它仍将围绕 X 轴旋转 2 度。您链接的该页面还显示以下内容:
x y z = 1 (if not, the GL will normalize this vector).
这意味着向量 (x,y,z) 是一个单位向量(长度为 1),如果不是,GL 将对向量进行归一化(将其除以其长度,使其长度为 1)。
结论:x,y和z参数定义了一个向量,其中方向是唯一相关的部分,长度将由函数处理。因此,您可以安全地放入任何矢量,它只会围绕该矢量旋转。
它没有说x
,y
并且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)
是等价的。
glRotate
意味着您可以将当前矩阵旋转给定向量 (x, y, z)angle
度数。所以参数 x、y、z 只是 3D 空间中向量(线)的 3 个基本参数。正如你所看到的,一个向量有方向和长度,但是在这个函数中,长度是没有用的,所以无论你的向量长度是1还是100还是0.2,在这个函数中都没有意义。这只是一个方向标记。