Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.53 KB | None | 0 0
  1. //#include <windows.h>
  2. #include <stdlib.h>
  3. #include <GL/glut.h>
  4. #include <math.h>
  5.  
  6.  
  7. #define XMaxOkna 500
  8. #define YMaxOkna 500
  9. #define XPozycjaOkna 100
  10. #define YPozycjaOkna 100
  11.  
  12. using namespace std;
  13.  
  14. char tekst[] = "Laboratorium 11";
  15.  
  16. #define ANIM_FPS 40
  17. #define M_PI_NA_180 M_PI/180
  18.  
  19. GLenum glPolygonModeFace[3]= {GL_FRONT,GL_BACK,GL_FRONT_AND_BACK};
  20. GLenum glPolygonModeMode[3]= {GL_LINE, GL_POINT, GL_FILL};
  21. int glPolyFace =0;
  22. int glPolyMode =0;
  23. int glCullFaceFace =0;
  24.  
  25. int i=0;
  26. float kat=0;
  27. float r=0.4;
  28. float traX = 0.5;
  29. float traY = 0;
  30.  
  31. GLfloat rotA = 0;
  32. GLfloat rotX = 0;
  33. GLfloat rotY = 0;
  34.  
  35. GLfloat scaX = 0.1;
  36. GLfloat scaY = 0.1;
  37. GLfloat scaZ = 0.1;
  38.  
  39.  
  40. void displaySzescian() {
  41. glBegin (GL_QUADS);
  42.  
  43. glColor3f (0,1,0);
  44. glVertex3f (-1.0, -1.0, 1.0);
  45. glVertex3f (-1.0, 1.0, 1.0);
  46. glVertex3f (1.0, 1.0, 1.0);
  47. glVertex3f (1.0, -1.0, 1.0);
  48.  
  49. glColor3f (1,1,0);
  50. glVertex3f (1.0, 1.0, -1.0);
  51. glVertex3f (-1.0, 1.0, -1.0);
  52. glVertex3f (-1.0, -1.0, -1.0);
  53. glVertex3f (1.0, -1.0, -1.0);
  54.  
  55. glColor3f (0,0,1);
  56. glVertex3f (1.0, 1.0, -1.0);
  57. glVertex3f (1.0, 1.0, 1.0);
  58. glVertex3f (-1.0, 1.0, 1.0);
  59. glVertex3f (-1.0, 1.0, -1.0);
  60.  
  61. glColor3f (1,0,0);
  62. glVertex3f (-1.0, -1.0, -1.0);
  63. glVertex3f (-1.0, -1.0, 1.0);
  64. glVertex3f (1.0, -1.0, 1.0);
  65. glVertex3f (1.0, -1.0, -1.0);
  66.  
  67. glColor3f (0,1,1);
  68. glVertex3f (1.0, 1.0, -1.0);
  69. glVertex3f (1.0, -1.0, -1.0);
  70. glVertex3f (1.0, -1.0, 1.0);
  71. glVertex3f (1.0, 1.0, 1.0);
  72.  
  73. glColor3f (1,1,1);
  74. glVertex3f (-1.0, -1.0, 1.0);
  75. glVertex3f (-1.0, -1.0, -1.0);
  76. glVertex3f (-1.0, 1.0, -1.0);
  77. glVertex3f (-1.0, 1.0, 1.0);
  78.  
  79. glEnd ();
  80. }
  81.  
  82. void rysuj(GLfloat a, GLfloat b) {
  83. glPushMatrix();
  84. glTranslatef (a,b,0);
  85. glRotatef (rotA,rotX,rotY,0);
  86. glScalef (scaX,scaY,scaZ);
  87. displaySzescian();
  88. glPopMatrix();
  89. }
  90.  
  91. void display() {
  92. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  93. glMatrixMode (GL_MODELVIEW);
  94. glLoadIdentity();
  95. glEnable(GL_DEPTH_TEST);
  96. glCullFace(glPolygonModeFace[glCullFaceFace]);
  97. glPolygonMode(glPolygonModeFace[glPolyFace],glPolygonModeMode[glPolyMode]);
  98. rysuj(traX,traY);
  99. glFlush();
  100. glutSwapBuffers();
  101. }
  102.  
  103. void reshape(int w, int h) {
  104. glViewport(0, 0, (GLsizei) w, (GLsizei) h);
  105. glMatrixMode(GL_PROJECTION);
  106. glLoadIdentity();
  107. //gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h);
  108. glOrtho (-10, 10, -10, 10, 10, 10);
  109. glMatrixMode(GL_MODELVIEW);
  110. glLoadIdentity();
  111. };
  112.  
  113. void keyboard (unsigned char key, int x, int y) {
  114. switch(key) {
  115. case 'q':
  116. if (scaX>0.2) scaX-=0.1;
  117. break;
  118. case 'w':
  119. if (scaX<0.3) scaX+=0.1;
  120. break;
  121. case 'e':
  122. if (scaY>0.2) scaY-=0.1;
  123. break;
  124. case 'r':
  125. if (scaY<0.3) scaY+=0.1;
  126. break;
  127. case 't':
  128. if (scaZ>0.2) scaZ-=0.1;
  129. break;
  130. case 'y':
  131. if (scaZ<0.3) scaZ+=0.1;
  132. break;
  133. case 'a':
  134. glPolyFace=0;
  135. break;
  136. case 's':
  137. glPolyFace=1;
  138. break;
  139. case 'd':
  140. glPolyFace=2;
  141. break;
  142. case 'f':
  143. glPolyMode=0;
  144. break;
  145. case 'g':
  146. glPolyMode=1;
  147. break;
  148. case 'h':
  149. glPolyMode=2;
  150. break;
  151. case 'z':
  152. glEnable(GL_CULL_FACE);
  153. break;
  154. case 'x':
  155. glDisable(GL_CULL_FACE);
  156. break;
  157. case 'c':
  158. glCullFaceFace=0;
  159. break;
  160. case 'v':
  161. glCullFaceFace=1;
  162. break;
  163. case 'b':
  164. glCullFaceFace=2;
  165. break;
  166. default:
  167. return;
  168. }
  169. display();
  170. };
  171.  
  172. void idle() {
  173. rotA++;
  174. rotX++;
  175. rotY++;
  176. i+=1;
  177. kat = i * M_PI_NA_180;
  178. traX = r * cos(kat);
  179. traY = r * sin(kat);
  180. glutPostRedisplay();
  181. }
  182.  
  183. void timer(int val) {
  184. rotA++;
  185. rotX++;
  186. rotY++;
  187. i+=1;
  188. kat = i * M_PI_NA_180;
  189. traX = r * cos(kat);
  190. traY = r * sin(kat);
  191. glutPostRedisplay();
  192. glutTimerFunc(1000/ANIM_FPS, timer, 0);
  193. };
  194.  
  195. int main(int argc,char *argv[]) {
  196. glutInit(&argc, argv);
  197. glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  198. glutInitWindowSize(XMaxOkna, YMaxOkna);
  199. glutInitWindowPosition(XPozycjaOkna,YPozycjaOkna);
  200. glutCreateWindow(tekst);
  201. glutDisplayFunc(display);
  202. glutReshapeFunc(reshape);
  203. glutKeyboardFunc(keyboard);
  204.  
  205. //glutIdleFunc(idle);
  206.  
  207. glutTimerFunc(1000/ANIM_FPS, timer, 0);
  208.  
  209. glutMainLoop();
  210. return 0;
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement