多邊形中的點:光線追蹤與 Matplotlib - 哪種方法獲勝?

Susan Sarandon
發布: 2024-11-03 12:27:29
原創
682 人瀏覽過

 Point in Polygon: Ray Tracing vs. Matplotlib - Which Method Wins?

檢查多邊形中的點包含:光線追蹤與Matplotlib

要確定點是否位於多邊形內,有兩種主要方法:常用:光線追蹤和Matplotlib的path.contains_points。然而,第三個選項 Shapely 為幾何計算提供了專用解決方案。

Matplotlib 的 path.contains_points

這種方法已被證明在基準測試中明顯更快,如提供的程式碼片段所示。其速度優勢使其成為需要頻繁進行點遏制檢查的場景的合適選擇。

光線追蹤方法

雖然光線追蹤最初被認為是推薦的方法,但其性能已經被 Matplotlib 的 path.contains_points 超越。該程式碼演示了此方法的實現,其中涉及迭代多邊形邊併計算交集。雖然它比 path.contains_points 慢,但它仍然是一個可靠的替代方案。

Shapely

Shapely 提供了一個用於幾何操作的專用庫,包括多邊形中的點包含。它的 contains 方法提供了一個易於使用的介面來確定點成員資格。然而,值得注意的是,它的精確度可能不適用於所有應用,因為它假設查詢點處沒有頂點的連續多邊形。

基於像素的網格最佳化

在不需要高精度的場景中,建立基於像素的布林值網格可以提供高效且快速的替代方案。透過將 True 指派給位於多邊形內的網格元素,將 False 指派給多邊形以外的網格元素,可以使用網格索引來計算後續的點包含檢查。

以上是多邊形中的點:光線追蹤與 Matplotlib - 哪種方法獲勝?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板