口袋 Voronoi 图与树的层次聚类算法研究
1. 口袋 Voronoi 图相关算法
在计算口袋 Voronoi 图时,有诸多方面需要考虑。首先是一些必要条件和几何情况的处理。对于耳朵满足的必要条件 3 和 4,会有不同的情况。当考虑之前 b1 的 Delaunay 圆时,它必须为空,其圆心必须位于 b2 上第二个站点所在的一侧。在这一侧,根据站点类型,要么是 b1 的第二部分,要么是 b1 的第一和第三部分。若在第三部分,意味着远离交点,此时交点无效,对 b2 也会进行类似检查。
对于两条抛物线平分线的情况,会先计算第一和第三个站点之间的线平分线,然后找到这条线平分线与两条抛物线平分线中较细的那条的交点,从而将此情况转化为一条线和一条抛物线平分线的情况。
1.1 几何基元
- 边侧性基元 :通常判断点 C 相对于由 A 和 B 定义的直线的位置,会测试行列式的符号(平行四边形的有符号面积)。但为了提高鲁棒性,采用基于斜率的伪角度,将 2π 划分为 8 个 π/4 弧度的扇区,把角度 θ ∈(0, π/4) 映射到伪角度(斜率)m ∈(0, 1),每个角度 θ 映射到 0 到 8 之间的伪角度。虽然这种方法不如标准有符号面积测试高效,但在处理面积非常小的情况时更鲁棒。例如,当点 A 和 B 彼此非常接近,相对于到点 C 的距离时,无论点 C 在哪里,面积都很小,可能导致不一致的结论。又如,当缓慢转弯的曲线用线段精细近似时,基于面积计算的基元会认为任意两个连续线段共线,可能导致错误推断。
- 两条直线的交点 :通过求解方程找到一个坐标,然后使用第一条直
超级会员免费看
订阅专栏 解锁全文
20

被折叠的 条评论
为什么被折叠?



