rendered paste bodyvoid Stack::addPlateauNeighborRecursive(double value,int h,int i,int j, std::vector< std::vector< std::vector<int> > > &tmpFlag, std::vector< std::vector<int> > &walkTmp) { //Check only nearest neighbors for(int a=-1 ; a<=1 ; a+=2 ) { int hh = h+a; if( hh>=0 && hh<D() && pix(hh,i,j)==value && !tmpFlag[hh][i][j] ) { tmpFlag[hh][i][j]=1; std::vector<int> tmpPos(3); tmpPos[0]=hh;tmpPos[1]=i;tmpPos[2]=j; walkTmp.push_back( tmpPos ); addPlateauNeighborRecursive(value,hh,i,j,tmpFlag,walkTmp); } int ii = i+a; if( ii>=0 && ii<H() && pix(h,ii,j)==value && !tmpFlag[h][ii][j] ) { tmpFlag[h][ii][j]=1; std::vector<int> tmpPos(3); tmpPos[0]=h;tmpPos[1]=ii;tmpPos[2]=j; walkTmp.push_back( tmpPos ); addPlateauNeighborRecursive(value,h,ii,j,tmpFlag,walkTmp); } int jj = j+a; if( jj>=0 && jj<W() && pix(h,i,jj)==value && !tmpFlag[h][i][jj] ) { tmpFlag[h][i][jj]=1; std::vector<int> tmpPos(3); tmpPos[0]=h;tmpPos[1]=i;tmpPos[2]=jj; walkTmp.push_back( tmpPos ); addPlateauNeighborRecursive(value,h,i,jj,tmpFlag,walkTmp); } }}