问题:y=ax+b;
有很多线段{x0,y0,x1,y1}{x2,y2,x3,y3}{x4,y4,x5,y5}....{xn-1,yn-1,xn1,yn}
(xi,yi)在直线上,判断这些线段是否存在重合
思路:
首先,知道x可以根据y=ax+b算出y,又因为是直线,所以x与y是一一对应的
如果{xi,yi,xi+1,yi+1}与{xj,yj,xj+1,yj+1}有重合区域, 0<=i,j<n
那么这两条线段投影到x轴上也是有重合区域的,如果没有重合区域,那么投影也不会有重合区域
这样就可以将原问题转化成x轴上的线段是否有重合区域,与y无关了。
问题就变得简单了,直线在x轴上的投影就是短点的x轴坐标{xi,yi,xi+1,yi+1}投影到x轴变成了{xi,xi+1}
将x轴上的所有线段按照起始点的值升序排序,然后按照线段起始点、终点、起始点、终点……遍历。如果是严格升序的,那么这些线段不存在重合,否则是存在重合区域的。
有很多线段{x0,y0,x1,y1}{x2,y2,x3,y3}{x4,y4,x5,y5}....{xn-1,yn-1,xn1,yn}
(xi,yi)在直线上,判断这些线段是否存在重合
思路:
首先,知道x可以根据y=ax+b算出y,又因为是直线,所以x与y是一一对应的
如果{xi,yi,xi+1,yi+1}与{xj,yj,xj+1,yj+1}有重合区域, 0<=i,j<n
那么这两条线段投影到x轴上也是有重合区域的,如果没有重合区域,那么投影也不会有重合区域
这样就可以将原问题转化成x轴上的线段是否有重合区域,与y无关了。
问题就变得简单了,直线在x轴上的投影就是短点的x轴坐标{xi,yi,xi+1,yi+1}投影到x轴变成了{xi,xi+1}
将x轴上的所有线段按照起始点的值升序排序,然后按照线段起始点、终点、起始点、终点……遍历。如果是严格升序的,那么这些线段不存在重合,否则是存在重合区域的。