Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <GL/glut.h>
- #include <GL/gl.h>
- #include <cmath>
- using namespace std;
- double PHI = 0.0;
- void flower(double x_shift,double y_shift,double scale)
- {
- glBegin(GL_LINE_STRIP);
- for (int i = 0; i < 360; i++)
- {
- scale = sin(2 * i * M_PI /180.0 + PHI);
- double x = x_shift + scale * cos(i * M_PI / 180.0 + PHI);
- double y = y_shift + scale * sin(i * M_PI / 180.0 + PHI);
- glVertex2d(x, y);
- }
- glEnd();
- }
- void draw() {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glLoadIdentity();
- flower (0, 0, 1);
- flower (5, 5, 1);
- flower (-5, -5, 1);
- flower (-5, 5, 1);
- flower (5, -5, 1);
- glutSwapBuffers();
- }
- void reshape(int w, int h) {
- // определяем окно просмотра
- glViewport(0, 0, w, h);
- // используем матрицу проекции
- glMatrixMode(GL_PROJECTION);
- // единичная матрица
- glLoadIdentity();
- glOrtho(-10, 10, -10, 10, -10, 10);
- // вернуться к модели
- glMatrixMode(GL_MODELVIEW);
- }
- void update(int t) {
- PHI += 0.1;
- glutTimerFunc(50, update,0);
- draw();
- }
- int main(int argc, char **argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
- glutInitWindowSize(800, 800);
- glutCreateWindow("Risunochki");
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glutReshapeFunc(reshape);
- glutDisplayFunc(draw);
- glutTimerFunc(50, update, 0);
- glutMainLoop();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement