【问题标题】:How to check if a line segment intersects a simple polygon如何检查线段是否与简单多边形相交
【发布时间】:2016-03-26 23:25:37
【问题描述】:

我正在尝试实现 De Berg 等人的 Computational Geometry 书中的可见性图算法。你可以在这里找到算法:http://cs.smith.edu/~streinu/Teaching/Courses/274/Spring98/Projects/Philip/fp/algVisibility.htm

VISIBLE 算法的第一行有问题:

if pwi intersects the interior of the obstacle of which wi is a vertex, locally at wi then return false

这本书指出它应该花费 O(lg n) 时间(其中 n 是平面上的所有点),但它没有解释如何进行检查。我发现的算法需要与多边形顶点数相关的线性时间。

感谢任何帮助。

【问题讨论】:

  • 那么问题是什么?
  • 他/她想知道如何在 O(log n) 时间内完成。但我认为这是不可能的。

标签: algorithm geometry 2d computational-geometry


【解决方案1】:

我相信您所关心的步骤最多需要 O(log n) 时间, 因为您可以对 wi 为顶点的障碍物使用二分搜索。

【讨论】:

  • 你的意思是在 w 数组中进行二分查找吗?寻找什么?我没看到。
  • 我想我明白了。假设 p 是多边形的一个顶点,qr 是它们在多边形中的相邻顶点,那么对于所有顶点 v 在 w 数组中的 qr 之间,段 pv 将位于多边形内。并且多边形中不可见的所有其他顶点将有一条线段阻挡它们。对吗?
  • 我刚刚测试了它,它似乎工作。谢谢!顺便说一句,喜欢你的工作。
  • @user5701449:谢谢! :-)
猜你喜欢
  • 2021-07-13
  • 1970-01-01
  • 2014-01-24
  • 2021-02-21
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
相关资源
最近更新 更多