opengl绘制一个机器人手臂的一些问题
来源:互联网 发布:中国鉴藏 数据 编辑:程序博客网 时间:2024/04/28 18:27
glClear (GL_COLOR_BUFFER_BIT);glPushMatrix(); //将当前的堆栈中所有的堆栈向下压入一级。其实是相当于记住当前的位置。//记住了全局坐标系中的坐标位置。glTranslatef (-1.0, 0.0, 0.0); //将局部坐标系的位置向左平移一个单位。glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0);glTranslatef (1.0, 0.0, 0.0);glPushMatrix(); //记住了shoulder旋转后的局部坐标进行平移后的操作glScalef (2.0, 0.4, 1.0);glutWireCube (1.0);glPopMatrix();//调用glTranslate()函数指定关节的位置,并调用了glRotate()使得长方体绕关节旋转后,应该将局部坐标的原点平移到//长方体的中心,并对立方体进行缩放,然后绘制该立方体。问题1: 这是绘制机器人的一段代码,按照绘图的思路,本不是应该先画一个立方体,然后如果你想要达成什么效果,对其进行相应的模型变换么?这段代码前半部分暂且不说,就glScalef (2.0, 0.4, 1.0);glutWireCube (1.0);为什么不能写成glutWireCube (1.0);glScalef (2.0, 0.4, 1.0);问题2:这段代码中使用的是glTranslate()函数指定关节的位置,那是移动了局部坐标系后的一个位置,如何你能保证最后的缩放后的那个立方体的关节就在之前你设置好的那个位置呢?问题3:我对其中的glPushMatrix();glPopMatrix();过多的调用表示不甚理解,求指导。
举报 2013-12-09 18:08提问者采纳
先回答
问题3,这对函数的调用就是保证他们之间的变换不会作用于以外的任何绘制,比如绘制第一个立方体缩放时不调用glPushMatrix()和glPopMatrix(); 你看看后面的绘制效果。实际上就是保存当前矩阵和恢复当前矩阵啊。。。要是我没解释清楚接着问吧
问题1,OpenGL是管道机制的,变换是按顺序作用于后面的绘制,所以
1
2
glutWireCube (1.0);
glScalef (2.0, 0.4, 1.0);
//这个变换不会作用于他之前的坐标点
问题2,就上臂来说,缩放后的立方体X方向是两个单位长,如果你直接做旋转那个是绕着立方体X方向的中间转,所以先右移一个单位,再旋转就是绕着立方体左端旋转了,然后再挪回一个单位。。。由于glPushMatrix()和glPopMatrix(); 的搭配调用,实际上对上臂的变换是作用于前臂的。画前臂同样是先右移以保证绕左端旋转而不是中间,然后再右移一个单位把它接到上臂那个立方体右端。
下面贴出的代码按照glPushMatrix()和glPopMatrix()对缩进,看看是不是容易看清些
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
glPushMatrix();
glTranslatef (-1.0, 0.0, 0.0);
glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0);
glTranslatef (1.0, 0.0, 0.0);
glPushMatrix();
glScalef (2.0, 0.4, 1.0);
glutWireCube (1.0);
glPopMatrix();
glTranslatef (1.0, 0.0, 0.0);
glRotatef ((GLfloat) elbow, 0.0, 0.0, 1.0);
glTranslatef (1.0, 0.0, 0.0);
glPushMatrix();
glScalef (2.0, 0.4, 1.0);
glutWireCube (1.0);
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
0 0
- opengl绘制一个机器人手臂的一些问题
- 用OpenGL绘制旋转的机器人手臂
- opengl 机器人手臂
- Opengl 模拟机器人手臂
- OpenGL 绘制几何图形的一些细节问题
- opengl绘制移动的安卓机器人
- 《高效学习OpenGL》 之 创建机器人手臂源码讲解
- 只带一根手指的机器人手臂
- 这是一个实现在光照下的机器人手臂的动作交互程序
- 机器人手臂轨迹规划
- 关于红宝书上机器人手臂的例子和矩阵变换
- OpenGL---绘制几何图形的一些细节
- c语言在qt环境下调用opengl es 2.0 api创建机器人手臂
- [OpenGL]利用OpenGL绘制一些简单的图形
- OpenGL:绘制一个旋转的正方形
- [OpenGL]计算机图形学:基于Articulated Models的机械手臂实例
- OpenGL入门学习——第三课 绘制几何图形的一些细节问题
- OpenGL入门学习之三——绘制几何图形的一些细节问题
- python之auto鼠标/键盘事件
- HTML5游戏制作之路_02_剖析项目目录结构&&在浏览器中输出helloworld
- 排错-Loadrunner录制打不开浏览器解决办法
- 什么叫做Oracle RAC中的nodename
- 排错-Loadrunner录制打不开浏览器解决办法
- opengl绘制一个机器人手臂的一些问题
- 移动端开发学习1:viewport
- Android测试教程2--简单小测试
- java Process 流导致的错误
- LeetCode21:Merge Two Sorted Lists
- 只是想改变
- Android Pdf 方案
- 八数码3
- SQL Server中角色与权限管理