檢查多邊形中的點包含:光線追蹤與Matplotlib
要確定點是否位於多邊形內,有兩種主要方法:常用:光線追蹤和Matplotlib的path.contains_points。然而,第三個選項 Shapely 為幾何計算提供了專用解決方案。
Matplotlib 的 path.contains_points
這種方法已被證明在基準測試中明顯更快,如提供的程式碼片段所示。其速度優勢使其成為需要頻繁進行點遏制檢查的場景的合適選擇。
光線追蹤方法
雖然光線追蹤最初被認為是推薦的方法,但其性能已經被 Matplotlib 的 path.contains_points 超越。該程式碼演示了此方法的實現,其中涉及迭代多邊形邊併計算交集。雖然它比 path.contains_points 慢,但它仍然是一個可靠的替代方案。
Shapely
Shapely 提供了一個用於幾何操作的專用庫,包括多邊形中的點包含。它的 contains 方法提供了一個易於使用的介面來確定點成員資格。然而,值得注意的是,它的精確度可能不適用於所有應用,因為它假設查詢點處沒有頂點的連續多邊形。
基於像素的網格最佳化
在不需要高精度的場景中,建立基於像素的布林值網格可以提供高效且快速的替代方案。透過將 True 指派給位於多邊形內的網格元素,將 False 指派給多邊形以外的網格元素,可以使用網格索引來計算後續的點包含檢查。
以上是多邊形中的點:光線追蹤與 Matplotlib - 哪種方法獲勝?的詳細內容。更多資訊請關注PHP中文網其他相關文章!