Advertisement
Guest User

Untitled

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