opengl学习(五)一个机械臂程序,有关模型转换

这篇博客介绍了作者在学习OpenGL时遇到的模型变换问题,特别是关于glTranslatef()和glRotatef()函数的执行顺序。作者通过研究一个机械臂的程序,理解了这两个函数的使用,指出它们的顺序与直观理解相反。文章提到了一个外部资源链接,进一步解释了顺序问题,并展示了如何使用这两个函数画出旋转的正方体。最后,给出了实现这一效果的代码片段。
摘要由CSDN通过智能技术生成

最近这个内容让我很窝火啊,真是有点摸不到头脑,经过查资料,终于知道这其中的一些原理,由于我现在只是初步学习,有关矩阵变换的问题,我会在后面补充的,目前先稍微的说明,看了一个机械臂的程序,研究好一段时间终于知道模型变换中的这两个函数glTranslatef(),glRotatef()在执行的顺序上与实际是相反的。
 

参看http://www.cnblogs.com/yujunyong/archive/2011/04/17/2018776.html,这里面讲述了顺序的问题

看一下这个机械臂的程序中有关这两个函数的应用

  glClear(GL_COLOR_BUFFER_BIT);
 
    glPushMatrix();
    glColor3f(0.0, 1.0, 1.0);
	glTranslatef (-0.5, 0.0, 0.0);
	glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0);
    glTranslatef (1.0, 0.0, 0.0);
    auxSolidBox(2.0, 0.3, 0.5);


 

这两个操作是画两个正方体,并且旋转方式都是按Z轴逆时针旋转,按照上面所阐述的内容,首先是先移动坐标轴,然后在绕Z旋转操作,先移动后旋转,物体旋转时是以(0.0f,0.0f,0.0f)这个点绕Z轴逆时针旋转的(旋转是右手坐标系),然后再调用glTranslatef(-0.5,0.0,0.0),这个操作实际上是改变了原点,也就是再旋转时是以原坐标经(-0.5,0.0,0.0)变换后的那个点绕Z轴旋转的,然后绘制立方体
下一步是画第2个立方体,我设置成蓝色的以便好观察

代码如下

 glColor3f(0.0, 0.0, 1.0); 
    
 glTranslatef (1.0, 0.0, 0.0);
glRotatef ((GLfloat) elbow, 0.0, 0.0, 1.0);
glTranslatef (0.8, 0.0, 0.0);
    auxSolidBox(1.6, 0.2, 0.5);


同样的操作,是先移动后旋转,然后改变原点的位置,使其旋转。
 
效果如下

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值