Monday, September 3, 2012

FLOOD FILL ALGORITHM

 FLOOD FILL ALGORITHM

This my own code for polygon filling using the flood dill algorithm. Hope you enjoy this!
Source code:
#include<conio.h>
#include<iostream.h>
#include<graphics.h>
void flood_rfill(int x,int y,int color);
void flood_lfill(int x,int y,int color);
void main()
{int gd=DETECT, gm ,n,i;
int x , y,p[20],color;
initgraph(&gd,&gm,"c:\\tc\\bgi");
cout<<"Enter no: of vertices for polygon:";
cin>>n;
int j=0;
do{
for(i=0;i<n;i++){
cout<<"\n x"<<i+1<<"& y"<<i+1<<":";
cin>>p[j];
j=j+1;
cin>>p[j];
j=j+1;}
} while(j<2*n);
p[2*n]=p[0];
p[2*n+1]=p[1];
drawpoly(n+1,p);
getch();
cout<<"Enter the seed point (x,y): ";
cin>>x>>y;
cout<<"Enter filling color value:";
cin>>color;
flood_rfill(x,y,color);
flood_lfill(x-1,y,color);
getch();
}
void flood_rfill(int x,int y,int color)
{if(getpixel(x,y) == 0)
{putpixel(x,y,color);
flood_rfill(++x,y,color);
x = x - 1 ;
flood_rfill(x,y-1,color);
flood_rfill(x,y+1,color);}
}
void flood_lfill(int x,int y,int color)
{if(getpixel(x,y) == 0)
{putpixel(x,y,color);
flood_lfill(--x,y,color);
x = x + 1 ;
flood_lfill(x,y-1,color);
flood_lfill(x,y+1,color);}
}

OUTPUT:

No comments:

Post a Comment