有人能向我解释一下什么是扫线吗?我有数学和几何的基础知识。请试着用我最可能理解的语言解释。
此外,一个关于如何在某些程序(最好是Java)中实现它的编码示例也很好。
非常感谢
查看@Josiah的链接,但其想法基本上是这样的:
"扫过"一条穿过空间(可能是2D)的线,并在遇到点、顶点或其他对象时采取一些行动。您可以将其用于
-
围绕点云构建边界形状
-
收缩包裹点以获得凸多边形,
-
生成Voronoi图(参见上面wiki链接中的示例)
-
执行原始波模拟(扫描线或波前遇到的点会对波形造成干扰)
-
可见性确定:在起始扫掠线上拾取一个查看器位置(甚至多个查看器位置)。每次遇到对象时,从查看器位置通过遇到的对象的外部边界生成一个圆锥体或其他体积,表示遇到点"后面"的区域。
-
2D/3D排序,尽管这远不是最有效的排序方式,
-
可能有很多事情我都没想到。
更新
对于多边形相交,最好使用"分离轴测试"。(有关Java示例,请参阅此链接。)
此外,请参阅此链接,了解该算法的不那么模糊的概述。