5.Line Clipping Program Using C Programming

#include<stdio.h>

#include<conio.h>

#include<graphics.h>

#include<math.h>

 

#define Round(val)((int)(val+.5))

int maxx,maxy,miny,minx;

 

void main()

{

     int gd=DETECT,gm;

     void clipping(int xa,int ya,int xb,int y);

     int xa,xb,ya,yb;

     printf("Enter the window coordination");

     scanf("%d%d%d%d",&minx,&maxy,&maxx,&miny);

     printf("Enter the two and points for the line");

     scanf("%d%d%d%d",&xa,&ya,&xb,&yb);

     initgraph(&gd,&gm,"");

     rectangle(minx,miny,maxx,maxy);

     line(xa,ya,xb,yb);

     getch();

     closegraph();

}

 

void clipping(int xa,int ya,int xb,int yb)

{

     int Dx=xb-xa,Dy=yb-ya,steps,k;

     int visible1=0,visible2=0;

     float xin,yin,x=xa,y=ya;

     if(abs(Dx)>abs(Dy))

        steps=abs(Dx);

     else

        steps=abs(Dy);

     xin=Dx/(float)steps;

     yin=Dy/(float)steps;

     putpixel(Round(x),Round(y),2);

   

 

    for(k=0;k<steps;k++)

   {

        x+=xin;

        y+=yin;

        if((y>miny && y<maxx))

        {

             visible1=1;

             putpixel(Round(x),Round(y),2);

         }

         else

        visible2=1;

    }

    if(visible1==0)

    outtextxy(20,200,"complextely visible");

    if(visible1==1 && visible2==1)

    outtextxy(20,20,"partialy visible");

    if(visible1==1&&visible2==0)

    outtextxy(20,20,"completly visible");

}