检查多边形中的点包含:性能比较
识别点是否落在多边形内是 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中文网其他相关文章!