改进的种子填充算法

来源:互联网 发布:茶的软件 编辑:程序博客网 时间:2024/04/28 07:52

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

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


 

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;  }

0 0
原创粉丝点击