Google Ads

Monday, May 18, 2009

LINE CLIPPING Program

Line Clipping Algorithm
include files
graphics.h
stdlib.h
stdio.h
conio.h
int main(void)
{
int gdriver = DETECT, gmode, errorcode;
float x1,y1,x2,y2,ax,ay,bx,by,xwmin,m,ywmin,xwmax,ywmax;
int ch;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
printf("Enter the coordinates of the line:");
scanf("%f%f%f%f",&x1,&y1,&x2,&y2);
line(x1,y1,x2,y2);
printf("Enter the value of xwmin,ywmin,xwmax,ywmax");
scanf("%f%f%f%f",&xwmin,&ywmin,&xwmax,&ywmax);
printf("Before clipping\n");
line(xwmin,ywmin,xwmax,ywmin);
line(xwmax,ywmin,xwmax,ywmax);
line(xwmax,ywmax,xwmin,ywmax);
line(xwmin,ywmax,xwmin,ywmin);
m=(y2-y1)/(x2-x1);
if(x1< xwmin)
{
ax=xwmin;
ay=y1+(ax-x1)*m;
}
else if(x1 >xwmax)
{
ax=xwmax;
ay=y2+(ax-x2)*m;
}
if(y1< ywmin)
{
ay=ywmin;
ax=x1+(ay-y1)/m;
}
else if(y1 >ywmax)
{
ay=ywmax;
ax=x2+(ay-y2)/m;
}
if((x1 >xwmin&&x1<>ywmin&&y1< ywmax))
{
ax=x1;
ay=y1;
}
if(x2< xwmin)
{
bx=xwmin;
by=y1+(bx-x1)*m;
}
else if(x2 >xwmax)
{
bx=xwmax;
by=y2+(bx-x2)*m;
}
if(y2< ywmin)
{
by=ywmin;
bx=x1+(by-y1)/m;
}
else if(y2 >ywmax)
{
by=ywmax;
bx=x2+(by-y2)/m;
}
if((x2 >xwmin&&x2<>ywmin&&y2< ywmax))
{
bx=x2;
by=y2;
}
scanf("%d",&ch);
if(ch==1)
{
cleardevice();
printf("After clipping");
line(ax,ay,bx,by);
line(xwmin,ywmin,xwmax,ywmin);
line(xwmax,ywmin,xwmax,ywmax);
line(xwmax,ywmax,xwmin,ywmax);
line(xwmin,ywmax,xwmin,ywmin);
}
getch();
closegraph();
return 0;
}

No comments:

Post a Comment