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

Distance between two cells in a 2D matrix

本文关键字:两个 距离 单元格 之间 二维      更新时间:2023-10-16

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

vector<double> matrix;
auto index = 10;
auto x1 = index % width;
auto y1 = index / width;
auto x2 = ...
auto y2 = ...

我需要找到这两个小区之间的距离,其中,对于8个相邻小区中的第一个"环",距离等于1,对于第二个环,距离等于2,依此类推

有比欧几里得距离更快的方法吗?

您需要的是修改后的曼哈顿距离。我想你的用例可能有一个特定的名字,但我不知道。无论如何,我会这样做。

假设这两个点相距x行,相距y列。那么x+y就是曼哈顿距离。但在你的情况下,对角线运动也是允许的。因此,如果你最初朝着这个点倾斜移动,你会覆盖xy中较小的一个,而另一个还剩下一些。然后,您可以水平/垂直移动以覆盖剩余的距离。因此,根据您的度量,距离将为max(x,y)

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