改进的种子填充算法

这个是在矩阵数组中填充的,num为填充后的,-1为空白,99为边界,把这几个替换掉就好了。我真笨,55555

改进的种子填充算法_第1张图片改进的种子填充算法_第2张图片

左图为上色前的多边形,右图为上色后的多边形


 

void seed(int x,int y){
  if(mapIt[x][y]!=-1){
   return; 
  }
  int ll=x-1;
  int rr=x+1;
  rr=seedFillr(x,y); //right 
  ll=seedFilll(x-1,y);  //left
  for(int i=ll;i<=rr+2;i++){
   if(mapIt[i][y+1]==-1&&mapIt[i+1][y+1]==99){
    seed(i,y+1);
   } 
   if(mapIt[i][y-1]==-1&&mapIt[i+1][y-1]==99){
    seed(i,y-1); 
   }
  }
  
}

  int seedFilll(int x,int y){
    if(mapIt[x][y]!=-1){
      return x+1;
    }
    else{
     mapIt[x][y]=num;
      return  seedFilll(x-1,y); 
    }
  }
  int seedFillr(int x,int y){
    if(mapIt[x][y]==-1){
      mapIt[x][y]=num;
      return seedFillr(x+1,y);
    }
    else return x-1;
  }

你可能感兴趣的:(算法,改进的种子填充)