3d网格中如何围绕单个网格往外层层遍历
各位好我想问一个类似算法的问题,
如何在一个3D网格中,围绕一个网格一层一层的往外循环出去?
比如中心网格在ijk位置,我想先围绕该网格第一层做循环,之后再围绕第二层做循环,依次往外推。。
我自己写的code如下:
int layer=0;
while (layer<10){
for (int kk = -layer; kk <= layer; kk++) {
for (int jj = -layer; jj <= layer; jj++) {
for (int ii = -layer; ii <= layer; ii++) {
if (fabs(ii)<layer &&fabs(jj)<layer &&fabs(kk)<layer) continue;
do something...
}//end of ii
}//end of jj
}//end of kk
layer ++;
}//end of while
三个for循环,是围绕中心网格所有层的循环,
if语句主要是在循环第layer层的时候,以内的层就直接跳过不再循环。
当layer=0的时候,对应的是中心网格,
layer=1,循环第一层,
layer=2,循环第二层(if语句使得2层以内的就不再循环了)
但是这种方法运行太慢,我想问问有没有其它的算法可以快速的实现?
多谢