You are on page 1of 2

P8:Design a program to fill polygon.

Name-Aashish Pandey Date-03/04/2024


Source Code
#include <conio.h> if(xmax<p[i].x)
#include <iostream.h> xmax=p[i].x;
#include <graphics.h> if(ymin>p[i].y)
#include <stdlib.h> ymin=p[i].y;
#include<stdio.h> if(ymax<p[i].y)
#include<conio.h> ymax=p[i].y;
#include<dos.h> }
class point }
{
public: void poly::display()
int x,y; {
}; int ch1;
class poly char ch='y';
{ float s,s2;
private: do
point p[20]; {
int inter[20],x,y; cout<<"\n\nMENU:";
int v,xmin,ymin,xmax,ymax; cout<<"\n\n\t1 . Scan line Fill ";
public: cout<<"\n\n\t2 . Exit ";
int c; cout<<"\n\nEnter your choice:";
void read(); cin>>ch1;
void calcs(); switch(ch1)
void display(); {
void ints(float); case 1:
void sort(int); s=ymin+0.01;
}; delay(100);
void poly::read() cleardevice();
{ while(s<=ymax)
int i; {
cout<<"\n\t SCAN_FILL ALGORITHM"; ints(s);
cout<<"\n Enter the no of vertices of polygon:"; sort(s);
cin>>v; s++;
if(v>2) }
{ break;
for(i=0;i<v; i++) case 2:
{ exit(0);
cout<<"\nEnter the co-ordinate no.- }
"<<i+1<<" : ";
cout<<"\n\tx"<<(i+1)<<"="; cout<<"Do you want to continue?: ";
cin>>p[i].x; cin>>ch;
cout<<"\n\ty"<<(i+1)<<"="; }while(ch=='y' || ch=='Y');
cin>>p[i].y; }
} void poly::ints(float z)
p[i].x=p[0].x; {
p[i].y=p[0].y; int x1,x2,y1,y2,temp;
xmin=xmax=p[0].x; c=0;
ymin=ymax=p[0].y; for(int i=0;i<v;i++)
} {
else x1=p[i].x;
cout<<"\n Enter valid no. of vertices."; y1=p[i].y;
} x2=p[i+1].x;
void poly::calcs() y2=p[i+1].y;
{ if(y2<y1)
for(int i=0;i<v;i++) {
{ temp=x1;
if(xmin>p[i].x) x1=x2;
xmin=p[i].x; x2=temp;
temp=y1; for(i=0; i<c;i+=2)
y1=y2; {
y2=temp; delay(100);
} line(inter[i],z,inter[i+1],z);
if(z<=y2&&z>=y1) }
{ }
if((y1-y2)==0) int main()
x=x1; {
else int gd=DETECT,gm,i;
{ initgraph(&gd,&gm,"c://TC//BGI");
x=((x2-x1)*(z-y1))/(y2-y1); int cl;
x=x+x1; // initwindow(500,600);
} clrscr();
if(x<=xmax && x>=xmin) poly x;
inter[c++]=x; x.read();
} x.calcs();
} cleardevice();
} cout<<"\n\tEnter the colour u want:(0-15)->";
void poly::sort(int z) cin>>cl;
{ setcolor(cl);
int temp,j,i; x.display();
for(i=0;i<v;i++) closegraph();
{ getch();
line(p[i].x,p[i].y,p[i+1].x,p[i+1].y); return 0;
} }
delay(100);

Output-

You might also like