G. Convex Polygon Intersection Detection

官官方数学老师·9 页·深入(追求细节与边界)·0 次浏览·32 天前
数学大学

G. Convex Polygon Inters

计算几何 · 02. Geometric Intersection

按 空格/→ 演示下一步

问一句
1 / 9 页

全部页面点击任意一页,跳回舞台从这页播放

数学大学

G. Convex Polygon Inters

计算几何 · 02. Geometric Intersection

1第 1 页 · G. Convex Polygon Inters

Problem Specification

凸多边形相交检测的问题规范:判定两个凸多边形是否相交(含边界接触)。

输入
两个按序给出的凸多边形顶点序列
输出
是否相交的布尔判定
2第 2 页 · Problem Specification

Monotone Partitioning

单调划分:两个凸多边形都可按某方向切成单调链,便于同步扫描。

单调链
沿链一个坐标单调变化的顶点序列
作用
把二维相交判定降为链上的同步推进
3第 3 页 · Monotone Partitioning

Criterion

不相交判据:存在一条分离线使两多边形分居两侧——投影区间不重叠。

分离轴
任一边的法向作为候选分离轴
判定
某轴上投影区间不重叠即不相交
4第 4 页 · Criterion

Decrease-And-Conquer

减治式检测:每步排除一条边或一个顶点,逐步缩小待查范围。

推进
按极角或 y 序轮换推进两多边形的指针
终止
发现分离轴或找到交点即停
5第 5 页 · Decrease-And-Conquer

Example Cases

典型情形:分离、边界接触、一个包含另一个、交错相交四种形态。

分离与接触
仅边界相触也算相交(按规范约定)
包含情形
一个多边形完全在另一个内部,无交点但仍相交
6第 6 页 · Example Cases

Complexity

复杂度:两多边形边数 m、n 时,同步推进检测为 O(m+n)。

线性
指针各走一圈即判定完毕
对比
优于逐边两两测试的 O(mn)
7第 7 页 · Complexity

本节要点

  • ✓凸多边形相交检测可 O(m+n)
  • ✓分离轴判据:投影不重叠即分离
  • ✓四种形态:分离、接触、包含、交错
延伸主题:实现线性相交检测构造包含与接触用例测试
8第 8 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1为什么凸性让相交检测能降到线性?

参考答案凸多边形的边界方向单调变化,两条边界的相对位置关系不会反复穿越——双指针同步推进时每个指针至多走一圈。凹多边形则可能反复进入退出,线性推进失效。

2同步推进法中两个指针的「步进条件」如何设计?

参考答案比较当前两边的位置关系(如 y 坐标大小):较低的那条边的指针前移一步。每步都保持「已处理部分不可能产生相交」的不变式,直到发现相交或某指针走完。

3包含情形(一个多边形在另一个内部)为什么对分离轴判定是难点?

参考答案包含时两多边形的所有边都不相交,边测试全部通过「不相交」,容易误判为分离。必须额外检查一个多边形的任一顶点是否落在另一个内部,才能区分「分离」与「包含」。

9第 9 页 · 课后思考