雨洁9409 2013-12-08 08:39 采纳率: 0%
浏览 2181

opengl绘制一个机器人手臂的一些问题

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();过多的调用表示不甚理解,求指导。

  • 写回答

1条回答 默认 最新

  • mevip 2013-12-09 04:22
    关注

    建议你看下《OpenGL编程指南》前三章

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码