当前课程知识点:计算几何 > 02. Geometric Intersection > D. BO Algorithm: Strategy > 02-D-04. Possible Cases
那么正如我们前面所讲的
扫描线状态结构也好
Event Queue也罢
都会随着算法的进行
进行动态地变化
我们刚才也讲到了
发生变化的无非是那两大类
三小类情况
那么具体来说
这些可能的情况有哪些呢
又当分别如何的对我们
刚才所说的两个数据结构
来进行逻辑上的更新呢
我们首先来看
同样假设我们的Sweep Line
在某个时刻扫到了这个位置
我们先来看第一种情况
也就是它碰到了
某一条线段的左端点
在这个时候我们将会看到
如果把时钟再向后拨0.01秒
那么这条线段
就会加入到status structure中
的确如此
所以在这个时候
我们确实就要做这么一个
insertion操作
将这条线段插入到
当前扫描线的状态结构中
除此之外呢
我们还要做一些事情
虽然我们现在还不完全理解
但是我们会知道
我们最后的目的是要来找出
所有的交点
而在每当你有一个新的事件出现
并且你把它进行了处理之后
有可能就会预示着
有一些新的交点会被发现
哪些交点呢
你可以想象的到
应该就是那些潜在的
与这条新加入的线段
可能相交的那些线段
所构成的交点
谁呢
无非就是在这条线段加入之后
它的前驱和后继
或者准确的讲
它的直接前驱和直接后继
所以在这样的一个事件点的位置上
我们不仅要将这条线段加进来
而且要拿这条线段
与它在status structure中的
前驱与后继
分别的做一次
potential intersection detection
看看它们是否真的有交
如果没有交 还则罢了
如果有交 实际上我们还需要做
特定的处理
等会儿我们再继续详谈这个问题
好 假设我们说
对这种情况
我们大致的处理
主要就是这些
那你马上就会想到
我们还有第二种情况
也就是说当我的扫描线
自左向右扫过来之后
有可能抵达某个位置
需要停留的话
这个事件对应的是
某一条线段的右端点
同样用我们刚才的那种
假想的方法
试想着在这个时刻之后的
0.0001秒
会发生什么情况呢
没错 这条线段将会从
原来的status structure中
退出来
quit出来
所以就因为这个原因
在这种情况下
我们需要把这条线段
从状态结构中删除
同样这个问题
在删除了这个线段之后
整个status structure
之间的元素
虽然组成总体没变
但他们的相对关系
有可能会有变化
什么变化呢
你应该记得我们上次
讲到的邻近性
对 有可能会有
比如说这样两条线段
此前不是紧邻的
可是因为e这条边的quit
它们变成了紧邻的
而我们前面讲过
一旦两条线段在扫描线上
变成紧邻的
这就是它们相交的必要条件
虽然还不是充分条件
所以在这个时候
无论如何我们还是有必要
对它们同样要做一次
potential intersection detection
如果没有交还则罢了
如果有交
我们不仅要把它报告出来
实际上同样也要做一些
进一步的处理
同样我们也把这个问题
留到后面再来解决
所以我们依然可以说
总体来看
在这样的一个右端点事件处
我们要做的工作是一次removal
和一次detection
好 现在我们再来看第三种情况
最后一种情况
也就是说我们的扫描线
在自左向右扫描
抵达某一个位置的时候
它会发现这个位置
实际上是此前所发现
并且记录下来的某个交点
它自己就是个交点
我们前面讲过
在这样的一个时刻
构成这个焦点的那两条线段
在扫描线上的次序
会发生一次逆转
具体的就这个例子而言
原来是f大于e
在经过了这次事件之后
就会变成f小于e
二者的次序颠倒了
在这个时候
我们相应要做的工作
也就不难理解了
我们首先要做一个
将e和f在status structure中
颠倒过来
这样一个颠倒
虽然并不改变status structure中
所存的那个线段子集
但是其中确实
会有些线段的邻近关系
会发生变化
我们说了
这是发生交点的潜在的必要条件
那么哪些会发生变化呢
我们看到f此前的那个后继
在此后就会变成e的直接后继
这二者会变成相邻
所以他们之间
有可能比如像这样
会有一个交点
所以在这个时候
我们需要做一个test
来判定二者之间是否真的
像这个图中所给的这个例子一样
存在一个交点
如果没有还则罢了
如果有要把它记录下来
并且要做进一步的处理
好 对称的
在此之前e的那个直接前驱
在经过了
这次事件的0.001秒以后
就会变为f的直接前驱
这二者也会变成相邻
所以在这个时候
我们同样要来做一次detection
来判定是否也会存在
比如这样的一个交点
OK 这样的话
我们就把整个这个算法
所可能碰到的三种情况
它的主要的处理流程
给大家介绍了
那么这里需要再次重复的是
我们为了判断任何两条线段
是否真正有一个交点
所需要的时间成本是常数的
请记住
为此我们只需要
至多做四次To-Left-Test
-Before we start
--html
-Evaluation
--html
-Online Judge
--html
-Lecture notes
--html
-Discussion
--html
-A. History of This Course
--00-A. History of This Course
-B. What's Computational Geometry
--00-B. What's Computational Geometry
-B. What's Computational Geometry--作业
-C. How to Learn CG Better
--00-C. How to Learn CG Better
-C. How to Learn CG Better--作业
-D. Why English
-A. Convexity
-A. Convexity--作业
-B. Extreme Points
-B. Extreme Points--作业
-C. Extreme Edges
-C. Extreme Edges--作业
-D. Incremental Construction
--01-D-01. Decrease and Conquer
--01-D-02. In-Convex-Polygon Test
--01-D-03. Why Not Binary Search
-D. Incremental Construction--作业
-E. Jarvis March
--01-E-06. Lowest-Then-Leftmost
-E. Jarvis March--作业
-F. Lower Bound
--01-F-02. CAO Chong's Methodology
-F. Lower Bound--作业
-G. Graham Scan: Algorithm
-G. Graham Scan: Algorithm--作业
-H. Graham Scan: Example
-H. Graham Scan: Example--作业
-I. Graham Scan: Correctness
-I. Graham Scan: Correctness--作业
-J. Graham Scan: Analysis
-J. Graham Scan: Analysis--作业
-K. Divide-And-Conquer (1)
-K. Divide-And-Conquer (1)--作业
-L. Divide-And-Conquer (2)
--01-L-03. Topmost + Bottommost ?
--01-L-07. More Considerations
-L. Divide-And-Conquer (2)--作业
-M. Wrap-Up
-0. Introduction
-0. Introduction--作业
-A. Preliminary
-A. Preliminary--作业
-B. Interval Intersection Detection
-B. Interval Intersection Detection--作业
-C. Segment Intersection Reporting
-C. Segment Intersection Reporting--作业
-D. BO Algorithm: Strategy
--02-D-01. Proximity & Separability
--02-D-02. Comparability & Ordering
-D. BO Algorithm: Strategy--作业
-E. BO Algorithm: Implementation
--02-E-03. Events & Operations
-E. BO Algorithm: Implementation--作业
-F. BO Algorithm: Analysis
--02-F-04. Complexity of Event Queue
--02-F-05. Complexity of Status Structure
-F. BO Algorithm: Analysis--作业
-G. Convex Polygon Intersection Detection
--02-G-01. Problem Specification
--02-G-02. Monotone Partitioning
--02-G-04. Decrease-And-Conquer
-G. Convex Polygon Intersection Detection--作业
-H. Edge Chasing
--02-H-01. Eliminating Sickles
-H. Edge Chasing--作业
-I. Plane Sweeping
-I. Plane Sweeping--作业
-J. Halfplane Intersection Construction
-J. Halfplane Intersection Construction--作业
-0. Methodology
-0. Methodology--作业
-A. Art Gallery Problem
--03-A-02. Lower & Upper Bounds
--03-A-04. Approximation & Classification
-A. Art Gallery Problem--作业
-B. Art Gallery Theorem
--03-B-01. Necessity of floor(n/3)
--03-B-02. Sufficiency by Fan Decomposition
-B. Art Gallery Theorem--作业
-C. Fisk's Proof
--03-C-04. Pigeon-Hole Principle
-C. Fisk's Proof--作业
-D. Orthogonal Polygons
--03-D-01. Necessity of floor(n/4)
--03-D-02. Sufficiency by Convex Quadrilateralization
-D. Orthogonal Polygons--作业
-E. Triangulation
-E. Triangulation--作业
-F. Triangulating Monotone Polygons
--03-F-02. Monotonicity Testing
--03-F-04. Stack-Chain Consistency
-F. Triangulating Monotone Polygons--作业
-G. Monotone Decomposition
-G. Monotone Decomposition--作业
-I. Tetrahedralization
--03-I-01. Polyhedron Decomposition
--03-I-02. Schonhardt's Polyhedron
-I. Tetrahedralization--作业
-A. Introduction
--04-A-02. Dining Halls on Campus
--04-A-03. More Analogies & Applications
-A. Introduction--作业
-B. Terminologies
--04-B-02. Intersecting Halfspaces
--04-B-04. Planar Voronoi Diagram
-B. Terminologies--作业
-C. Properties
--04-C-03. Nearest = Concyclic
--04-C-04. Number of Nearest Sites = Degree
-C. Properties--作业
-D. Complexity
-D. Complexity--作业
-E. Representation
-E. Representation--作业
-F. DCEL
-F. DCEL--作业
-G. Hardness
--04-G-03. Voronoi Diagram In General Position
-G. Hardness--作业
-H. Sorted Sets
--04-H-01. Convex Hull Made Easier
--04-H-02. Convex Hull As A Combinatorial Structure
--04-H-03. Voronoi Diagram As A Geometric Structure
-H. Sorted Sets--作业
-I. VD_sorted
--04-I-06. Sorting Not Made Easier
-I. VD_sorted--作业
-J. Naive Construction
-J. Naive Construction--作业
-K. Incremental Construction
-K. Incremental Construction--作业
-L. Divide-And-Conquer
--04-L-09. Intersecting with Cells
-L. Divide-And-Conquer--作业
-M. Plane-Sweep
--04-M-09. Circle Event: What, When & Where
-M. Plane-Sweep--作业
-A. Point Set Triangulation
-A. Point Set Triangulation--作业
-B. Delaunay Triangulation
-B. Delaunay Triangulation--作业
-C. Properties
-C. Properties--作业
-D. Proximity Graph
--05-D-02. Relative Neighborhood Graph
-D. Proximity Graph--作业
-E. Euclidean Minimum Spanning Tree
-E. Euclidean Minimum Spanning Tree--作业
-F. Euclidean Traveling Salesman Problem
-G. Minimum Weighted Triangulation
-G. Minimum Weighted Triangulation--作业
-H. Construction
--05-H-03. Maximizing The Minimum Angle
--05-H-04. Evolution By Edge Flipping
-H. Construction--作业
-I. RIC With Example
-I. RIC With Example--作业
-J. Randomized Incremental Construction
--05-J-01. Recursive Implementation
--05-J-02. Iterative Implementation
-J. Randomized Incremental Construction--作业
-K. RIC Analysis
--05-K-04. Types Of Edge Change
--05-K-05. Number Of Edge Changes
--05-K-07. Number Of Rebucketings
--05-K-08. Probability For Rebucketing
--05-K-10. Further Consideration
-0. Online/Offline Algorithms
--06-0. Online/Offline Algorithms
-0. Online/Offline Algorithms--作业
-A. Introduction
--06-A-03. Assumptions For Clarity
--06-A-05. Performance Measurements
-A. Introduction--作业
-B. Slab Method
--06-B-02. Ordering Trapezoids
-B. Slab Method--作业
-C. Persistence
--06-C-01. Ephemeral Structure
--06-C-02. Persistent Structure
-C. Persistence--作业
-D. Path Copying
--06-D-03. Storage Optimization
-D. Path Copying--作业
-E. Node Copying
-E. Node Copying--作业
-F. Limited Node Copying
-G. Kirkpatrick Structure
--06-G-01. Optimal And Simpler
--06-G-06. The More The Better
--06-G-07. The Fewer The Better
--06-G-09. Existence Of Independent Subset
--06-G-10. Construction Of Independent Subset
-G. Kirkpatrick Structure--作业
-H. Trapezoidal Map
--06-H-03. Properties & Complexity
--06-H-04. Search Structure: Example
--06-H-05. Search Structure: Nodes
--06-H-06. Search Structure: Performance
-H. Trapezoidal Map--作业
-I. Constructing Trapezoidal Map
--06-I-04. Case 1: Two Endpoints
--06-I-05. Case 2: One Endpoint
--06-I-06. Case 3: No Endpoints
-J. Performance Of Trapezoidal Map
--06-J-03. Number Of Ray Trimmed
--06-J-04. Number Of Trapezoidals Created (1)
--06-J-05. Number Of Trapezoidals Created (2)
--06-J-06. Time For Point Location
--06-J-07. Size Of Search Structure
--06-J-08. Fixed Query Point + Randomly Created Maps
--06-J-10. Probability Of Enclosing Trapezoid Changed
-A. Range Query
--07-A-01. 1-Dimensional Range Query
-A. Range Query--作业
-B. BBST
--07-B-02. Lowest Common Ancestor
-B. BBST--作业
-C. kd-Tree: Structure
-C. kd-Tree: Structure--作业
-D. kd-Tree: Algorithm
-D. kd-Tree: Algorithm--作业
-E. kd-Tree: Performance
--07-E-01. Preprocessing Time + Storage
-E. kd-Tree: Performance--作业
-F. Range Tree: Structure
--07-F-03. x-Query * y-Queries
-F. Range Tree: Structure--作业
-G. Range Tree: Query
-G. Range Tree: Query--作业
-H. Range Tree: Performance
-H. Range Tree: Performance--作业
-I. Range Tree: Optimization
--07-I-04. Fractional Cascading
-A. Orthogonal Windowing Query
-A. Orthogonal Windowing Query--作业
-B. Stabbing Query
-C. Interval Tree: Construction
-C. Interval Tree: Construction--作业
-D. Interval Tree: Query
-D. Interval Tree: Query--作业
-E. Stabbing With A Segment
--08-E-03. Query Algorithm (1)
--08-E-04. Query Algorithm (2)
-F. Grounded Range Query
--08-F-03. 1D-GRQ Using Range Tree
--08-F-04. 1D-GRQ By Linear Scan
-G. 1D-GRQ Using Heap
-G. 1D-GRQ Using Heap--作业
-H. Priority Search Tree
--08-H-03. Sibling Partitioning
-H. Priority Search Tree--作业
-I. 2D-GRQ Using PST
-I. 2D-GRQ Using PST--作业
-J. Segment Tree
--08-J-01. General Windowing Query
--08-J-02. Elementary Interval
--08-J-06. Solving Stabbing Query
--08-J-11. Constructing A Segment Tree
--08-J-12. Inserting A Segment (1)
--08-J-13. Inserting A Segment (2)
--08-J-14. Inserting A Segment (3)
-K. Vertical Segment Stabbing Query