glRotate(angle,x,y,z),在这种情况下x,y,z是什么?

时间:2013-10-03 23:26:43

标签: opengl glrotate

我在这里阅读了文档: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)会怎样?

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

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

2 个答案:

答案 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)

并不是说xyz是向量。如果您使用支持MathML的浏览器打开页面,您会看到类似

的内容
  

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

即。 xyz是单个向量的组成部分。同样,它没有说“ 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)是等效的。