“仿射空间提供坐标背景,方向判定是二维算法的核心原语。扫描线范式按一个坐标推进事件并维护横截面次序;随机增量构造随机打乱对象,以冲突图把重建成本计入期望。面对预处理后的查询,正交范围搜索报告轴…”
形式陈述
模型
在计算几何中,本页的层级构造先取平面嵌入图的有限直线段细分,规模
地图行政区落点是典型实例。Point-in-polygon 只对一个多边形判断内外;point location 对共享边的全部面统一预处理。三角剖分、单调细分和一般细分可采用不同结构,复杂度不能只写一个“二分搜索”概括。
Kirkpatrick 预处理
先把 subdivision 三角剖分,并包在一个严格包含原有全部有限线段的固定外三角形内。保留原面、原边与原顶点的标识,外三角形的三个顶点不参加删除。每轮在当前平面图中选择一组互不相邻的低度顶点,删除它们,再把留下的多边形洞重新三角化。被删顶点互不相邻,使各重三角化区域不会互相干扰;低度则限制新旧三角形之间的覆盖数。
具体地,由平面图 Euler 边数界与握手引理,含
每个粗层三角形只记录与下一细层具有二维内部重叠的三角形;相同未改变的三角形也保留一条对应链接。不能把只在边或顶点接触也算进候选,否则一个未删的高阶顶点就可能带来许多无关三角形。每份局部洞至多涉及常数个旧三角形,所以这些候选数量有统一常数界。这个常数候选性质来自低度删除及局部重三角化,不是“递归层级”四个字自动带来的。
查询状态演化
若查询点在外三角形之外,直接返回原细分的唯一无界面;其余查询从最粗层外三角形开始。假设当前三角形为
例如地图点先落在覆盖整个城区的粗三角形;下一层候选只来自该三角形覆盖的几个街区三角形;继续下降后定位到两条道路与河岸围成的原始面。查询不会在每层重新扫描整张地图,状态只有当前三角形及其候选表。
预处理接口应保存原三角形到 subdivision 面的映射,因为输入面可能被对角线拆成多个三角形。最后一步返回的是原面标识,而非任意一个内部三角形编号。若查询点恰为最细三角形的原顶点,则读取该顶点预存的、去重后的 incident-face 列表;若在原边内部,则读取其一侧或两侧的不同原面。辅助对角线与新增外框不应被误报成原细分边界。全部去重列表的总长度为
直觉
Kirkpatrick 层级反复删去一批互不相邻的低度顶点,把细分压成几何级缩小的粗图。低度与独立性保证一个粗三角形只覆盖常数个下一层候选,因此查询只携带当前三角形逐层下降,而不用在每层重新搜索整张平面图。
例子与边界
边界谓词
三角形包含测试由方向测试组成。查询点恰在行政边界时,
实现可用精确整数谓词、自适应精度算术或一致的 symbolic perturbation。应同时报告构建时间、空间、查询时间和计算模型;“线性空间、对数查询”不表示任意退化坐标在普通浮点上都安全。
推论与应用
结构边界
若删除集不是独立,两个重三角化洞可能重叠,跨层关系不再局部;若允许无界度顶点进入删除集,一个粗三角形可能对应过多细候选。动态插边或移动顶点会改变多层三角剖分,静态 Kirkpatrick 结构不直接支持这种更新。
已知有界查询窗口内的 Voronoi 最近邻可先把图裁到窗口,再用点定位查询所属单元;距离语义来自 Voronoi 图。全平面 Voronoi 图含无界射线,外框之外通常有多个单元,不能直接沿用本页有限线段版本的“框外只有一个原面”分支;需要额外的无界区域搜索。
给定已三角化的有序嵌入表示后,层级构建可在线性时间完成;一般细分还要计入初始三角化,标准总预处理界为
参考资料
- David Kirkpatrick,Optimal Search in Planar Subdivisions,SIAM J. Comput. 12(1),1983,§3 Lemmas 3.1–3.3 与 §4:低度独立集、常数候选层级,以及一般细分的初始三角化。
- de Berg et al., Computational Geometry: Algorithms and Applications, 3rd ed., Springer, 2008, point location.