扫描线算法-求线段交点数量


将所有线段的左右端点以X坐标升序放入顶点优先队列中,然后初始化扫描线链表(查找二叉树)

依次取出顶点优先队列中的点,

1 左端点:将其线段插入到扫描线链表中,按照y的升序排列链表,找到在此线段上面相邻和下面相邻的线段,并依次计算此线段与其上面线段的交点,和此线段与其下面线段的交点,如果有交点,并且顶点队列中没有出现过,插入到顶点优先队列中;

2 右端点:将其线段从扫描线队列中删除,计算此线段上面相邻的线段与下面相邻的线段的交点,如果有交点,并且没有在顶点队列出现过,将交点插入到顶点优先队列中

3 交点:输出该交点,交换此交点所属的两条线段的位置,并分别计算这两条线段与他们的相邻线段的交点,插入的顶点优先队列中


(n+k)logn  

k为交点数目,n为线段数量


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Bentley-Ottmann算法扫描线算法都是计算机科学领域中的几何算法,主要用于解决平面上的几何问题。 Bentley-Ottmann算法是一种用于线段交点问题的算法。它使用了扫描线的概念,通过扫描线从上到下遍历平面上的线段,并将其投影到水平的事件点序列上。在扫描线的过程中,通过维护一个有序的事件点集合以及一个有序的线段交点集合来找到所有的线段交点。该算法的时间复杂度为O((n+k) log n),其中n为线段数量,k为交点数量扫描线算法是一种通过扫描线的方式来解决一些几何问题的算法。其基本思想是将平面划分为许多水平的扫描线,并在每条扫描线上进行计算。算法从上到下按扫描线依次处理每个图形对象,记录下与当前扫描线相交的图形边界,并根据需要更新一些数据结构来保存相关信息。在处理完所有图形对象后,可以得到所需要的结果。扫描线算法主要应用于计算几何、计算机图形学等领域中的问题,例如解多边形交集、寻找包含某一点的图形等。由于其简洁高效的特点,扫描线算法在计算机图形学中的应用非常广泛。 综上所述,Bentley-Ottmann算法扫描线算法都是用于解决平面上几何问题的算法。Bentley-Ottmann算法主要用于线段交点问题,而扫描线算法适用于处理一些特定的几何问题。这两种算法都是在计算几何和计算机图形学等领域中非常有用的工具。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值