我有一个2D矩阵表示为值向量,一个索引代表第一个单元格,一对坐标代表第二个单元格。
vector<double> matrix;
auto index = 10;
auto x1 = index % width;
auto y1 = index / width;
auto x2 = ...
auto y2 = ...
我需要找到这两个单元格之间的距离,其中8个相邻单元格的第一个“环”的距离等于1,第二个环的距离等于2,依此类推。
有没有比欧几里德距离快的方法?
答案 0 :(得分:2)
您需要的是修改后的Manhattan Distance。我认为您的用例可能有一个特定的名称,但我不知道。无论如何,我就是这样做的。
假设这两个点距x
行和y
列不远。然后x+y
是曼哈顿距离。但在你的情况下,也允许对角线移动。因此,如果您最初沿对角线方向移动,则会覆盖x
和y
中较小的一个,而另一个则保留一些。然后,您可以水平/垂直移动以覆盖剩余距离。因此,指标的距离为max(x,y)
。
给定分(x1,y1)
和(x2,y2)
,答案为max(|x1-x2|,|y1-y2|)