我有一个尺寸为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
但这没有考虑到循环方面。关于快速,巧妙地实现这一目标的想法将是制造。
提前感谢!
答案 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行)。