2011-02-23 10 views
7

私はPythonでプログラムを書いています。私は一連の図形(ポリゴン、一連の座標ペアとして定義されている)を持っており、それらが特定の矩形と重なるかどうかを知る必要があります。Pythonを使って、四角形と形が重なっているかどうかをどうやって調べるのですか?

これを処理するための簡単なアルゴリズムはありますか?あるいは、もっと良いのは、これらの計算を処理できる純粋なPythonライブラリですか?

+2

あなたの無関心な形は本当に形が変わっていますか、多分ポリゴンですか?これらのポリゴンの頂点を記述する「座標ペアのシーケンス」ですか?そうでない場合、それは何ですか? –

+0

問題で明らかにされた –

答えて

3

「任意の図形」は実際にはポリゴン(それらが座標のペアとして記述されていることを前提とする)であると仮定して、重なり合うかどうかを判断することは比較的簡単です。ポリゴンAのいずれかの面がポリゴンBの他の面と交差しているかどうかを計算するだけで済みます。

例が必要な場合は、the Drexel Math Forumというかなり徹底したウォークスルーがあります。

等、この追求を支援することができますPythonモジュール、などSympyNumpyPyGame、たくさんありますが、これはあなたが作る必要がある唯一の幾何学的な計算である場合は、それらのすべては、かなり重いです。

+0

ポリゴンAにポリゴンBが完全に含まれている場合、「交差する」という動作はしません。 –

+1

@Chrisチェックしている両端の端点の間に交点があることを確認します( 'xA1 < = xInt <= xA2とxB1 <= xInt <= xB2とyA1 <= yInt <= yA2とyB1 <= yInt <= yB2') – user470379

+0

@Chris:封じ込めを含める場合は、ポリゴンそれは計算時間を追加しますが、複雑さは追加しません。 –

関連する問題