首页  >  文章  >  后端开发  >  多边形中的点:光线追踪与 Matplotlib - 哪种方法获胜?

多边形中的点:光线追踪与 Matplotlib - 哪种方法获胜?

Susan Sarandon
Susan Sarandon原创
2024-11-03 12:27:29682浏览

 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn