谁可以向我推荐一款良好的扫描算法,这对双倍数据有很好的效果? 一些文档,方法,任何东西。
这是用于检测二维空间中的图的交点的扫描算法。图表始终关闭。
答案 0 :(得分:1)
http://www.amazon.com/Computational-Geometry-Algorithms-Applications-Second/dp/3540656200中的那个非常好。
测试交叉路口的扫描线非常简单。这是一篇可以帮助您入门的论文:http://www.cs.umd.edu/~mount/Papers/crc-intersect.pdf。
答案 1 :(得分:0)
问题是3实现在整数或双倍数据上运行时间不长,但是当我在表示图形的数据上尝试这3个实现中的任何一个时,我每次都得到不同的结果,甚至不是好的
我是否拥有我想要的所有交叉点,但是图表中的其他点(不是交点)
我是否从图表中得到一些点作为结果,但计算结果中缺少一些我需要的交叉点
我是否只需要交叉点
这一切都取决于我看到的排序功能,也许取决于其他东西,但我无法理解。 sort函数按如下顺序排列图的边缘:
将两条边指定为E1(Vstart,Vend), E2(Vstart,Vend)
:
x.E1.Vstart<x.E2.Vstart or
x.E1.Vstart==x.E2.Vstart and y.E1.Vstart<y.E2.Vstart or
x.E1.Vstart==x.E2.Vstart and y.E1.Vstart==y.E2.Vstart and slope(E1)<slope(E2)
我认为这种排序功能对单色性和其他情况有好处,但显然它只适用于某些情况,除了常规交叉点之外它还检测到其他一些交叉点;在某些情况下,它确实起作用,因为它不会计算所有的交叉点,而只是图中的某些点。