我有一个关于手术机器人手臂在 OpenGL 中的运动的问题。
我们的手臂由 7 块组成,它们被认为是手臂的关节,它们负责弯曲和扭转手臂。我们以这种方式绘制手臂:首先我们创建负责像“上下”一样移动肩膀的元素,然后我们使用 Translatef “移动”到我们绘制下一个元素的点,负责扭转肩膀(我们使用 Rotatef 控制运动,以此类推下一个关节(肘部、手腕)。
关键是要创造一个可以做出类似人类动作的手臂。我们的机制有效,但现在我们的导师要我们用手臂末端画一条线。我们将负责绘制和移动手臂的代码放在 push 和 pop 矩阵之间,所以它的工作原理就像在现实中一样,我的意思是当我们移动灵魂时,手臂中的任何其他元素也会移动。
有很多元素在移动、旋转,我们有几个旋转矩阵,它们附加到我们可以控制的不同元素上,现在我们不知道如何在空间中精确地找到手臂末端的新位置能够将新点添加到线带。任何人都可以帮忙吗?
glGetFloatv(GL_MODELVIEW_MATRIX,mvm2);
x=mvm2[12];
y=mvm2[13];
z=mvm2[14];
glPointSize(5.0f);
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_POINTS);
glVertex3f(x,y,z);
glEnd();
当我使用手表检查 x、y、z 值是什么时,我得到 (0,-1.16-12e,17.222222),这是不可能的,因为我的手臂长度约为 9.0(在 z 轴上)。我认为只有模型视图矩阵的最后一列很重要,我不必将它乘以顶点的局部坐标,因为它们是 (0,0,0),因为我在这里完成了我的绘图。