二维矩阵中两个单元格之间的距离

Distance between two cells in a 2D matrix

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

vector<double> matrix;
auto index = 10;

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

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

有没有比欧氏距离更快的方法?

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

假设这两个点相距 x 行和 y 列。那么x+y就是曼哈顿距离。但在你的情况下,对角线移动也是允许的。因此,如果您最初沿对角线移动到该点,您将覆盖 xy 中较小的一个,而另一个则剩余一些。然后您可以移动 horizontally/vertically 以完成剩余的距离。因此,您的度量距离为 max(x,y).

给定点 (x1,y1)(x2,y2),答案是 max(|x1-x2|,|y1-y2|)