ポリライン単純化アルゴリズムを実装しようとしています。元の記事はhttp://archive.is/Tzq2にあります。概念は簡単に思えますが、提供されているサンプル アルゴリズム (表現が不十分だと思います) の疑似コードがわかりません。記事から、基本的な考え方は
- 各ポイントの有効面積 (線上の 3 つの連続するポイント間の三角形によって形成される) を計算し、面積が 0 のポイントを削除します。
- 最小の領域から始めて、ポイントの領域をしきい値と比較し、領域がそのしきい値を下回っている場合は、ポリラインから削除します。
- 隣接する 2 つの点に移動し、変化に応じて面積を再計算します。
- しきい値を下回るすべてのポイント領域が削除されるまで、2 に戻ります。
アルゴリズムは次のとおりです (記事からそのままコピー)。
- 各ポイントの有効面積を計算します 面積がゼロのすべてのポイントを削除し、この面積とともに別のリストに保存します
- 繰り返す
- 有効面積が最も少ないポイントを見つけ、それを現在のポイントと呼びます。計算された面積が、最後に削除するポイントの面積よりも小さい場合は、代わりに後者の面積を使用します。(これにより、以前に削除されたポイントを削除せずに現在のポイントを削除できないことが保証されます。)
- 元のリストから現在のポイントを削除し、これを新しいリストに追加して、関連する領域と一緒に実行時にラインをフィルタリングできるようにします。
- 隣接する 2 点の有効面積を再計算します (図 1b を参照)。
- それまで
- 元の線は、始点と終点の 2 点のみで構成されています。
「REPEAT」の下の最初のステップの「if」句と混同しています...誰か明確にできますか?