在网格上绘制自动调整路径

时间:2015-04-19 19:19:59

标签: algorithm graph graph-algorithm

我需要让用户在网格上绘制路径但没有精确度 - 算法应该调整路径。

示例图像,其中红线表示用户将绘制的连续路径,蓝点是最终路径

Example #1Example #2

  • 由于我不需要最佳路径,我无法逃避寻路
  • 我需要在每个用户输入上更新绘制红线时)

Intersections

我正在考虑关于交叉点(红点)的事情,所以我会添加交集到路径查找的列表,直到当前输入和可能是一些加权图方法,但没有最终的想法。我对此有任何建议表示感谢。

2 个答案:

答案 0 :(得分:1)

只是为了确保我看到它的正确方式:

  • 直线表示使用最佳路径
  • 曲线意味着尽可能接近它......

    1. 因此,将用户给定的路径作为点集
    2. 进行采样
    3. 删除所有不在路上的点
    4. 将它们与网格对齐
    5. 使用分段最佳路径查找
  • 可以使用我的A* algorithm

example

[注释]

  • 您可以一步完成第2,3步
  • 可以避免使用A *用于相邻的单元路径
  • 可以使用上一篇文章中的A *数据(无需清除缓冲区,只需从上次使用的索引中继续...
  • 除非你的输入路径是圆圈......

答案 1 :(得分:0)

在任何时候你都可以改变X或改变Y,而不是两者,所以你可以使changeX成为一个布尔值,其中changeY为NOT。假设changeX为true。然后,您只需获取用户输入的X坐标。对于用户输入的~changeX和Y坐标,反之亦然。

变量changeX只能在交叉点改变。决定是否更新的一种方法是计算哪个下一个点最接近指针。您只需要比较距离的平方,这样就可以节省昂贵的平方根计算。

你可能在那个基础上计算每一个下一个点,但是当网格是正方形时,这可能是过度的。