Cohen Sutherland Ss
Cohen Sutherland Ss
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
#include<math.h>
void main()
int a[4],b[4];
float m,xnew,ynew;
float xl=100,yl=100,xh=300,yh=300,xa=10,ya=200,xb=250,yb=150;
int gd = DETECT,gm;
initgraph(&gd,&gm,"C:\\TURBOC3\\BGI");
setcolor(5);
line(xa,ya,xb,yb);
setcolor(12);
rectangle(xl,yl,xh,yh);
m = (yb-ya)/(xb-xa);
a[3] = 1;
else a[3] = 0;
if(xa>xh)
a[2] = 1;
else a[2] = 0;
else a[1] = 0;
a[0] = 1;
else a[0] = 0;
b[3] = 1;
else b[3] = 0;
if(xb>xh)
b[2] = 1;
else b[2] = 0;
b[1] = 1;
else b[1] = 0;
b[0] = 1;
else b[0] = 0;
getch();
if(a[0] == 0 && a[1] == 0 && a[2] == 0 && a[3] == 0 && b[0] == 0 && b[1] == 0 && b[2] == 0 && b[3] ==
0)
printf("no clipping");
line(xa,ya,xb,yb);
}
else if(a[0]&&b[0] || a[1]&&b[1] || a[2]&&b[2] || a[3]&&b[3])
clrscr();
printf("line discarded");
rectangle(xl,yl,xh,yh);
else
setcolor(12);
rectangle(xl,yl,xh,yh);
setcolor(0);
line(xa,ya,xb,yb);
setcolor(15);
line(xl,ynew,xb,yb);
setcolor(12);
rectangle(xl,yl,xh,yh);
setcolor(0);
line(xa,ya,xb,yb);
setcolor(15);
line(xl,ynew,xb,yb);
xnew = xa + (yl-ya)/m;
setcolor(0);
line(xa,ya,xb,yb);
setcolor(15);
line(xnew,yh,xb,yb);
xnew = xa + (yh-ya)/m;
setcolor(0);
line(xa,ya,xb,yb);
setcolor(15);
line(xnew,yh,xb,yb);
getch();
closegraph();
}
Output: