【发布时间】:2011-11-15 15:07:41
【问题描述】:
我正在尝试在没有障碍物的情况下找到网格中两点之间的最短路径,并向所有方向移动 (N NE E ES S SW W WN)。
这似乎是一个常见的任务......这不是已经在 Matlab 中实现了吗?当 Matlab 绘制由一条线连接的两个点时( plot(X,Y,'-') )似乎在内部进行此计算,因为我猜生成的图像也是一个网格。
示例:从 [1,1] 到 [3,6] 一种解决方案是 [1,1; 2,2; 2,3; 2,4; 3,5; 3,6]
我试过了:
dist_x = length(linspace(p1(1),p2(1), dist(p1(1),p2(1))+1));
dist_y = length(linspace(p1(2),p2(2), dist(p1(2),p2(2))+1));
num_points = max(dist_x, dist_y);
x = round(linspace(p1(1),p2(1),num_points));
y = round(linspace(p1(2),p2(2),num_points));
但我认为它返回的分数比它应该返回的多,也许有一个已实现的例程。
非常感谢
【问题讨论】:
-
我看不懂 :) 您可以(并且应该)编辑问题并添加代码。
-
你的意思是像Bresenham line algorithm这样的吗?
-
@J.F. Sebastian 就是这样 :) Bresenham 线算法正是我所需要的谢谢
-
@rauldg:将其添加为答案,如果需要,请接受。
标签: algorithm matlab shortest-path