You are on page 1of 2

c:\Users\madar\documents\visual studio 2010\Projects\prgm1\prgm1\source.

cpp 1
1 #include <GL/glut.h>
2 #include <stdio.h>
3 int x1, y1, x2, y2;
4 void myInit() {
5 glClear(GL_COLOR_BUFFER_BIT);
6 glClearColor(0.0, 0.0, 0.0, 1.0);
7 glMatrixMode(GL_PROJECTION);
8 gluOrtho2D(0, 500, 0, 500);
9 }
10 void draw_pixel(int x, int y) {
11 glBegin(GL_POINTS);
12 glVertex2i(x, y);
13 glEnd();
14 }
15 void draw_line(int x1, int x2, int y1, int y2) {
16 int dx, dy, i, e;
17 int incx, incy, inc1, inc2;
18 int x,y;
19 dx = x2-x1;
20 dy = y2-y1;
21 if (dx < 0) dx = -dx;
22 if (dy < 0) dy = -dy;
23 incx = 1;
24 if (x2 < x1) incx = -1;
25 incy = 1;
26 if (y2 < y1) incy = -1;
27 x = x1; y = y1;
28 if (dx > dy) {
29 draw_pixel(x, y);
30 e = 2 * dy-dx;
31 inc1 = 2*(dy-dx);
32 inc2 = 2*dy;
33 for (i=0; i<dx; i++) {
34 if (e >= 0) {
35 y += incy;
36 e += inc1;
37 }
38 else
39 e += inc2;
40 x += incx;
41 draw_pixel(x, y);
42 }
43 } else {
44 draw_pixel(x, y);
45 e = 2*dx-dy;
46 inc1 = 2*(dx-dy);
47 inc2 = 2*dx;
48 for (i=0; i<dy; i++) {
49 if (e >= 0) {
50 x += incx;
51 e += inc1;
52 }
53 else
54 e += inc2;
55 y += incy;
56 draw_pixel(x, y);
57 }
58 }
59 }
60 void myDisplay() {
61 draw_line(x1, x2, y1, y2);
62 glFlush();
63 }
64 int main(int argc, char **argv) {
65 printf( "Enter (x1, y1, x2, y2)\n");
66 scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
67 glutInit(&argc, argv);
68 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
69 glutInitWindowSize(500, 500);
70 glutInitWindowPosition(0, 0);
71 glutCreateWindow("Bresenham's Line Drawing");
72 myInit();
73 glutDisplayFunc(myDisplay);
74 glutMainLoop();
c:\Users\madar\documents\visual studio 2010\Projects\prgm1\prgm1\source.cpp 2
75 return 0;
76 }

You might also like