给定一个多边形S和一个位于S外的点p,想象一只只能沿着直线走向或远离p的蚂蚁。
对于某些形状(图1),可以选择p使得蚂蚁可以在两种可能性中的至少一种中无阻碍地移动:朝向(T)p,或远离它(A)。这个条件对应于从p的周长恰好相交0或2次的p投射的任何光线。
然而,对于相同的形状(图2),也可能存在导致阻挡(B)区域的点,其中蚂蚁将在其尝试移动的任何方向上碰撞多边形。对于其他形状(图2) 3)可能没有选择p导致没有阻塞区域。具有阻挡区域对应于从与S的周边相交的p投射的一些光线超过2次。
是否有算法确定某个p是否存在满足某个给定多边形S的条件?如果存在这样的点,它还可以确定包含它们的区域吗?
答案 0 :(得分:2)
找到多边形障碍物的所有凹角。对于每个角落,无限延伸其两个边缘。这两条光线之间的扇区,以及(如Nico Schertler所指出的)该扇区的点反射区域,定义了该点必须在哪里,以便障碍物不会隐藏角点形成点的光线。
在具有L形障碍物的示例中,存在一个凹角。其相邻边缘(右上角)与其点反射(左下角)之间的扇区形成一个区域(以红色表示),其中该点必须为。
在具有U形障碍物的示例中,存在两个凹角,并且两个对应区域(红色和蓝色)具有重叠(紫色)。这一点必须在这个紫色区域。
在具有S形障碍物的示例中,存在两个重叠区域(紫色)。要点必须在这两个区域之一。
在具有H形障碍物的示例中,红色和蓝色区域在H的水平光束上方具有重叠(紫色),蓝色和绿色区域在水平光束的右侧具有重叠(蓝绿色)绿色和黄色区域在水平光束下方具有重叠(石灰),黄色和红色区域在光束的左侧具有重叠(橙色);但是,这四个区域之间没有整体重叠,也没有可以满足约束条件的地方。