Advertisement
Guest User

Untitled

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