m-propertiesによる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)。
どうすればこれをすばやく行うことができますか?
m-propertiesによる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)。
どうすればこれをすばやく行うことができますか?
座標 (関心のあるものを除く) が 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))
それが動作するかどうかを確認してください...
@ Oliver: 興味深い点を囲む円の同じ四分の一にあるすべての隣人を mag が取得するので、うまくいかないと思います。
私の意見では、より良い解決策は、各興味深い点の周りのゾーンを 4 つのゾーン (dX ポジティブ、dX ネガティブ、dY ポジティブ、および dY ネガティブ (dX、dY カップルの 4 つの組み合わせ) で異なります) に分割することです。各ゾーンでは、最小のユークリッド差を見つける必要がありました。