OpenGL での手術用ロボット アームの動きについて質問があります。
私たちの腕は、腕の関節と思われる 7 つの部分で構成されており、腕を曲げたりひねったりする役割を担っています。このように腕を描きます: 最初に、肩を「上下」のように動かす要素を作成し、Translatef を使用して、肩をねじる次の要素を描画するポイントまで「移動」します ( Rotatef を使用して動きを制御し、次の関節 (肘、手首) で同様に制御します。
人間らしい動きができる腕を作るのがポイントです。私たちのメカニズムは機能しますが、チューターはアームの端でライン ストリップを描くように求めています。プッシュ マトリックスとポップ マトリックスの間に腕の描画と移動を担当するコードを配置したので、実際のように動作します。つまり、ソウルダーを動かすと、腕の他の要素も動きます。
移動、回転する多くの要素があり、制御できるさまざまな要素に接続されているいくつかの回転マトリックスがありますが、空間内のアームの端の新しい位置を正確に見つける方法がわかりませんラインストリップに新しいポイントを追加できます。誰でも助けることができますか?
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();
watch を使用して x、y、z の値を確認したところ、(0,-1.16-12e,17.222222) が得られました。腕の長さは約 9.0 (z 軸上) であるため、真実ではありません。モデルビュー マトリックスの最後の列だけが重要だと思います。ここで描画を終了するので、頂点のローカル座標で (0,0,0) を乗算する必要はありません。