在网格上绘制自动调整路径
Drawing auto adjusting path on a grid
我需要让用户在网格上绘制一条路径但不精确 - 算法应该调整路径。
示例图像,其中红线表示用户将绘制的连续路径,蓝点是最终路径
或
- 我无法摆脱寻路,因为我不需要最佳路径
- 我需要它在每次用户输入时更新(画红线)
我在考虑交叉点(红点),所以我会在列表中添加交叉点,从中寻找路径直到当前输入,也许还有一些加权图方法,但没有最终的想法。如果有任何建议,我将不胜感激!
在任何时候您都可以更改 X 或更改 Y,但不能同时更改两者,因此您可以将 changeX 设为布尔值,将 changeY 设为 NOT。假设 changeX 为真。然后你只需获取用户输入的 X 坐标。反之亦然,用户输入的 ~changeX 和 Y 坐标。
变量changeX只能在交点处改变。决定是否更新的一种方法是计算下一个点中的哪些点最接近指针。您只需要比较距离的平方,就可以避免昂贵的平方根计算。
您可能可以在此基础上计算每个下一个点,但对于网格为正方形的情况,这可能有点过分了。
只是为了确保我看到的是正确的方式:
- 直线表示使用最佳路径
曲线就是越靠近越好...
- 所以将用户给定的路径采样为一组点
- 删除所有不在路上的点
- 将它们对齐到网格
- 使用分段最佳路径查找
- 可以用我的A* algorithm
[注释]
- 您可以一步完成步骤 2,3
- 可以避免对相邻单元格路径使用 A*
- 可以使用前一块的 A* 数据(无需清除缓冲区,只需从上次使用的索引继续...
- 除非你的输入路径绕圈子......
我需要让用户在网格上绘制一条路径但不精确 - 算法应该调整路径。
示例图像,其中红线表示用户将绘制的连续路径,蓝点是最终路径
- 我无法摆脱寻路,因为我不需要最佳路径
- 我需要它在每次用户输入时更新(画红线)
我在考虑交叉点(红点),所以我会在列表中添加交叉点,从中寻找路径直到当前输入,也许还有一些加权图方法,但没有最终的想法。如果有任何建议,我将不胜感激!
在任何时候您都可以更改 X 或更改 Y,但不能同时更改两者,因此您可以将 changeX 设为布尔值,将 changeY 设为 NOT。假设 changeX 为真。然后你只需获取用户输入的 X 坐标。反之亦然,用户输入的 ~changeX 和 Y 坐标。
变量changeX只能在交点处改变。决定是否更新的一种方法是计算下一个点中的哪些点最接近指针。您只需要比较距离的平方,就可以避免昂贵的平方根计算。
您可能可以在此基础上计算每个下一个点,但对于网格为正方形的情况,这可能有点过分了。
只是为了确保我看到的是正确的方式:
- 直线表示使用最佳路径
曲线就是越靠近越好...
- 所以将用户给定的路径采样为一组点
- 删除所有不在路上的点
- 将它们对齐到网格
- 使用分段最佳路径查找
- 可以用我的A* algorithm
[注释]
- 您可以一步完成步骤 2,3
- 可以避免对相邻单元格路径使用 A*
- 可以使用前一块的 A* 数据(无需清除缓冲区,只需从上次使用的索引继续...
- 除非你的输入路径绕圈子......