0

衝突アルゴリズムを作成し、それを Win32 2D GUI アプリに実装しようとしています。タスクは、.bmp 画像の中央下部を決定するベクトルを 1 つ取得し、ひし形の位置にさらに 4 つのベクトルを取得することです。画像が左、右、上、下のいずれから来ているかをアルゴリズムが認識できるようにしたかったのです。長方形、円、距離計算の衝突検出に関するチュートリアルがインターネット上にたくさんありますが、菱形に適用するのが難しいです。軸に沿った境界と呼ばれるものもありますしかし、それは3dベクトル用だと思います。私はこのトピックに関しては非常に苦手なので、熟練した C++ プログラマーがこのトピックについて言及している優れた電子書籍を紹介してくれるか、コードが小さい場合は入力してください。ABCD菱形全体でX、Y座標の反復を試みましたが、惨めに失敗しました。

助けてくれたみんなに感謝します。

4

1 に答える 1

1

私はコンピュータ グラフィックスの専門家ではありませんが、一般的に問題は、ドットが凸多角形の内部にあるかどうかを判断することです。

これには、次の簡単な手法を使用します。ベクトル積と呼ばれる関数があり、あるベクトルから別のベクトルへの回転方向が正か負かを判断するのに役立ちます。したがって、点 X が多角形 A_1、A_2、...、A_n によって形成される菱形の内側にあるかどうかのチェックは、すべてのベクトル積 (A_iA_{i+1}、A_iX) が同じ符号を持っているかどうかをチェックするだけです。

ベクトル (x1, y1) と (x2, y2) のベクトル積は、x1 * y2 - x2 * y1 として定義されます。

ここで、検出は次のように続きます。前の位置がポリゴンの外側にあり、現在の位置が内側にある場合、ドットがポリゴンに当たったことになります。どちらの側が交差したかを判断するには、ベクトル積 (A_iA_{i+1}、A_iX) のどの符号が最後の位置更新以降に変化したかを確認するだけです。

于 2012-04-13T16:25:55.437 に答える