在一个网格中寻找两点间的最短路径(Matlab)

3

我正在尝试找到在网格中没有障碍物情况下两点之间的最短路径,并且可以朝着所有方向移动(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));

但我认为它返回的点数比应该返回的多,可能有一个已经实现的例程。

非常感谢。


我无法阅读那个 :) 你可以(并且应该)编辑问题并添加代码。 - eykanal
2
你的意思是类似于 Bresenham 线算法 吗? - jfs
@J.F. Sebastian,就是这样 :) Bresenham线算法正是我所需要的。谢谢! - rauldg
@rauldg:如果这是您需要的内容,请将其作为答案添加并接受。 - jfs
1个回答

3

@J.F Sebastian 像这样吗?我不能将您的评论投票为正确答案吗? - rauldg
J.F.Sebastian必须亲自添加答案。然后答案可以被投票和接受,这样J.F.Sebastian就会得到积分。评论点赞不会给任何积分。如果你自己放他的答案,他将不会得到任何积分。 - yuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接