Assignment no 2
Assignment no 2
Shearing. Program:
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<math.h>
color) { setcolor(color);
}
void main() {
int x1, x2, x3, y1, y2, y3, nx1, nx2, nx3, ny1, ny2, ny3;
int gd = DETECT, gm = 0
shx;
ny3 = y3 + x3 * shy;
YELLOW); break;
case 2:
switch(reflectionChoice) { case 1:
nx1 = x1;
nx2 = x2;
nx3 = x3;
break;
ny3 = y3;
break;
case 3:
break;
default:
printf("Invalid
reflection choice!\n");
return;
}
drawTriangle(nx1, ny1, nx2, ny2, nx3, ny3, GREEN);
break;
case 3:
printf("Exiting...\n");
break;
default:
printf("Invalid choice!\
n");
getch();
closegraph();
}
Output:
2. Sutherland Hodgeman Polygon clipping algorithm Program:
(x2 - x1)
else
m = 100000;
if (x1 >= xmin && x2 >= xmin)
{ arr[k] = x2;
arr[k + 1] = y2
k += 2;
= xmin;
arr[k + 2] = x2;
arr[k + 3] = y2; k += 4;
}
if (x1 >= xmin && x2 < xmin) { arr[k] = xmin;
arr[k + 1] = y1 + m * (xmin - x1);
k += 2;
void cliptop(float x1, float y1, float x2, float y2) { if (y2 - y1)
m = (x2 - x1) / (y2 - y1);
else
m = 100000;
k += 2;
}
if (y1 > ymax && y2 <= ymax)
arr[k + 1] = ymax;
arr[k + 2] =
x2; arr[k + 3]
= y2; k += 4;
}
if (y1 <= ymax && y2 > ymax)
arr[k + 1] = ymax;
k += 2;
}
void clipright(float x1, float y1, float x2, float y2) { if (x2 - x1)
m = (y2 - y1) / (x2 – x1);
else
m = 100000;
if (x1 <= xmax && x2 <= xmax)
{ arr[k] = x2;
arr[k + 1] = y2;
k += 2;
}
if (x1 > xmax && x2 <= xmax) { arr[k]
= xmax;
+ 2] = x2;
arr[k + 3] = y2;
k += 4;
}
if (x1 < xmax && x2 > xmax) { arr[k]
= xmax;
k += 2;
void clipbottom(float x1, float y1, float x2, float y2) { if (y2 - y1)
m = (x2 - x1) / (y2 - y1);
else
m = 100000;
if (y1 >= ymin && y2 >= ymin)
{ arr[k] = x2;
arr[k + 1] = y2; k += 2;
}
if (y1 < ymin && y2 >= ymin) { arr[k] = x1 + m * (ymin - y1); arr[k + 1] = ymin;
arr[k + 2] =
x2; arr[k + 3]
= y2; k += 4;
}
if (y1 >= ymin && y2 < ymin) { arr[k] = x1 + m * (ymin - y1); arr[k + 1] = ymin;
k += 2;}
}
void main() {
printf("Coordinates of rectangular
ymin: ");
printf("\n\nPolygon to be
scanf("%d", &n);
scanf("%f", &polyy[i]);
polyy[2 * n] = polyy[0]; polyy[2
* n + 1] = polyy[1];
for (i = 0; i < 2 * n + 2; i++)
poly[i] = round(polyy[i]);
Turboc3\\BGI"); //
Initialize graphics
setcolor(RED);
cleardevice();
k = 0;
for (i = 0; i < 2 * n; i += 2)
n = k / 2;
polyy[i] = arr[i];
polyy[k] = polyy[0];
polyy[k + 1] = polyy[1];
k = 0;
for (i = 0; i < 2 * n; i += 2)
polyy[i] = arr[i];
polyy[k] = polyy[0];
polyy[k + 1] = polyy[1];
k = 0;
for (i = 0; i < 2 * n; i += 2)
= polyy[0];
polyy[k + 1] = polyy[1];
k = 0;
for (i = 0; i < 2 * n; i += 2)
round(arr[i]);
if (k)
clipped polygon
setcolor(RED);
Output: