Advertisement
Jokker115

Circle

Feb 21st, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <GL/glut.h>
  3. #include <GL/gl.h>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7.  
  8. double PHI = 0.0;
  9.  
  10. void flower(double x_shift,double y_shift,double scale)
  11. {
  12.     glBegin(GL_LINE_STRIP);
  13.  
  14.     for (int i = 0; i < 360; i++)
  15.     {
  16.         scale = sin(2 * i * M_PI /180.0 + PHI);
  17.         double x = x_shift + scale * cos(i * M_PI / 180.0 + PHI);
  18.         double y = y_shift + scale * sin(i * M_PI / 180.0 + PHI);
  19.         glVertex2d(x, y);
  20.     }
  21.  
  22.     glEnd();
  23. }
  24. void draw() {
  25.         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  26.         glLoadIdentity();
  27.  
  28.         flower (0, 0, 1);
  29.         flower (5, 5, 1);
  30.         flower (-5, -5, 1);
  31.         flower (-5, 5, 1);
  32.         flower (5, -5, 1);
  33.  
  34.         glutSwapBuffers();
  35. }
  36. void reshape(int w, int h) {
  37.     // определяем окно просмотра
  38.     glViewport(0, 0, w, h);
  39.  
  40.     // используем матрицу проекции
  41.     glMatrixMode(GL_PROJECTION);
  42.  
  43.     // единичная матрица
  44.     glLoadIdentity();
  45.  
  46.     glOrtho(-10, 10, -10, 10, -10, 10);
  47.  
  48.     // вернуться к модели
  49.     glMatrixMode(GL_MODELVIEW);
  50. }
  51. void update(int t) {
  52.     PHI += 0.1;
  53.     glutTimerFunc(50, update,0);
  54.     draw();
  55. }
  56. int main(int argc, char **argv)
  57. {
  58.     glutInit(&argc, argv);
  59.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
  60.     glutInitWindowSize(800, 800);
  61.     glutCreateWindow("Risunochki");
  62.     glClearColor(0.0, 0.0, 0.0, 0.0);
  63.     glutReshapeFunc(reshape);
  64.     glutDisplayFunc(draw);
  65.     glutTimerFunc(50, update, 0);
  66.     glutMainLoop();
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement