我在这里阅读了文档: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)会怎样?
我不明白在那种情况下究竟发生了什么,有人可以帮我解释一下吗?
它是否以角度的百分比旋转?
答案 0 :(得分:6)
它仍将围绕X轴旋转2度。您链接的页面也说明如下:
x y z = 1 (if not, the GL will normalize this vector).
意味着向量(x,y,z)是单位向量(长度为1),如果不是,则GL将对向量进行归一化(将其除以长度,使其长度为1)。
结论:x,y和z参数定义了一个向量,其方向是唯一相关的部分,长度将由函数处理。因此,您可以安全地放入任何矢量,它将简单地围绕该矢量旋转。
答案 1 :(得分:0)
并不是说x
,y
和z
是向量。如果您使用支持MathML的浏览器打开页面,您会看到类似
glRotate围绕矢量(x,y,z)产生角度旋转。
即。 x
,y
,z
是单个向量的组成部分。同样,它没有说“ x y z = 1(如果没有,GL将规范化此向量)”:相反,它说:
||(x,y,z)|| = 1(如果没有,GL将规范化此向量)。
因此,(x,y,z)
是矢量,旋转函数将围绕该旋转产生。如果您提供的矢量未标准化,则GL会对其进行标准化,因此glRotate(2,0.5,0,0)
和glRotate(2,0.0174524,0,0)
是等效的。