我有一个2D矩阵,表示为值的向量,一个索引表示第一个单元格,一对坐标表示第二个单元格。
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
是曼哈顿距离。但是在您的情况下,也允许对角线移动。所以,如果你对点角地移动最初,你会覆盖的小x
和y
,剩余的其他一些量。然后,您可以水平/垂直移动以覆盖剩余的距离。因此,按您的度量标准得出的距离为max(x,y)
。
给定点(x1,y1)
和(x2,y2)
,答案将是max(|x1-x2|,|y1-y2|)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句