web-dev-qa-db-ja.com

点のセットを囲むポリゴン

点のセットS(2D:xとyで定義)があり、セットのすべての点を囲む最小の(つまり:点の数が最も少ない)ポリゴンであるPを見つけたいと思います。Pはの順序付けられたサブセットです。 S。

これを計算するための既知のアルゴリズムはありますか? (この分野での私の文化の欠如は驚くべきことです...)

ご協力いただきありがとうございます

26
Laurent K

この問題には多くのアルゴリズムがあります。これは「 最小境界ボックス "」と呼ばれます。 " convex hull "、特に here を検索しても解決策が見つかります。

1つの方法は、左端の点を見つけてから、他のすべての点が線p(n-1)p(n)の右側にある点を検索することを繰り返します。

30

これが簡単な解決策です...

三角形を形成するために任意の3つのポイントから始めます。次の操作で、ポリゴンに各追加ポイントを追加します。

エッジを2つの連続したパスに分割します。一方のパスでは、各エッジの線が追加するポイントをポリゴンの残りの部分から分離し(これを「分離パス」と呼びます)、もう一方のパスでは、各エッジの線を分離します。ポリゴンと同じ側にポイントがあります。

(注:形状が凸状である限り、これらの2つのパスは連続しており、形状全体を形成します)

分離パスにエッジがない場合、ポイントはポリゴンの内側にあるため無視する必要があります。それ以外の場合は、ポリゴンから分離パスを削除します。それを2つのセグメントに置き換え、分離パスの各端点を新しいポイントに接続します。

タダ! :)

6
Evan Rogers

おそらく、凸包である最小の領域が必要であることを意味します。

本当に最小のpointsが必要な場合は、頂点の位置が非常に大きい三角形を作成して、すべてのポイントを囲むことができます。

3
SPWorley

凸包アルゴリズムに関する優れたリソースは次のとおりです。 2Dポイントセットまたはポリゴンの凸包(DanSundayによる)

2
Igor Brejc