如何创建连续多边形的离散网格表示?

时间:2018-08-08 04:23:28

标签: algorithm discrete-mathematics

我有许多连续的2D形状,我想以某种分辨率映射到离散NxM网格上,然后在离散空间中运行路径规划算法。有什么方法或算法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

这基本上取决于实施细节和主要方案。

  1. 如果地图不是很频繁地更改,并且您想多次使用它,则可以对地图进行预处理以填充网格上的障碍物,以便检查是否可以通过单元格a快速简便的任务。

  2. 相反的方法是分开放置障碍。在这里,您可以赢得预处理时间,但是检查障碍会消耗大量计算资源(您需要检查所有2D形状以了解是否越线),而您的主要目标是对其进行优化。明显的优化之一是边界框(请参阅与轴对齐的最小边界框https://en.wikipedia.org/wiki/Minimum_bounding_box)或边界圆(请参见边界球https://en.wikipedia.org/wiki/Bounding_sphere)。想法是检查2DShape(如果只有您在附近),然后轻松检查是否远离障碍物。在轴对齐的边界框中,您需要同时检查 x_min <= x <= x_max y_min <= y <= y_max ,如果需要绘制圆,则需要选中一个< strong>(x-x0)^ 2 +(y-y0)^ 2 <= r ^ 2 更好。

您可以尝试通过以下方式使用缓存来结合这两种方法:

  1. 万一您从未检查过电池是否是障碍物或未使用 第二种方法具有自己的优化。将结果保存在单元格缓存中。
  2. 如果您已经检查了单元格使用缓存值
  3. 如果地图上有新障碍物,请使新2Dshare边界框/圆中所有单元格的缓存值无效。

例如,如果它是问题(https://en.wikipedia.org/wiki/A * _ search_algorithm)的一部分,还需要使用 A * 来实现寻路算法,并需要检查该点是否在2D共享内(选项之一是http://alienryderflex.com/polygon/