2D矩阵中两个单元格之间的距离

时间:2015-11-02 16:02:52

标签: c++ matrix euclidean-distance

我有一个2D矩阵表示为值向量,一个索引代表第一个单元格,一对坐标代表第二个单元格。

vector<double> matrix;
auto index = 10;

auto x1 = index % width;
auto y1 = index / width;
auto x2 = ...
auto y2 = ...

我需要找到这两个单元格之间的距离,其中8个相邻单元格的第一个“环”的距离等于1,第二个环的距离等于2,依此类推。

有没有比欧几里德距离快的方法?

1 个答案:

答案 0 :(得分:2)

您需要的是修改后的Manhattan Distance。我认为您的用例可能有一个特定的名称,但我不知道。无论如何,我就是这样做的。

假设这两个点距x行和y列不远。然后x+y是曼哈顿距离。但在你的情况下,也允许对角线移动。因此,如果您最初沿对角线方向移动,则会覆盖xy中较小的一个,而另一个则保留一些。然后,您可以水平/垂直移动以覆盖剩余距离。因此,指标的距离为max(x,y)

给定分(x1,y1)(x2,y2),答案为max(|x1-x2|,|y1-y2|)