//LINECLIPPINGUSINGCYRUS-BECKMETHOD #include #include #include #defineround(a)(int(a+0.5)) floatmax(floata,floatb) { return((a>b)?a:b); } floatmin(floata,floatb) { return((a>b)?b:a); } voidmain() { intgdriver=DETECT,gmode; floatx,y,xmin,xmax,ymin,ymax,xi,xf,yi,yf,t,t1,t2=1; clrscr(); cout<<"Coordinatesofrectangularclipwindow:\nxmin,ymin:"; cin>>xmin>>ymin; cout<<"xmax,ymax:"; cin>>xmax>>ymax; cout<<"\n\nCoordinatesoflinetobeclipped:\nInitial:"; cin>>xi>>yi; cout<<"Final:"; cin>>xf>>yf; initgraph(&gdriver,&gmode,"C:\\TurboC3\\BGI"); rectangle(xmin,ymax,xmax,ymin); cout<<"\t\tUNCLIPPEDLINE"; setcolor(RED); line(round(xi),round(yi),round(xf),round(yf)); getch(); cleardevice(); t=(xmin-xi)/(xf-xi); if(xf>xi) t1=max(t1,t); else t2=min(t2,t); t=(ymax-yi)/(yf-yi); if(yi>yf) t1=max(t1,t); else t2=min(t2,t); t=(xmax-xi)/(xf-xi); if(xi>xf) t1=max(t1,t); else t2=min(t2,t); t=(ymin-yi)/(yf-yi); if(yf>yi) t1=max(t1,t); else
t2=min(t2,t); if(t1