/*Cohen sutherland polygon clipping in c*/
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
void leftclip();
void rightclip();
void topclip();
void bottomclip();
int gd=DETECT,gm,Xmin,Ymin,Xmax,Ymax,x1,y1;
void main()
{
int n,i=1,x[10],y[10];
initgraph(&gd,&gm,"c://tc//bgi");
printf("enter the Xmin,Ymin,Xmax,Ymax co ordinate of window port");
scanf("\n%d\t%d\t%d\t%d",&Xmin,&Ymin,&Xmax,&Ymax);
printf("enter the no. of side of polygon u want to enter");
scanf("\n%d",&n);
for(i=1;i<=n;i++)
{
printf("the co ordinates of sides are x[%d] y[%d]",i,i);
scanf("\n%d\t%d",&x[i],&y[i]);
}
cleardevice();
rectangle(Xmin,Ymin,Xmax,Ymax);
getch();
for(i=1;i<n;i++)
{ setcolor(i);
line(x[i],y[i],x[i+1],y[i+1]);
} setcolor(2);
line(x[1],y[1],x[n],y[n]);
getch();
leftclip();
rightclip();
topclip();
bottomclip();
getch();
}
void leftclip()
{
for(y1=0;y1<480;y1++)
{
for(x1=0;x1<Xmin;x1++)
{
putpixel(x1,y1,BLACK);
}}}
void rightclip()
{
for(y1=0;y1<480;y1++)
{
for(x1=Xmax+1;x1<640;x1++)
{
putpixel(x1,y1,BLACK);
}}}
void topclip()
{
for(x1=0;x1<640;x1++)
{
for(y1=0;y1<Ymin;y1++)
{
putpixel(x1,y1,BLACK);
}} }
void bottomclip()
{
for(x1=0;x1<640;x1++)
{
for(y1=Ymax+1;y1<480;y1++)
{
putpixel(x1,y1,BLACK);
}}}
No comments:
Post a Comment