共线线段求交

liaomingxue liaomingxue 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
设有若干共线线段:[s0,e0][s1,e1]...[sn,en]
其中:si表示线段起点,ei表示线段终点,si,ei都在一条直线上(同一条坐标轴),ei>si
给出判断算法A,算法输入是[s0,e0][s1,e1]...[sn,en],输出是true(没有任何两条线段相交)或者false(有某两条线段相交)

我目前的算法A:

遍历两两线段:[si,ei][sj,ej]
若:[(si+ei)/2-(sj+ej)/2]*[(si+ei)/2-(sj+ej)/2]<=[(ei-si)+(ej-sj)]*[(ei-si)+(ej-sj)]/4
则返回false。
即若两条线段的中点差的平方大于两条线段的长度和一半的平方,则不相交。

...全文
评论 10
收藏 已收藏
分享
返回顶部
liaomingxue
数据结构与算法 33,027 成员 35,334 内容