我在实现一个可以拾取对象的机械臂时遇到了麻烦,因为我在实现中调用了 glTranslate()、glRotate(),机器人的每个部分都依赖于前一部分。
例子:
void drawRobo()
{
draw a Cylinder as Base;
glTranslate();
drawArmpart1();
glTranslate();
drawJoint1();
glRotate();
drawArmpart2();
glTranslate();
drawGrabbers(); // The claw or the endeffector
}
void drawObjects()
{
glTranslate();
drawCube() // Object
glTranslate();
drawSphere() // Object 2
}
void display()
{
drawRobo();
drawObjects();
glPostredisplay();
}
现在的问题是当我使用 glRotate() 旋转末端执行器或抓取器时;我的物体也会旋转,我不希望这样。我希望能够旋转关节和手臂,使其更靠近物体,然后我想使用抓取器来拾取它们。
我该如何处理?我在所有需要它们的地方都有 glPushMAtrix() 和 glPopMatrix() 命令。