点がポリゴン内にあるかどうかを判断することは、計算幾何学において頻繁に行われるタスクです。このタスクの効率的な方法を見つけることは、多数の点を評価する場合に有利です。ここでは、一般的に使用される 2 つの方法、レイ トレーシングと Matplotlib の path.contains_points 関数を調べて比較します。
レイ トレーシング メソッド
レイ トレーシング メソッドは、からの水平レイと交差します。検査中の点と多角形の辺。交差の数をカウントし、パリティに基づいて点が多角形の内側にあるかどうかを判断します。
Matplotlib の path.contains_points 関数
Matplotlib の path.contains_points 関数は、ポリゴンを表すパス オブジェクト。指定された点が定義されたパス内にあるかどうかを確認します。この関数は、次のコード スニペットに見られるように、多くの場合、レイ トレーシング アプローチより高速です。
from time import time
import matplotlib.path as mpltPathポリゴンとランダムな点
polygon = [[np.sin(x) 0.5, np.cos(x) 0.5] for x in np.linspace(0, 2*np.pi, 100)]
points = np.random.rand(10000, 2)レイ トレーシング経過時間
start_time = time()
inside1 = [ray_tracing_method(point[0], point[ 1]、ポリゴン) ポイント単位のポイント]
print("レイ トレーシング経過時間: " str(time() - start_time))Matplotlib contains_points 経過時間
start_time = time ()
path = mpltPath.Path(polygon)
inside2 = path.contains_points(points)
print("Matplotlib contains_points 経過時間: " str(time() - start_time))
< /pre>上記のコードは、レイ トレーシングと比較して Matplotlib のアプローチの実行時間が大幅に速いことを報告しています。
その他のオプション
これらのメソッドに加えて、幾何学的操作用に特別に設計された Shapely パッケージは、ポリゴン内ポイント チェックのための効率的な機能を提供します。
以上がポリゴン内ポイントの検出には、レイ トレーシングと Matplotlib の path.contains_points のどちらの方法がより効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。