私は、頂点X1(円錐の円の底はX1上に中心を持っています)に底辺を持つオブジェクト(円錐)を持ち、Ozを指しています。私はそれを回転させたいので、それは与えられた頂点X2を指すでしょう。私は多くの組み合わせを試して、私はまだそれを働かせることができない多くの計算を作った。あなたがC++ OpenGL関数glRotatefを使って答えることができればうれしいですが、一般的な答えも高く評価されます。私はコーンでこれを試していますが、どのメッシュでも動作しているはずです。回転するオブジェクト
は、これまでのところ私はこれを持っている:
h1 = sqrt(pow(p2.y - p1.y, 2) + pow(p2.z - p1.z, 2));
h2 = sqrt(pow(p2.x - p1.x, 2) + pow(p2.z - p1.z, 2));
h3 = sqrt(pow(p2.x - p1.x, 2) + pow(p2.y - p1.y, 2) + pow(p2.z - p1.z, 2));
r.x = sign(p1.y-p2.y)*acos((p1.z-p2.z)/h1) * 180/M_PI;
r.y = sign(p1.x-p2.x)*acos((p1.z-p2.z)/h2) * 180/M_PI;
r.z = 0;
cone.SetPosition(p2);
cone.SetHeight(h3);
cone.SetRotation(r);
どこ記号()は-1を返し、正のパラメータの負の1のために、名前何です。そして、Coneオブジェクトの描画関数は、次のようになります。
高度に最適化されたソリューションである必要はなく、機能しているだけです。
あなたは私の質問に答えたと思います。クロスプロダクトは決して私の心に来なかった、それは本当に働くかもしれない。どうもありがとう。 – SinistraD
さて、ここでもう一度確認します。私が説明した方法は簡単で、うまくいきますが、サインを正しく取得しなければなりません。もしあなたがトラブルに遭遇してあなたの投稿やコメントを更新すれば、おそらく詳細を手伝ってくれるでしょう。私は最近このようなことをたくさんしなければならなかったので、私の心の中ではかなり新鮮です。 –