将一组线分成相交的段

时间:2016-12-15 12:38:28

标签: algorithm graphics

我有一组可能在某些点交叉的线条。每条线由至少2个点构成。我想要做的是在每条线与另一条线相交时将每条线分开并将所有线存储到列表中。在此结果列表中,可能没有任何线与另一条线相交。

Intersecting lines and resolved lines

交叉点可能只出现在线的点上,这使得交点检测变得微不足道(只是将每个点相互比较)。我认为非常具有挑战性的是找到一个能够解决这个问题的高性能算法。

感谢您的帮助!

编辑:行被表示为点,例如A =(0,0),(10,1),(20,2),(30,3),(35,4)和B =(12,-4),(10,1),(8, 5)

1 个答案:

答案 0 :(得分:1)

平面扫描算法。

在任何地方查找引用。

基本上,我们沿着x轴扫描,对于每个线段,将startx和endx存储为"事件"。对事件进行排序。然后你保留第二个排序列表" active"段,当您点击startx时将行添加到活动列表,并在您点击endx时将其删除。活动列表按y排序。所以你只需要一些实际的交叉测试,其中线条在x和y都重叠。