Язык программирования:
C/C++
Среда программирования:
microsoft visual studio 2013
#include <glut.h> #include <math.h> #include <stdlib.h> #include <iostream> using namespace std; float aut, aut2, aut3, aut4;//клины float x, y;//координаты float angle;//параметр отвечающий за вращение //сохранение пропорций void proporsion(int w, int h) { if (h==0) { h=1; } float ratio = float(w)/h; glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45,ratio,500,500); glMatrixMode(GL_MODELVIEW); } //рисование void paint(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// очистка буфера //первый четырехугольник glPushMatrix();//сохранение матрицы glRotatef(angle, 0,0, 1);//поворот glBegin(GL_QUADS);//рисуем квадрат glColor3ub(0+aut3,255-aut3,0);//цвет glVertex2f(-4,-1); glVertex2f(-4,1); glVertex2f(4,1); glVertex2f(4,-1); glEnd(); // второй glBegin(GL_QUADS); glColor3ub(0+aut3,255-aut3,0); glVertex2f(-1,-4); glVertex2f(-1,4); glVertex2f(1,4); glVertex2f(1,-4); glEnd(); glPopMatrix(); glutSwapBuffers(); } //установка таймера void Timer(int) { angle += 0.5 - aut;//вращение aut3 += 1.5 - aut4;//становление красным if (aut3 > 245)//когда красный { aut4 = 6.5;//становление зеленым } if (aut3 < 5)//когда зеленый { aut4 = 0;//обнуляю параметры } if (angle > 44 && angle < 45)//когда повернулся на 44.5 градусов { aut = 0.5;//клин aut2 = aut2 + aut;//счетчик if(aut2 > 20)//пауза, обнуление параметров { aut2 = 0; aut = 0; } } if (angle > 85 && angle < 95)//когда повернулся в начальное положение обнуляю параметры { angle = angle - 90; } glutTimerFunc(15,Timer,0);//обновлять экран каждые 15мсек glutPostRedisplay(); } int main(int argc, char **argv) { // инициализация glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);//double: буфер рисования и буф сторонних вычислений glutInitWindowPosition(100, 100);//позиция окна glutInitWindowSize(500, 500);//размеры окна glutCreateWindow("Крест");//название окна glClearColor(0.0, 0.0, 0.0, 1.0);//цвет окна glOrtho(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0);//установка границ glutDisplayFunc(paint);//вызов функции рисования glutReshapeFunc(proporsion);//вызов функции сохранения пропорций glutTimerFunc(0,Timer,0);//вызов таймера glutMainLoop();//основной цикл return 1; }
Прикрепленный файл | Размер |
---|---|
BrunsKrest.rar | 945.66 кб |