All pastes #86589 Raw Edit

Something

public text v1 · immutable
·published 2006-07-13 01:09 UTC
rendered paste body
void 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);
    }
  }
}