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)