Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #include<iostream>
  2. #include<math.h>
  3. using namespace std;
  4.  
  5. #include<GL\glut.h>
  6.  
  7. void lineDDA (int x1, int y1, int x2, int y2);
  8. void init (void);
  9. void Display (void);
  10. void setPixel(int x, int y);
  11.  
  12. void main (int argc, char** argv) {
  13. glutInit(&argc, argv);
  14. glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  15. glutInitWindowPosition(0, 0);
  16. glutInitWindowSize(640, 480); //set Display window
  17. glutCreateWindow("Homework Line DDA Program");
  18. init();
  19. glutDisplayFunc(Display);
  20. glutMainLoop();
  21. }
  22.  
  23. void init (void) {
  24. glClearColor(1.0, 1.0, 1.0, 0.0);
  25. glMatrixMode(GL_PROJECTION);
  26. gluOrtho2D(0.0, 400.0, 0.0, 300.0);
  27. }
  28.  
  29. void lineDDA (int x1, int y1, int x2, int y2) {
  30. float m = (float) (y2-y1)/(x2-x1);
  31. if (m <= 1) {
  32. setPixel(x1, y1);
  33. float y = y1;
  34. for (int i =x1; i <= x2; i++) {
  35. y += m;
  36. setPixel(i, (int)y);
  37. }
  38. } else if (m > 1) {
  39. float x = 0;
  40. for (int i = y1; i <= y2; i++) {
  41. x += (1/m);
  42. setPixel(x, i);
  43. }
  44. } else if (m < 1 && -1 <= m) {
  45. float y = 0;
  46. for (int i =x1; i <= x2; i++) {
  47. y -= m;
  48. setPixel(i, (int)y);
  49. }
  50. } else if (m > 1 && (-1/m) <= m) {
  51. float x = 0;
  52. for (int i = y1; i <= y2; i++) {
  53. x -= (1/m);
  54. setPixel(x, i);
  55. }
  56. }
  57. }
  58.  
  59. void setPixel(int x, int y) {
  60. cout<<"x:"<<x << " y: "<< y <<endl;
  61. glBegin(GL_POINTS);
  62. glVertex2i(x, y);
  63. glEnd();
  64. }
  65.  
  66. void Display (void) {
  67. glClear(GL_COLOR_BUFFER_BIT);
  68. glColor3f(1.0, 0.0, 0.0);
  69.  
  70. lineDDA(48, 152, 400, 400);
  71. lineDDA(0, 53, 600, 461);
  72. lineDDA(100, 23, 550, 202);
  73.  
  74. glFlush();
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement