1

我有一个由 m 属性组成的 n 元素数组。id1 x1 y1 id2 x2 y2 ... idn xn yn

我有一个坐标 (x,y),我想找到 (x,y) 的左侧、上、下和下的所有元素的 id,这意味着 (x-1,y), (x ,y+1), (x+1,y), (x, y-1)。

我怎样才能快速做到这一点?

4

2 回答 2

0

假设坐标(除了感兴趣的坐标)位于 X (1 xn) 和 Y (1 xn) 中。

1 - 计算到所有坐标的欧几里得距离:

D = sqrt((X - x).^2 + (Y - y).^2));

2 - 对距离向量 D 排序以找到欧几里得距离最小的 4 个坐标

[M idx] = sort(D);

3-获取最近点的坐标

X(idx(1:4))
Y(idx(1:4))

检查它是否有效...

于 2013-01-22T19:09:46.667 回答
0

@Oliver:我相信它不会起作用,因为你可以让所有邻居都在围绕有趣点的同一四分之一圈内。

在我看来,更好的解决方案应该是将每个感兴趣点周围的区域划分为 4 个区域(在 dX 正、dX 负、dY 正和 dY 负(dX、dY 对的 4 种组合)方面不同。在每个区域中,它是需要找到最小的欧几里得差异。

于 2013-01-22T21:58:57.090 回答