检查数组是否与相邻的循环阵列点坐标

时间:2013-02-04 12:04:34

标签: arrays cyclic neighbours

我有一个尺寸为M x N x L的3d数组,它定义了一个循环体积上的值(即如果我们是零索引,则第M-1点与第0点相邻)。如果我给出了一个点(X,Y,Z)的坐标,我怎样才能整齐地找到所有下一个门点(即只在一个维度上有一个点的点)?

我的初始解决方案只是循环遍历数组中的所有值(数组相当小)然后有类似的东西:

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

但这没有考虑到循环方面。关于快速,巧妙地实现这一目标的想法将是制造。

提前感谢!

1 个答案:

答案 0 :(得分: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代码,因此数组的indeces从1开始(因此不寻常的mod行)。