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");
}