0

M x N x L の次元を持つ 3D 配列があります。これは循環ボリュームの値を定義します (つまり、ゼロ インデックスの場合、M-1 番目のポイントは 0 番目のポイントの隣にあります)。ポイント (X、Y、Z) の座標が与えられた場合、どうすれば隣のポイント (つまり、1 次元で 1 つだけ離れたポイント) をすべて見つけることができますか?

私の最初の解決策は、配列内のすべての値を for ループして (配列はかなり小さい)、次のようなものにすることでした。

if abs(X-M) + abs(Y-N) + abs(Z-L) == 1
  do neighboring point stuff
end

しかし、これは周期的な側面を考慮していません。これを行うための迅速できちんとした方法についての考えは素晴らしいでしょう。

前もって感謝します!

4

1 に答える 1

0

これは、興味のある人のために私がやったことです(なぜもっと早く考えなかったのかわかりません):

for dimension=1:3
  for direction=-1:2:1
    vec = zeros(3,1);
    vec(dimension) = direction;

    this_point = point + vec;
    this_point(dimension) = mod(this_point(dimension)-1,size(obj.int_ref,dimension))+1;
  end
end

これは matlab コードであるため、配列のインデックスは 1 から始まることに注意してください (したがって、通常とは異なる mod 行です)。

于 2013-02-04T12:32:11.390 に答える