从边界点计算可见度多边形

时间:2019-09-16 19:26:05

标签: computational-geometry cgal

我正在使用CGAL库从简单多边形P中的点p计算可见性多边形,其中p在P的边界内。 我使用的是“ Simple_polygon_visibility_2”类,计算可见性多边形时,结果似乎是错误的。我在附件中同时发送了多边形P和生成的可见性多边形。 在此示例中,我有兴趣从标记为“ 7”的顶点中找到可见性多边形。如您所见,生成的可见性多边形的边缘从“ 4”到“ 5”(因此,三角形“ 7-4-5”)无效,因为该三角形不是P的一部分。

我已经阅读了乔和辛普森的论文,他们提到:

  

“对于边界视点z,我们将P的顶点定向为   逆时针排序并将其标记为z,v_0,v_1,...,v_ {n-1},v_n   和z,其中v_0是z的后继顶点,而v_n是   z的前顶点。我们还假设坐标系是   平移和旋转,以使z位于原点,而v_0位于   正x轴”

我认为这可能是问题所在,因为我不确定CGAL的实现是否测试查询点是否在边界上,如果是,则将其视为特殊情况。 如果是这样,我是否必须事先进行平移/旋转?

polygon visibility

1 个答案:

答案 0 :(得分:1)

实际上,这是我的错误。由于该点在边界内,因此它既不属于内表面也不属于外部面(当排列是简单多边形时)。因此,我应该使用包含查询点的半边沿作为参数的方法,而不是使用此版本的“ compute_visibility”方法。在这种情况下,它会按预期工作。

相关问题