SymPy で 点の内外判定

環境: Windows 7 32bit, Python 2.7.3


ある点が、多角形の内側にあるか外側にあるかを判定する。
Python の場合、 SymPy ライブラリを使うと楽にできる。
SymPy は記号計算のためのライブラリで、いろいろなことができる。

SymPy のインストール

Python 2の場合

インストーラを使う。
Google Code Archive - Long-term storage for Google Code Project Hosting. から
sympy-0.7.2.rc1.win32.exe をダウンロードし、実行してインストールする。

Python 3の場合

pip からインストールできる。
コマンドライン

pip install sympy

を実行。
pip については pip と ipython インストール手引き (Windows編) - secretbase.log を参考に。

Geometry モジュールを使った点の内外判定

参考

このモジュールでは、点を Point クラスで、 多角形を Polygon クラスで表す。
内外判定には Polygon クラスの encloses_point メソッドを使う。

5点(0,0)(0,3)(4,4)(3,0)(2,2) の内側に点(1,2)が含まれているかを調べる。

>>> from sympy.geometry import Point, Polygon
>>> poly = Polygon((0,0), (0,3), (4,4), (3,0), (2,2))
>>> point = Point(1,2)
>>> poly.encloses_point(point)
True


Polygon に渡す点はリストにまとめて渡すこともできる。

>>> points = [(0,0), (0,3), (4,4), (3,0), (2,2)]
>>> poly = Polygon(*points)