0

ねえ、私は以前の回答で、複数の凸型から凹型を作るために次のことをするように言われました:

凸包がない場合は、パッケージラッピングアルゴリズムを実行して、すべてのポイントを含む凸包を取得します(これも非常に高速です)。en.wikipedia.org/wiki/Gift_wrapping_algorithm

アルゴリズムの開始点として、境界上にある点を選択します。


次に、シェイプ上にあるが、凸状の境界上にはない次のポイントを繰り返します。見つかったら、開始点から見つかった非境界点までの頂点を使用して新しい形状を作成します。最後に、開始点を検出された境界外の点に設定します

再帰があなたの友達になりました。作成する新しいサブシェイプごとにまったく同じプロセスを実行します。


しかし、私は1つのことに混乱しています。連続する2つの頂点が境界外にある場合はどうしますか?最初の頂点に到達した後、スターターポイントをそれに接続しますが、もう一度イタリングを開始するとすぐに別のオフボーダーポイントに遭遇し、使用できる頂点はスターターポイントと新しいオフボーダーポイントの2つだけになります。私は何が欠けていますか?

私の問題を説明するために、この問題に関連する形を次に示します。誰かがその全体を描き、これを使用してアルゴリズムのステップをウォークスルーできれば素晴らしいと思います。そして、開始点としてポイント1を使用します。

ここに画像の説明を入力してください

ありがとう!

4

1 に答える 1

0

(あなたが説明したように)本当に凸多角形を取り、新しい頂点を導入せずにそれを凸部分に分解したいと仮定すると、通常のアプローチは「耳のクリッピング」と呼ばれ、このウィキペディアの記事、多角形の三角形分割で説明されています。このアプローチでは、凸状の部分は三角形であり、必然的に凸状になります。

この問題は、ここStackoverflowのCGAL計算幾何学ソフトウェアC++2Dテッセレーションライブラリに関連して説明されています。

于 2011-07-14T12:48:30.920 に答える