A. Introduction

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

A. Introduction

计算几何 · 06. Point Location

按 空格/→ 演示下一步

问一句
1 / 8 页

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

数学大学

A. Introduction

计算几何 · 06. Point Location

1第 1 页 · A. Introduction

Where Am I

点定位问题:给定平面细分与查询点,回答「我在哪个面里」。

输入
平面细分结构 + 查询点坐标
输出
包含查询点的面(或边/顶点)
2第 2 页 · Where Am I

Assumptions For Clarity

为清晰起见的假设:查询点不在边上、细分是连通的。

不在边上
边界情形可先做局部检验
连通
非连通细分拆成多个子图分别处理
3第 3 页 · Assumptions For Clarity

Input Size

输入规模:细分的边数 n 决定预处理与查询的复杂度量级。

规模 n
边数(近似等于顶点数 + 面数)
量级目标
查询 O(log n)、空间 O(n) 是理想目标
4第 4 页 · Input Size

Performance Measurements

性能度量三件套:查询时间、预处理时间、存储空间。

查询
单次点定位的时间
预处理
建数据结构的一次性成本
空间
数据结构占用的存储
5第 5 页 · Performance Measurements

A Global View

全局视角:点定位是一切「先定位再操作」几何算法的前置组件。

前置组件
地图导航、CAD 拾取、游戏命中检测都靠它
目标结构
静态用最优结构,动态用适应性结构
6第 6 页 · A Global View

本节要点

  • ✓点定位:回答「我在哪个面」
  • ✓三度量为纲:查询、预处理、空间
  • ✓理想目标:O(log n) 查询、O(n) 空间
延伸主题:明确自己场景的度量优先级复习平面细分结构
7第 7 页 · 本节要点

课后思考

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

1点定位为什么是「前置组件」而不是独立问题?

参考答案绝大多数几何应用(地图拾取、网格插值、碰撞检测)都要先知道「查询点落在哪个单元」才能取出对应数据做后续计算。定位质量与速度直接决定上层算法的体验。

2「查询点恰在边上」的边界情形怎么处理?

参考答案三种约定:任选一侧、两侧都返回、或单独返回边本身。实现上在定位结构的比较中用严格/非严格不等式控制走左还是走右,最后加一个点在边上的显式检查即可。

3非连通细分为什么能「拆成子图」处理?

参考答案不同连通分量之间没有任何邻接关系,查询点只会落在其中一个分量里。对每个分量独立建定位结构,查询时依次尝试(或用外层索引跳到候选分量),正确性与单分量一致。

8第 8 页 · 课后思考