天地之灵学习小组
我们学习小组的OpenGL学习笔记 大家一定要互相折磨呀~~
posts - 150,  comments - 156,  trackbacks - 0

        今天仔细研究了一下glRotatef()函数参数的具体意义。angle毋庸置疑就是旋转的角度,而x,y,z三个参数则应该看成一个整体表示一个向量,表示物体围绕向量[x,y,z]旋转。下面就具体谈谈自己发现这几个参数意义的过程。
        刚看glRotatef()函数的时候对各个参数的意义很是不明白,自己上网查了一查,但发现网上说的却不是我想要的答案。于是潜下心来研究了一番。刚开始看的时候在参数angle上根本就没花什么时间,对于x,y,z三个参数的研究主要分为了如下几个个过程。初看的时候是对三个参数分个来研究的,发现如果x,y,z中仅有一个不为0的话,例如x不为0,若x>0,则表示绕x轴正方向旋转angle度,若x<0,则表示绕x轴负方向旋转angle度,不论x的值是多大,即1.0和0.1代表的都是绕x轴正方向旋转angle度。于是就初步下了一个结论,即x,y,z只表示了三个状态,即大于0表示绕该轴正方向旋转,小于0表示绕该轴负方向旋转,等于0就表示绕该轴不旋转。但是当x,y,z三个参数中至少有两个不为0的时候发现根本不是那么回事,因为当x不为0且为一个定值的时候,y取不同值物体旋转的状态根本就不一样,这就推翻了我第一次的假想。到了这里似乎就遇到了一个瓶颈,任我如何想都想不明白,到了吃饭的时间居然都感觉不到饿。后来实在没有办法的时候还是打算先去吃饭,刚穿上外衣的时候突然一个想法闪进我的脑海,为什么不把x,y,z看成一个整体呢?带着这个疑问我思考了一路,越想越兴奋,最后才向x,y,z应该表示一个向量,即物体旋转时所围绕的那个向量。回来后测试了一下发现[0,1,1]和[0,2,2]所产生的旋转效果是一样的,后来又测试了几组值,我对自己的猜想更加地肯定了。
      虽然更加肯定了自己的想法,但还是不能说明它是百分之百正确的,还希望各位找找看看能不能再补充一点或者添加一些其他函数参数意义的说明。


FeedBack:
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解和疑问_By risky
2008-10-11 20:33 | 陈梓瀚(vczh)
(x,y,z)就是向量,当然[0,1,1]和[0,2,2]一样了……话说回来,这种就是冗余信息与人性化的平衡……  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解和疑问_By risky
2008-10-11 20:39 | 肖赫_王婷婷_王冠_郑燚
说的好深奥,能不能说得具体点?
  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2008-10-11 20:47 | 陈梓瀚(vczh)
因为无论你的向量是不是单位向量,他都要计算长度,因此有可能造成多余计算,但是你写起程序来就很方便了。  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2008-10-29 19:58 | mzmmm
如果我想画一个三维坐标系,应该怎么设置glRotatef的四个参数?
就是高中时经常用的那种三维坐标系,没办法粘图片,不知道我说清除了没有。
麻烦发到我的邮箱 aiyunchen@126.com 谢谢谢谢!!!  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2008-11-05 09:59 | yanglin
明白了,有用处的东东。呵呵  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2009-01-18 18:44 | 小祈祷
This rotation follows the right-hand rule, so
if the vector



x
y
z


points toward the
user, the rotation will be counterclockwise.
  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2010-01-31 00:57 | pkc
OpenGL 的文檔不是一早已經說明了嗎:
glRotate produces a rotation of angle degrees around the vector (x, y, z)  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2010-03-12 13:14 | ZY
谢谢,明白了你说的意思。  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2010-04-06 09:04 | eqmaster
多谢博主指点  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2011-06-20 17:38 | NND
(x,y,z)空间上只能是一个点,怎么可能是一个向量?!只能是相对于原点坐标(0,0,0)或某个固定的点(a,b,c)才能称得上是一个向量!这么简单的问题还拿出来讲,还讲的这么费事!  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2011-11-17 11:49 | alising
@陈梓瀚(vczh)
@pkc
opengl的文档那里有啊?
好心人有的话给我发一份,
alisingchen@yahoo.cn  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2011-12-28 15:05 | 咿呀
谢谢,就是把x y z 当做向量而且标识的是方向。明白了  回复  更多评论
  
# re: 10月11日_关于glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)的参数的一些理解_By risky
2013-09-18 02:20 | Kim
@小祈祷
说得很明白  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿(6)

随笔分类(149)

随笔档案(150)

同道中人

搜索

  •  

积分与排名

  • 积分 - 45982
  • 排名 - 476

最新随笔

最新评论

阅读排行榜

评论排行榜