网格中两点之间的最短路径(Matlab)

时间:2011-11-15 15:07:42

标签: algorithm matlab shortest-path

我正在尝试在没有障碍物的网格中找到两个点之间的最短路径并向所有方向移动(N NE E ES S SW W WN)。

这似乎是一项常见任务......这是否已在Matlab中实现?当Matlab绘制一条线连接的两个点(图(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));

但我认为它返回的分数超出了应有的水平,也许还有一个实施例程。

非常感谢

1 个答案:

答案 0 :(得分:3)

解决方案(由J.F.Sebastian提供)是Bresenham Line Algorithm