3

頂点が時計回り/反時計回りのいずれかで格納されている任意のポリゴン (図では黒い四角形で示されています) が与えられた場合、そのポリゴンから任意の数の円 (図では赤で示されています) を差し引くことができる必要があります。円を削除すると、多角形が 2 つの別個の多角形に分割される可能性があります (図の 2 番目の線で示されているように)。

どこから始めればよいかわかりません。

例 http://www.freeimagehosting.net/uploads/89a0276d9d.jpg

4

2 に答える 2

2

警告: これを完全に正しく行うためのコードを作成するのは難しい作業です。(概念的には問題ありませんが、数値エラーやエッジケースですぐに行き詰まる可能性があります。)基本的に、Constructive Solid Geometryの2Dバージョンを求めています。計算幾何学の専門家によって作成された既存のライブラリを使用できるかどうかを確認したい場合があります。おそらくあなたが望むことをするいくつかのライブラリがここにありますが、あなたに最も適した表現を選択し、あなたが持っているものをその表現に変換する必要があります.

于 2010-05-13T18:40:05.057 に答える
0

これは、あなたが求めていることを行うフリーウェアのポリゴン クリッピング ライブラリ (Delphi および C++ で記述) です: http://sourceforge.net/projects/polyclipping/

于 2010-06-06T18:42:21.757 に答える