Guest User

Untitled

a guest
Jul 16th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. #include <cmath>
  2. #include <ctime>
  3. #include <string>
  4. #include <iostream>
  5. using namespace std;
  6. #include <GL/glut.h>
  7.  
  8. void display();
  9. void myinit();
  10. void processSpecialKeys(int, int, int);
  11.  
  12. /* globals */
  13. GLsizei wh = 500, ww = 600; /* initial window size */
  14. GLdouble vw = 100;
  15.  
  16. void myinit()
  17. {
  18. glViewport(0, 0, (GLsizei) ww, (GLsizei) wh);
  19. glMatrixMode(GL_PROJECTION);
  20. glLoadIdentity();
  21. glOrtho(-100.0, 100.0, -100.0, 100.0, -100.0, 100.0);
  22. glMatrixMode(GL_MODELVIEW);
  23. glLoadIdentity();
  24.  
  25. glEnable(GL_DEPTH_TEST);
  26.  
  27. }
  28.  
  29. void display()
  30. {
  31. glClearColor (1.0, 1.0, 1.0, 1.0);
  32. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  33. glColor3f(0.0, 0.0, 0.0);
  34.  
  35. glBegin(GL_POLYGON);
  36. glVertex3f(0.0,-5.0,0.0);
  37. glVertex3f(50.0,-5.0,0.0);
  38. glVertex3f(50.0,5.0,0.0);
  39. glVertex3f(0.0,5.0,0.0);
  40. glEnd();
  41. glBegin(GL_POLYGON);
  42. glVertex3f(0.0,-5.0,0.0);
  43. glVertex3f(0.0,-5.0,5.0);
  44. glVertex3f(0.0,5.0,5.0);
  45. glVertex3f(0.0,5.0,0.0);
  46. glEnd();
  47. glBegin(GL_POLYGON);
  48. glVertex3f(0.0,-5.0,5.0);
  49. glVertex3f(50.0,-5.0,5.0);
  50. glVertex3f(50.0,5.0,5.0);
  51. glVertex3f(0.0,5.0,5.0);
  52. glEnd();
  53. glBegin(GL_POLYGON);
  54. glVertex3f(0.0,-5.0,0.0);
  55. glVertex3f(0.0,-5.0,5.0);
  56. glVertex3f(50.0,-5.0,5.0);
  57. glVertex3f(50.0,-5.0,0.0);
  58. glEnd();
  59. glBegin(GL_POLYGON);
  60. glVertex3f(50.0,5.0,0.0);
  61. glVertex3f(50.0,5.0,5.0);
  62. glVertex3f(0.0,5.0,5.0);
  63. glVertex3f(0.0,5.0,0.0);
  64. glEnd();
  65. // Arrow
  66. glBegin(GL_TRIANGLES);
  67. glVertex3f(50.0,-10,0.0);
  68. glVertex3f(60.0,0.0,0.0);
  69. glVertex3f(50.0,10.0,0.0);
  70. glEnd();
  71. glBegin(GL_TRIANGLES);
  72. glVertex3f(50.0,-10,5.0);
  73. glVertex3f(60.0,0.0,5.0);
  74. glVertex3f(50.0,10.0,5.0);
  75. glEnd();
  76. glBegin(GL_POLYGON);
  77. glVertex3f(50.0,-10,0.0);
  78. glVertex3f(50.0,-10,5.0);
  79. glVertex3f(60.0,0.0,5.0);
  80. glVertex3f(60.0,0.0,0.0);
  81. glEnd();
  82. glBegin(GL_POLYGON);
  83. glVertex3f(50.0,10,0.0);
  84. glVertex3f(50.0,10,5.0);
  85. glVertex3f(60.0,0.0,5.0);
  86. glVertex3f(60.0,0.0,0.0);
  87. glEnd();
  88.  
  89. glFlush();
  90. }
  91.  
  92. void processSpecialKeys(int key, int x, int y)
  93. {
  94. switch(key) {
  95. case GLUT_KEY_F7:
  96. gluPerspective(45.0, ww/wh, 20, 50);
  97. break;
  98. case GLUT_KEY_F8:
  99. glRotatef(3.0, 0.0, 1.0, 0.0);
  100. break;
  101. case GLUT_KEY_PAGE_UP:
  102. glRotatef(-3.0, 1.0, 0.0, 0.0);
  103. break;
  104. case GLUT_KEY_PAGE_DOWN:
  105. glRotatef(3.0, 1.0, 0.0, 0.0);
  106. break;
  107. case GLUT_KEY_UP:
  108. glScalef((1/1.1), (1/1.1), (1/1.1));
  109. break;
  110. case GLUT_KEY_DOWN:
  111. glScalef(1.1, 1.1, 1.1);
  112. break;
  113. case GLUT_KEY_LEFT:
  114. glRotatef(3.0, 0.0, 0.0, 1.0);
  115. break;
  116. case GLUT_KEY_RIGHT:
  117. glRotatef(-3.0, 0.0, 0.0, 1.0);
  118. break;
  119. }
  120. glutPostRedisplay();
  121. }
  122.  
  123.  
  124. int main(int argc, char** argv)
  125. {
  126. glutInit(&argc,argv);
  127. glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
  128. glutInitWindowSize(ww, wh);
  129. glutCreateWindow("3D Arrow");
  130. glutDisplayFunc(display);
  131. myinit();
  132. glutSpecialFunc(processSpecialKeys);
  133. glutMainLoop();
  134. }
Add Comment
Please, Sign In to add comment