5

2D ポリゴンの詳細レベル (LOD) 表現を作成できるアルゴリズムをネットで探していますが、まともなリファレンスを見つけることができません。間違った検索用語を使用しているのかもしれませんが、すべての検索結果は 3D LOD アルゴリズムのものであり、おそらく 2D には実際には適用できない (?) と思います。

3D グラフィックスが猛威を振るう前は、多くの人が 2D LOD アルゴリズムに取り組んでいたに違いありません。詳細情報を入手できる場所への手がかりや指針はありますか? ありがとう!

4

2 に答える 2

4

ポリラインを単純化するために使用されるDouglas-Peucker アルゴリズムを検索しますが、ポリゴンをサポートするために拡張される可能性があります。それは私が使用したものです。必要に応じて、トポロジー的に安定した拡張機能もあります。

于 2010-12-16T14:00:39.223 に答える
4

ポリゴンから N 番目ごとの頂点を取得する (頂点の数を N だけ減らす) という、明らかに最もばかげたアルゴリズムは別として、いくつかの 3D アルゴリズムに触発されたアイデアを次に示します。

通常、3D では、全体のボリュームにあまり寄与しない面を削除する必要があります。これを行うために、モデルの「最も平坦な」領域を単純化しようとします。

2D では、これを「セグメント間の角度が最も小さいセグメントを単純化する」に変換できます。最初の単純な実装は次のようになります。

  1. 多角形のセグメント Si と Si+1 の間のすべての角度を計算します
  2. 所定のしきい値を下回るすべての角度を取得します (または M 個の最小の角度を取得します)。
  3. 2. で特定したセグメントを単純化します ([Pi, Pi+1] と [Pi+1, Pi+2] を [Pi, Pi+2] に置き換えます)。
  4. ポリゴンを十分に縮小するまで、1. から繰り返します。

もちろん、これは最適ではありませんが、品質と速度の間の適切なトレードオフになるはずです。角度の代わりに、2 つのセグメントの中間点 (Pi+1) と潜在的に簡略化されたセグメント ([Pi, Pi+2]) の間の最小距離を取ることができます。

編集:

あまりパフォーマンスが必要ない場合に試す別のアルゴリズム:

  1. 元のポリゴン頂点を Catmull-Rom スプラインの制御点と見なす
  2. このスプラインを目的のポイント数でテッセレートします

最後に、そのリンクでいくつかのソース コードを見つけました: http://motiondraw.com/md/as_samples/t/LineGeneralization/demo.htmlと、関連するアルゴリズム: http://www.geom.unimelb。 edu.au/gisweb/LGmodule/LGSimplification.htm

于 2010-12-16T13:14:39.113 に答える