2016-09-22 6 views
-3

2D平面では、2つのオブジェクト(AとB)に2つの座標があります。それらの中心は、OX線に平行なACおよびBCはAC上で垂直であるとして、A(xA、yA)およびB(xB、yB)(およびC(xC、yC)= C(xB、yA))である。私はオブジェクトの回転を操作することができ、私はすべての通常の数学演算にアクセスでき、度とラジアンを使うことができます。オブジェクトを別のオブジェクトに向かって回転させる一般的なアプローチは何ですか?

私は調査しましたが、詳細については説明できませんでした。

次のように私はまた、ARCCOS式で数学式を用いて試みた:

Iは次いで計算し、C(AC)を算出し、ピタゴラスの定理を使用してからB(AB)までの距離を計算しようとしましたcos(angle)= AC/ABなので、オブジェクトAをBに向かって回転させるために必要な最終角度はarccos(AC/AB)です。

問題は、これはおそらく数字の多くを取得し、すべてを台無しにすることができますようめちゃくちゃバギーを鳴らしています。

どうすればいいですか?数学的に説明してください。ありがとう!

+0

あなたが持っている問題は、まったく不明です。使用する正しい式が何であるかわからない場合は、プログラミングの問題よりも問題を解決するための基礎となる数学を理解することの問題に似ています。たぶんhttp://math.stackexchange.com/ – Jvinniec

+0

にあなたが何をしようとしているのかは分かりません。たぶんあなたは、オブジェクトがどのように見えるか、どのようにそれらがw.r.tに向いているかを1つまたは2つの写真に追加する必要があります。前と後のお互いに。 –

+0

「回転する」とはどういう意味ですか?あなたは[billboarding](http://www.lighthouse3d.com/opengl/billboarding/)のようなことを話していますか? –

答えて

0

2点間の角度を見つけるための最も簡単な方法は、それらの逆正接(別名逆正接)を取ることです。あなたはコサインを使用して正しい軌道に乗っていましたが、接線はポイント間の距離を知る必要がないため、プロセスが単純化されます。

このように、言語の選択にatan2関数を使用することをお勧めします。 C#Math.Atan2、例えば:

double angle = Math.Atan2(B.Y - A.Y, B.X - A.X); 

注:この特定の機能ラジアン単位の角度を返します。

+0

ありがとう、私はatan2 –

0

オブジェクトAを回転の中心のようにCでBに向かって回転しますか?

三角形が特殊なので、90度の角度で回転させるだけです。しかし、特定の中心を中心に特定の角度の回転を適用するには、変換TRTを使用する必要があります。

あなたはより多くの説明hereがあります。

+0

とはうまく動作しませんでした。だから、AがCに向いていると仮定して、AをBに向ける –

関連する問題