Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<math.h>
- using namespace std;
- #include<GL\glut.h>
- void lineDDA (int x1, int y1, int x2, int y2);
- void init (void);
- void Display (void);
- void setPixel(int x, int y);
- void main (int argc, char** argv) {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
- glutInitWindowPosition(0, 0);
- glutInitWindowSize(640, 480); //set Display window
- glutCreateWindow("Homework Line DDA Program");
- init();
- glutDisplayFunc(Display);
- glutMainLoop();
- }
- void init (void) {
- glClearColor(1.0, 1.0, 1.0, 0.0);
- glMatrixMode(GL_PROJECTION);
- gluOrtho2D(0.0, 400.0, 0.0, 300.0);
- }
- void lineDDA (int x1, int y1, int x2, int y2) {
- float m = (float) (y2-y1)/(x2-x1);
- if (m <= 1) {
- setPixel(x1, y1);
- float y = y1;
- for (int i =x1; i <= x2; i++) {
- y += m;
- setPixel(i, (int)y);
- }
- } else if (m > 1) {
- float x = 0;
- for (int i = y1; i <= y2; i++) {
- x += (1/m);
- setPixel(x, i);
- }
- } else if (m < 1 && -1 <= m) {
- float y = 0;
- for (int i =x1; i <= x2; i++) {
- y -= m;
- setPixel(i, (int)y);
- }
- } else if (m > 1 && (-1/m) <= m) {
- float x = 0;
- for (int i = y1; i <= y2; i++) {
- x -= (1/m);
- setPixel(x, i);
- }
- }
- }
- void setPixel(int x, int y) {
- cout<<"x:"<<x << " y: "<< y <<endl;
- glBegin(GL_POINTS);
- glVertex2i(x, y);
- glEnd();
- }
- void Display (void) {
- glClear(GL_COLOR_BUFFER_BIT);
- glColor3f(1.0, 0.0, 0.0);
- lineDDA(48, 152, 400, 400);
- lineDDA(0, 53, 600, 461);
- lineDDA(100, 23, 550, 202);
- glFlush();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement