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

Drawing auto adjusting path on a grid

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

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

我在考虑交叉点(红点),所以我会在列表中添加交叉点,从中寻找路径直到当前输入,也许还有一些加权图方法,但没有最终的想法。如果有任何建议,我将不胜感激!

在任何时候您都可以更改 X 或更改 Y,但不能同时更改两者,因此您可以将 changeX 设为布尔值,将 changeY 设为 NOT。假设 changeX 为真。然后你只需获取用户输入的 X 坐标。反之亦然,用户输入的 ~changeX 和 Y 坐标。

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

您可能可以在此基础上计算每个下一个点,但对于网格为正方形的情况,这可能有点过分了。

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

  • 直线表示使用最佳路径
  • 曲线就是越靠近越好...

    1. 所以将用户给定的路径采样为一组点
    2. 删除所有不在路上的点
    3. 将它们对齐到网格
    4. 使用分段最佳路径查找
  • 可以用我的A* algorithm

[注释]

  • 您可以一步完成步骤 2,3
  • 可以避免对相邻单元格路径使用 A*
  • 可以使用前一块的 A* 数据(无需清除缓冲区,只需从上次使用的索引继续...
  • 除非你的输入路径绕圈子......