#include #include #include struct line_clip { int p1x,p2x,p1y,p2y; }; int winmaxx,winmaxy,winminx,winminy; int lineclip(float,float,float *,float *); void clipline(struct line_clip *); void main() { int gd=DETECT,gm,i,j; struct line_clip p[10]; printf("\nEnter the no.of lines"); scanf("%d",&j); printf("Enter the window co-ordinates"); scanf("%d %d %d %d",&winminx,&winminy,&winmaxx,&winmaxy); printf("Enter the co-ordinates for the lines"); for(i=0;i*a2) return(0); else if (r>*a1) *a1=r; } else if (p>0.0) { r=q/p; if (r<*a1) return(0); else if (r<*a2) *a2=r; } else if (q<0.0) return(0); return(1); } void clipline(struct line_clip *pp) { float a1=0.0; float a2=1.0; float dx=pp->p2x - pp->p1x; float dy; if (lineclip(-dx,pp->p1x - winminx,&a1,&a2)) if (lineclip(dx,winmaxx - pp->p1x,&a1,&a2)) { dy=pp->p2y - pp->p1y; if (lineclip(-dy,pp->p1y - winminy,&a1,&a2)) if (lineclip(dy,winmaxy - pp->p1y,&a1,&a2)) { if(a1>0.0) { pp->p1x=(int)(pp->p1x + a1*dx); pp->p1y=(int)(pp->p1y + a1*dy); } if (a2<1.0) { pp->p2x=(int)(pp->p1x+a2*dx); pp->p2y=(int)(pp->p1y+a2*dy); } } } line(pp->p1x,pp->p1y,pp->p2x,pp->p2y); } 3