3

体を横切る方向を教えてくれる数学を探しています。私はアイデアがありません。三角法の非常に単純なアプリケーションであるに違いないことはわかっていますが、さまざまなことを試しましたが、成功しませんでした。最善のアプローチがわかりません。

ここに詳細があります:

ここに画像の説明を入力してください

だから私は与えられた角度で回転している体を持っています、そして私は私が体の後ろから入っているのか前から入っているのかを知る必要があります。このユースケースの軌道は、マウスの位置(移動中)によって定義されるため、前のポイントと現在のポイントから線を引くことができます。

誰かがこれで私を助けてくれることを願っています:)&よろしくお願いします。

4

2 に答える 2

2

これは、いくつかのベクトル演算を使用して解決できます。まず、動きを表すベクトルを作成します。

movement = currentPoint - previousPoint

次に、それが体の方向(体の正面の法線ベクトルである「法線」で指定)と一致するかどうかを確認するには、内積を使用します。場合movement dot normal > 0、動きは正面の法線の方向です。後ろから体に当たるように。そうでなければ、それは正面から体にぶつかります。

ベクトルは正規化されていないことに注意してください。これは、オブジェクトがオブジェクトに後ろから当たるか、前から当たるかを知りたい場合には必要ありません。素晴らしいボーナスは、正規化movementすると(normalすでに正規化されていると思います)、との間の内積が入射角movementを表すことです。normalangle = arccos(movement dot normal)

編集

このアプローチは相対的な動きを処理するため、オブジェクトとの交差をテストして、オブジェクトに当たったかどうかを確認する必要があります。これを実現するには、線とオブジェクトの交差をテストします。(オブジェクトによって異なるため、これについてはこれ以上詳しく説明することはできません。)

于 2012-05-10T11:08:30.943 に答える
0

私はこの答え提供されたリンクが役立つはずだと思います。答え自体は、2つのセグメントが交差するかどうかを判断することを扱い、リンクは、ポイントがセグメントの左側にあるか右側にあるかを判断する方法を説明しています。

私が間違っていない限り、最初の部分は現在の軌道が体を横切るかどうかを示し、2番目の部分は現在の点が体の「ベクトル」の左側にあるか右側にあるかを示します。正面から衝突したか、最後から衝突したか。

于 2012-05-10T16:14:04.227 に答える