8

私はポリゴンの中心線を見つける方法を理解することを任されました。私のグーグル検索は、私が必要としているものが「MedialAxis」と呼ばれていると私に信じさせました。このような:

代替テキスト
(出典:kiev.ua

私が読んだことによると、必要なものは、セグメントの2Dボロノイ図構築アルゴリズムを使用して生成できます。

コードプレックス(FortuneVoronoi)でボロノイアルゴリズムのC#バージョンを見つけました。ポリゴンを適用した後、次のようになります。

代替テキストhttp://www.carbonatlas.com/geonotes/gaia_voronoi.png

緑は元のポリゴンです。オレンジはボロノイ頂点で、黒い線はボロノイエッジです。

これらの頂点で必要なものの作成を確認できますが、不要なものをすべて除外するために必要な次のステップがわかりません。

私はあなたが提供できるどんな助けにも感謝します。

4

3 に答える 3

2

同様の構造はStraight スケルトンです。これは、ポリゴンをそれ自体に縮小し、頂点が中心に近づくにつれて頂点をトレースすることで構築できます。これは、内側軸とまったく同じ曲線ではありませんが、構築するのが少し簡単かもしれません.

于 2009-07-01T17:49:06.363 に答える
0

わお。ここで手足に出て、アルゴリズムがポリゴンの内側と外側で混同されている可能性があることを提案します。元のポリゴンのエッジと頂点を定義するときは、「右手の法則」のようなものを使用して「内側」が常に検出されるように定義されていることを確認する必要があります。右下隅のポリゴンを見ると、ポリゴンのエッジが実際に交差しているように見えます。たぶん、アルゴリズムはそのセクションや他のセクションを「裏返し」と見なしています。左下も同じです。

それは私の直感です。アルゴリズムでは、内側と外側の方向を判別できないようです。

単純なアプローチは、ポリゴンの外側にあるすべてのVoroni「ノード」を除外することだと思いますが、それが見えるとは思いません。ダイアグラムを詳しく見ると、各ノードには他のノードに接続する3つのエッジがあるように見えます。おそらく、3つのエッジのいずれかがポリゴンの外側のノードに接続されているノードを除外できます。それはうまくいくでしょうか?

于 2009-07-01T14:53:51.030 に答える