Язык программирования:
C/C++
Среда программирования:
microsoft visual studio 2013
#include <glut.h> #include <math.h> #include <stdlib.h> #include <iostream> using namespace std; float aut;//счетчик float color1 = 255;//белый цвет float color2 = 0;//черный цвет int t = 500;//кол-во полигонов 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);// очистка буфера //четырехугольник glBegin(GL_QUADS);//рисуем квадрат glColor3ub(105,105,105);//цвет glVertex2f(2.5, 4.5); glVertex2f(-2.5, 4.5); glVertex2f(-2.5, -4.5); glVertex2f(2.5, -4.5); glEnd(); //круг1 glBegin(GL_POLYGON); glColor3ub(color2,color2,color2); for(int i = 0; i<=t; i++) { float a = (float)i / t * 3.1415 * 2; x = sin(a)*1.2; y = cos(a)*1.2+3; glVertex2f(x,y); } glEnd(); //круг2 glBegin(GL_POLYGON); glColor3ub(color2,color2,color2); for(int i = 0; i<=t; i++) { float a = (float)i / t * 3.1415 * 2; x = sin(a)*1.2; y = cos(a)*1.2-3; glVertex2f(x,y); } glEnd(); //круг3 glBegin(GL_POLYGON); glColor3ub(color1,color1,color1); for(int i = 0; i<=t; i++) { float a = (float)i / t * 3.1415 * 2; x = sin(a)*1.2; y = cos(a)*1.2+3; glVertex2f(x,y); } glEnd(); //круг4 glBegin(GL_POLYGON); glColor3ub(color1,color1,color1); for(int i = 0; i<=t; i++) { float a = (float)i / t * 3.1415 * 2; x = sin(a)*1.2; y = cos(a)*1.2-3; glVertex2f(x,y); } glEnd(); //круг5 glBegin(GL_POLYGON); glColor3ub(color2,color2,color2); for(int i = 0; i<=t; i++) { float a = (float)i / t * 3.1415 * 2; x = sin(a)*1.2; y = cos(a)*1.2+3-angle; glVertex2f(x,y); } glEnd(); glutSwapBuffers(); } //установка таймера void Timer(int) { angle += 0.1;//движение if (angle > 5.9)//когда круг дошел до нижнего круга { angle = angle - 6;//возвращаю в начальное положение aut = aut + 1;//счетчик color1 = 0;//смена белого на черный color2 = 255;//черного на белый if ((int)aut % 2 == 0)//когда смена цвета произошла { color1 = 255;//смена черного на белый color2 = 0;//белого на черный } } 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(1.0, 1.0, 1.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; }
Прикрепленный файл | Размер |
---|---|
BrunsTasovka.rar | 940.02 кб |