Skip to main content
QUICK REVIEW

[论文解读] Efficient Computation of Visibility Polygons

Francisc Bungiu, Michael Hemmer|arXiv (Cornell University)|Mar 16, 2014
Computational Geometry and Mesh Generation参考文献 18被引用 22
一句话总结

本文提出了一种新颖的三角形扩展算法,用于在带孔的简单多边形域中计算可见性多边形,尽管理论最坏情况时间复杂度为 O(n²),但实际性能达到次线性。该方法采用基于三角剖分的递归策略,通过角度约束限制可见区域,相较于现有的 O(n) 和 O(n log n) 算法,在真实场景中性能提升高达两个数量级,尤其在挪威和大教堂等复杂输入上表现优异。

ABSTRACT

Determining visibility in planar polygons and arrangements is an important subroutine for many algorithms in computational geometry. In this paper, we report on new implementations, and corresponding experimental evaluations, for two established and one novel algorithm for computing visibility polygons. These algorithms will be released to the public shortly, as a new package for the Computational Geometry Algorithms Library (CGAL).

研究动机与目标

  • 为计算几何库中缺乏精确、完整且高效的可见性多边形算法实现提供解决方案。
  • 开发一种新算法,实现在复杂多边形环境(尤其是含孔区域)中可见性计算的高实用性性能。
  • 提供一个稳健、精确的计算框架,能够处理退化情况,并支持可配置输出(包括可见性天线)。
  • 评估并比较新算法与现有 O(n) 和 O(n log n) 方法在真实世界输入和最坏情况输入下的性能表现。

提出的方法

  • 三角形扩展算法利用输入多边形的三角剖分,递归地从查询点探索可见性圆锥区域,通过剪枝不可见区域。
  • 在每个递归步骤中,算法通过方向性测试判断新顶点是否位于由凹顶点定义的当前角度边界之内。
  • 该算法维护一个活动可见性圆锥栈,当某顶点位于左右角度边界之间时,触发递归分裂,产生两个递归调用。
  • 该方法利用了凹顶点可限制可见性圆锥的特性,即使在最坏情况下也能减少处理的三角形数量。
  • 算法采用精确算术实现,以处理退化情况,并支持可配置输出,包括可见性天线。
  • 预处理阶段包括多边形的三角剖分,时间与空间复杂度均为 O(n),并为查询处理期间的高效可见性圆锥遍历提供支持。

实验结果

研究问题

  • RQ1能否设计一种新颖的可见性多边形算法,在理论最坏情况时间复杂度为 O(n²) 的前提下,实现次线性的实际性能?
  • RQ2在真实世界输入和最坏情况输入下,三角形扩展算法与现有 O(n) 和 O(n log n) 算法的性能表现如何比较?
  • RQ3通过三角剖分进行预处理,在复杂多边形域中对可见性计算的查询效率提升程度如何?
  • RQ4为何现有主流计算几何库(如 CGAL)中仍缺乏可见性算法的完整或完整实现?

主要发现

  • 在挪威数据集(20,981个顶点)上,三角形扩展算法的平均查询时间仅为每顶点 0.18 ms,比 O(n) 的 Joe-Simpson 算法快逾 100 倍。
  • 在大教堂数据集(1,209个顶点)上,新算法的查询时间仅为每查询 0.004 ms,比旋转扫描算法快 100 倍以上。
  • 在最坏情况(存在 Θ(n) 个孔)下,算法时间复杂度达到 O(n²),但此类情况在实际中极为罕见,不主导整体性能表现。
  • 在挪威数据集上,三角形扩展算法比 O(n log n) 的旋转扫描算法快超过 100 倍,展现出卓越的实际效率。
  • 该实现为精确计算,能处理所有退化情况,并支持可配置输出(包括可见性天线),已具备生产环境集成至 CGAL 的条件。
  • 作者报告称,该算法是首个完整且精确的同类实现,计划随 CGAL 4.5 公开发布。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。