线段重合问题

问题: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轴上的所有线段按照起始点的值升序排序,然后按照线段起始点、终点、起始点、终点……遍历。如果是严格升序的,那么这些线段不存在重合,否则是存在重合区域的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值