找到由线的交叉点形成的所有多边形

时间:2014-01-17 04:36:40

标签: geometry computational-geometry robotics maze

我有一个由墙壁描述为迷宫线的迷宫(没有给定的顺序)。鉴于一点,我需要确定它是否在迷宫内或否。一切都在Cartezian平面上(没有离散化)。


我的想法是将问题转化为如下:

给定平面中的一些线段,找到在给定线段的端点中具有顶点的所有多边形,并且在边线上放置边(您可以在下图中看到,您不能假设边将形成一部分细分)。

然后检查:如果一个点只在一个多边形内部,那么它在迷宫内部,否则没有。


我想到的解决方案是:哈希端点和行交叉,然后寻找循环。

还有其他建议吗? 谢谢!

(忽略图片中的颜色) enter image description here

1 个答案:

答案 0 :(得分:0)

找到边界(外部)多边形就足够了。这可以通过在边界上找到一个点而不是从一个方向上的段遍历该点来完成。如果有更多的可能性去选择“外部”。算法可以描述:

find boundary point
find first direction to go and go to that point
while current point is different than fist one
  find next direction to go
  go to next point

第一个点可以找到具有最高Y坐标的点,如果有更多像那个具有最低X的坐标。我们可以称之为左上角。

第一个方向:第一个点连接到其他点,并且该点具有< = Y坐标,这意味着连接段低于第一个点。选择最正确的。

接下来的方向:某个(传入)线段到达当前点,下一个线段从正方向到正方向最远,与从传入线段顺时针方向的第一个线段相同。