Path: blob/main/7. Cohen Southerland line clipping algorithm.cpp
724 views
/*17. Write C++ program to implement Cohen Southerland line clipping algorithm.2*/345#include<iostream.h>6#include<conio.h>7#include<graphics.h>8#include<math.h>9void Window()10{11line (200,200,350,200);12line(350,200,350,350);13line(200,200,200,350);14line(200,350,350,350);15}16void Code(char c[4],float x,float y)17{ c[0]=(x<200)?'1':'0';18c[1]=(x>350)?'1':'0';19c[2]=(y<200)?'1':'0';20c[3]=(y>350)?'1':'0';21}22void Clipping (char c[],char d[],float &x,float &y,float m)23{24int flag=1,i=0;25for (i=0;i<4;i++)26{27if(c[i]!='0' && d[i]!='0')28{29flag=0;30break;31}32if(flag)33{34if(c[0]!='0')35{36y=m*(200-x)+y;37x=200;38}39else if(c[1]!='0')40{41y=m*(350-x)+y;42x=350;43}44else if(c[2]!='0')45{46x=((200-y)/m)+x;47y=200;48}49else if(c[3]!='0')50{51x=((350-y)/m)+x;52y=350;53}54}55if (flag==0)56cout<<"Line lying outside";57}58}59void main()60{61int gdriver = DETECT, gmode, errorcode;62float x1,y1,x2,y2;63float m;64char c[4],d[4];65clrscr();66initgraph(&gdriver, &gmode, "//Turboc3//bgi");67cout<<"Enter coordinates";68cin>>x1>>y1>>x2>>y2;69cout<<"Before clipping";70Window();71line(x1,y1,x2,y2);72getch();73cleardevice();74m=float((y2-y1)/(x2-x1));75Code(c,x1,y1);76Code(d,x2,y2) ;77Clipping(c,d,x1,y1,m);78Clipping(d,c,x2,y2,m);79cout<<"After Clipping";80Window();81line(x1,y1,x2,y2);82getch();83closegraph();84}858687