OpenGL的glRotatef旋转变换函数详解 - 博客园
文章推薦指數: 80 %
OpenGL的glRotatef旋转变换函数详解先看一下函数定义:void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) ang.
首页
新闻
博问
专区
闪存
班级
我的博客
我的园子
账号设置
简洁模式...
退出登录
注册
登录
1024Planet
寻找1024的猿人︿( ̄︶ ̄)︽( ̄︶ ̄)︿飞.飞.飞.
OpenGL的glRotatef旋转变换函数详解
OpenGL的glRotatef旋转变换函数详解
先看一下函数定义:voidglRotatef(GLfloatangle, GLfloatx, GLfloaty, GLfloatz)
angle:为旋转的角度,单位为度。
x,y,z:为对应xyz轴的布尔值变量。
重点是x,y,z表达的是什么意思呢?应该如何取值?如果说x,y,z表达的是一个坐标(x,y,z),那么这个函数就说明了当前几何图形围着这个坐标点旋转。
但往哪个方向旋转呢?所以很明显,x,y,z表达的意思并不是坐标点,而是要围绕哪个坐标轴旋转。
即其实这里的x,y,z值相当于一个布尔值,0.0表示假,而非零参数则表示真。
所以如果你想让当前的几何图形围绕着z轴旋转,那么x和y都设为0,而z设为非零值即可。
如果这里的x,y,z的值都设置为0.0,那么将围绕着x轴旋转。
还有一点需要注意,如果设置的旋转值(x,y,z的值)为正数,那么旋转的方向是逆时针的,如果旋转值是负数,那么旋转的方向是顺时针的。
假设:glRotatef(45,1,0,0)
物体如何旋转?想象:从坐标(0,0,0)即原点,引出一条线到(1,0,0),用右手握住这条线.这时,你会问,如何握?右手大拇指指向(0,0,0)至(1,0,0)的方向才握。
另外四个手指的弯曲指向即是物体旋转方向。
为什么是右手握住,而不是左手呢?因为OpenGL是右手原则。
最后附上代码供参考:
1#include
延伸文章資訊
- 1glRotatef 函式(Gl.h) - Win32 apps - Microsoft Docs
void WINAPI glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z );. 參數. 角度. 旋轉角度,以度為單位。 x. ...
- 2OpenGL中平移函数glTranslatef()、旋转函数glRotatef()的理解
void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z);. 先解释一下旋转方向,做(0,0,0)到(x,y,z)的向量,用右手握住...
- 3OpenGL: What does glRotatef rotate? - Stack Overflow
glRotatef, like glMultMatrixf, is used to modify the currently selected transformation matrix. Th...
- 4【c++】OpenGL:glRotatef旋轉什麼? - 程式人生
當我這樣呼叫 glRotatef 時: glRotatef(angle,0.0,1.0,0.0) //rotate about y-axis 我知道這是圍繞 angle 旋轉 y axis 度。...
- 5glrotatef(3) - Linux man page - Die.net