Lab 2
Lab 2
xyz
LAB 1
#include <graphics.h>
#include <conio.h>
#include <dos.h>
int main()
int gd = DELECT, gm ;
getch();
Output:
2. Write a program to implement DDA algorithm for drawing a line segment between
two given end points A(x1, x2) and B(x2, y2).
Source code:
#include <stdio.h>
#include <graphics.h>
#include <math.h>
float round(float a);
int main(){
int gd = DETECT, gm;
int x1, y1, x2, y2, steps, k;
float xincr, yincr, x, y, dx, dy;
printf("enter x1,y1");
scanf("%d%d", &x1, &y1);
printf("enter x2,y2");
scanf("%d%d", &x2, &y2);
initgraph(&gd, &gm, "c:\\turboc3\\BGI");
dx = x2 - x1; dy = y2 - y1;
if (abs(dx) > bs(dy))steps =abs(dx);
else{
steps = abs(dy);
xincr = dx / float)steps;
yincr = dy /(float)steps; x = x1;
y = y1;
}
for (k = 1; k <= steps; k++)
{
delay(100); y += yincr;
putpixel(round(x), round(y), WHITE);
}
outtextxy(200, 20, "DDA"); outtextxy(x1 + 5, y1 - 5, (x1,y1)");
outtextxy(x2 + 5, y2 + 5, "(x2,y2)");
getch();
closegraph();
}
float round(float a)
{
int b = (int)(a + 0.5); return b;
}
Output:
}
getch();
closegraph();
return 0;
}
Output:
y--; }
symmetry(x, y, xc, yc);
delay(50); }
}
void symmetry(int x, int y, int xc, int yc){
putpixel(xc + x, yc - y, WHITE);
delay(50);
putpixel(xc + y, yc - x, WHITE);
delay(50);
putpixel(xc + y, yc + x, WHITE);
delay(50);
putpixel(xc + x, yc + y, WHITE);
delay(50);
putpixel(xc - x, yc + y, WHITE);
delay(50);
putpixel(xc - y, yc + x, WHITE);
delay(50);
putpixel(xc - y, yc - x, WHITE);
delay(50);
putpixel(xc - x, yc - y, WHITE);
delay(50);
}
Output:
y = 0;
disp();
p2 = (rx * rx) + 2.0 * (ry * ry * rx) + (rx * ry) / 4;
while ((2.0 * ry * ry * x) > (2.0 * rx * rx * y)) {
y++;
if (p2 > 0)
p2 = p2 + (rx * rx) - (2.0 * rx * rx * y);
else {
x--;
p2 = p2 + (2.0 * ry * ry * x) - (2.0 * rx * rx * y) + (rx * rx);
}
disp(); y = -y; disp(); y = -y;
}
getch(); closegraph();
return 0;
}
void disp() {
delay(50);
putpixel(xc + x, yc + y, 7);
putpixel(xc - x, yc + y, 7);
putpixel(xc + x, yc - y, 7);
putpixel(xc - x, yc - y, 7);
}
Output:
k = 0;
for (i = 0; i < n; i++) {
if (((a[i][1] <= y) && (a[i + 1][1] > y)) || ((a[i][1] > y) && (a[i + 1][1] <= y))) {
xi[k] = (int)(a[i][0] + slope[i] * (y - a[i][1])); k++;
}
}
for (j = 0; j < k - 1; j++) {
for (i = 0; i < k - 1; i++) {
if (xi[i] > xi[i + 1]) {
temp = xi[i]; xi[i] = xi[i + 1];
xi[i + 1] = temp; }
}
}
setcolor(7);
for (i = 0; i < k; i += 2) {
line(xi[i], y, xi[i + 1] + 1, y);
}
}
getch();
closegraph();
return 0;
}
Output:
Output:
Output:
Output:
LAB 2
Output:
getch();
Reflect();
PolyLine();
getch();
closegraph();
}
Output:
Reflect();
PolyLine();
getch();
closegraph();
}
Output:
Output: