Simple Stupid Funnel Algorithmはどのように機能しますか?


回答:


18

アルゴリズムは、先ほど見つけたパス、この場合は三角形のリストから始まります。

道

Mikkoのブログ投稿の最後にあるコードは、ポータルアレイを構成します。これは、パスのポリゴン間のラインセグメントを表すラインセグメントのリストです。これらは、スムージングパスが通過する必要がある「ポータル」です(または、「ポリゴンエッジの中間点をトレースしましょう」からのポリゴンエッジ)。ポータルリストの開始点と終了点は、開始点と目標点で縮退した線分で終わることに注意してください。

このポータルリストは、写真に黄色の点線のセグメントとして表示されます。

ポータル

アルゴリズムは、広いじょうごで始まり、じょうご(AD)を締める限り、じょうごの側面をポータルサイドポイント(ラインセグメントの端点)に沿って繰り返し前方に移動させます。

アルゴリズム

内側に漏斗の縁を移動する必要があり、前方の各動きは、これを用いて確認することができ、この手段外積古い側及び潜在的な新しい側面を表すベクトル(P × Q以下の画像では、も参照triarea2ミッコのコードで)。サイドへの前進がファネルを引き締めない場合、ポータルの現在の反復に対してそのサイドを更新しません(E)。

内側に移動する

処理する必要があるもう1つのケースは、ファンネルがラインセグメントに縮退する場合です。これを説明するために、アルゴリズムは、外積の頂点と右側と左側のそれぞれの端点(R × Sでそれぞれ作られたベクトルの今回)を再度使用して、辺の1つが「間違った」側にあるかどうかをチェックします下の画像)。

縮退漏斗

この場合、ファンネル頂点からのベクトルと正しい側端点が平滑化されたパス(上記の画像のR)に追加され、アルゴリズムはその端点を新しい頂点(FG)として再起動します。ただし、もちろん、それが目標点である場合。


2
@Rolfcore答えは明確ですか?そうでない場合、どの部品を改善する必要がありますか?
エリック

彼は答えを受け入れるのを忘れただけだと思います。これは非常に良く、連続して支持されるべきです^^。
GameDeveloper

たぶん、とんでもないことですが、ムーブFでは、南を指すきついコーナーが最もきつい漏斗を可能にする可能性があるため、最初からやり直さないと言わないので、ボットの側面が実際に失敗するのを待つ必要があります1つだけではなくテストします。したがって、FではなくGでそれを行います。とにかく良い説明:)
GameDeveloper
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.