檢查多邊形中的點包含:效能比較
辨識點是否落在多邊形內是 Python 中常見的問題。在建議的各種方法中,有兩種主要方法脫穎而出:光線追蹤和 matplotlib 的 path.contains_points 函數。
光線追蹤方法
光線追蹤方法依賴於追蹤光線從一點到無限遠各個方向。如果射線與多邊形邊的交點數為奇數,則該點被視為在多邊形內部。
Matplotlib 的 path.contains_points 函數
此函數利用基於交叉數法的更快、更有效率的演算法。它透過考慮點與多邊形邊界的關係來決定點的包含。
效能比較
經驗測試表明,matplotlib 函數在以下方面顯著優於光線追蹤方法:執行時間,特別是對於較大的多邊形。例如,對於 100 條邊的多邊形和 10,000 個隨機點,matplotlib 函數大約需要 0.0099 秒,而光線追蹤需要 0.4413 秒。
Shapely Library
對於對於更複雜的幾何運算,shapely函式庫提供了專門的函數。然而,對於點包含測試的特定任務,matplotlib 方法仍然是最快、最有效的選擇。
像素容差網格
如果所需的精度在「像素」容差,使用NumPy 布林網格來表示多邊形內的點可以提供更快的性能。這種方法涉及用布林值填充網格,其中多邊形內的點被標記為 True。然後可以使用該網格快速確定後續點是否落在多邊形內。
以上是哪種方法占主導地位:光線追蹤與 Matplotlib 用於多邊形中的點包含?的詳細內容。更多資訊請關注PHP中文網其他相關文章!