Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <list>
  3. #include<cmath>
  4. #include <algorithm>
  5.  
  6. #include <GL/glut.h>
  7. #include <GL/gl.h>
  8. #include <GL/glu.h>
  9. #include <vector>
  10. using namespace std;
  11.  
  12. double scale = 1.0;
  13.  
  14. void draw_line(double x, double y, double x1, double y1) {
  15. glBegin(GL_LINES);
  16. glVertex2d(x, y);
  17. glVertex2d(x1, y1);
  18. glEnd();
  19. }
  20.  
  21. void draw_restangle(float cx, float cy,float d,float r,float R ) {
  22. /*draw_line(x,y,d+x,y);//niz
  23. draw_line(d+x,y,d+x,r+y);//pravo
  24. draw_line(x,r+y,x+d,r+y);//verx
  25. draw_line(x,y,x,y+r);//levo*/
  26. double da=0.01;
  27. for (double angle=0;angle<2*M_PI;angle+=da){
  28. double x=R*cos(angle);
  29. double y=R*sin(angle);
  30. draw_line(3,3,cx+x,cy+y);
  31. }
  32.  
  33. }
  34.  
  35. void draw_circle(float cx, float cy,float R ) {
  36. /*draw_line(x,y,d+x,y);//niz
  37. draw_line(d+x,y,d+x,r+y);//pravo
  38. draw_line(x,r+y,x+d,r+y);//verx
  39. draw_line(x,y,x,y+r);//levo*/
  40. double da=0.0000000001;
  41. for (double angle=0;angle<2*M_PI;angle+=da){
  42. double x=R*cos(angle);
  43. double y=R*sin(angle);
  44. draw_line(cx,cy,cx+x,cy+y);
  45. }
  46.  
  47. }
  48.  
  49.  
  50.  
  51. void Render() {
  52. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  53. glLoadIdentity();
  54. glTranslatef(0, 0, -10);
  55. glColor3d(1, 1, 1);
  56. glScalef(scale, scale, scale);
  57. //
  58. //draw_restangle(1,1,1,1,1);
  59. draw_circle(0, 0, 1);
  60. /*draw_circle(0, 0, 2);
  61. draw_circle(0, 0, 3);
  62. draw_circle(0, 0, 4);
  63. draw_circle(0, 0, 5);
  64. draw_circle(0, 0, 6);
  65. draw_circle(0, 0, 7);
  66. draw_circle(0, 0, 8);*/
  67.  
  68. //
  69. glFlush();
  70.  
  71. }
  72.  
  73. void update(int t) {
  74. Render();
  75. glutTimerFunc(1, update, 0);
  76. }
  77.  
  78. void keyb(unsigned char key, int x, int y) {
  79.  
  80. Render();
  81. }
  82.  
  83. void reshape(int w, int h) {
  84. // если окно сильно перетянуто будет
  85. if(h == 0)
  86. h = 1;
  87. float ratio = 1.0* w / h;
  88.  
  89. // используем матрицу проекции
  90. glMatrixMode(GL_PROJECTION);
  91.  
  92. // Reset матрицы
  93. glLoadIdentity();
  94.  
  95. // определяем окно просмотра
  96. glViewport(0, 0, w, h);
  97.  
  98. // установить корректную перспективу.
  99. gluPerspective(45,ratio,1,1000);
  100.  
  101. // вернуться к модели
  102. glMatrixMode(GL_MODELVIEW);
  103. }
  104.  
  105. int main(int argc, char **argv)
  106. {
  107. glutInit(&argc, argv);
  108. glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
  109. glutInitWindowSize(800, 600);
  110. glutCreateWindow("Physics Engine");
  111. glEnable(GL_DEPTH_TEST);
  112. glMatrixMode(GL_PROJECTION);
  113. glLoadIdentity();
  114. glMatrixMode(GL_MODELVIEW);
  115. glLoadIdentity();
  116. glClearColor(0.1, 0.1, 0.1, 0.1);
  117.  
  118.  
  119. glutTimerFunc(50, update, 0);
  120. glutReshapeFunc(reshape);
  121. glutDisplayFunc(Render);
  122. glutKeyboardFunc(keyb);
  123. glutMainLoop();
  124.  
  125.  
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement