sweeping line algorithm -- calculate line segment intersections
2015-01-11 17:26
369 查看
转自:http://blog.csdn.net/sunmenggmail/article/details/7994299
将所有线段的左右端点以X坐标升序放入顶点优先队列中,然后初始化扫描线链表(查找二叉树)
依次取出顶点优先队列中的点,
1 左端点:将其线段插入到扫描线链表中,按照y的升序排列链表,找到在此线段上面相邻和下面相邻的线段,并依次计算此线段与其上面线段的交点,和此线段与其下面线段的交点,如果有交点,并且顶点队列中没有出现过,插入到顶点优先队列中;
2 右端点:将其线段从扫描线队列中删除,计算此线段上面相邻的线段与下面相邻的线段的交点,如果有交点,并且没有在顶点队列出现过,将交点插入到顶点优先队列中
3 交点:输出该交点,交换此交点所属的两条线段的位置,并分别计算这两条线段与他们的相邻线段的交点,插入的顶点优先队列中
(n+k)logn
k为交点数目,n为线段数量
将所有线段的左右端点以X坐标升序放入顶点优先队列中,然后初始化扫描线链表(查找二叉树)
依次取出顶点优先队列中的点,
1 左端点:将其线段插入到扫描线链表中,按照y的升序排列链表,找到在此线段上面相邻和下面相邻的线段,并依次计算此线段与其上面线段的交点,和此线段与其下面线段的交点,如果有交点,并且顶点队列中没有出现过,插入到顶点优先队列中;
2 右端点:将其线段从扫描线队列中删除,计算此线段上面相邻的线段与下面相邻的线段的交点,如果有交点,并且没有在顶点队列出现过,将交点插入到顶点优先队列中
3 交点:输出该交点,交换此交点所属的两条线段的位置,并分别计算这两条线段与他们的相邻线段的交点,插入的顶点优先队列中
(n+k)logn
k为交点数目,n为线段数量
相关文章推荐
- Division of Line Segment
- scan line polygon fill algorithm
- LSD:a Line Segment Detector 直线段检测算法
- line segment and point
- LSD(line segment detect)基于opencv的代码
- Bresenham line algorithm
- Tarjan’s off-line lowest common ancestors algorithm
- 【转】 LSD(Line Segment Detector) 直线段检测算法学习~
- Algorithm - Line up Soldiers
- 目标检测之线段检测---lsd line segment detector
- threejs linesegment的拾取实验
- OSG LineSegmentIntersector进行碰撞检测
- LSD(Line Segment Detector) 直线段检测算法
- 论文回顾之一 一种新的直线段检测算法---LSD:a Line Segment Detector
- How to determine which grid cells a line segment passes through?
- Line论文中的Alias Sampling Algorithm 分析
- Bresenham's line and circle algorithm
- SICP(1985) ex2-2 line-segment
- Bresenham_line_algorithm.c
- Lesson 1: Bresenham’s Line Drawing Algorithm