Язык программирования:
C/C++
Среда программирования:
Visual Studio 2013
#include <glut.h> #include <math.h> #include <stdlib.h> #include <iostream> using namespace std; 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);// очистка буфера for(float i = 0; i <=5 ; i+=0.5) { glBegin(GL_POLYGON);//рисуем полигон glColor3ub(0,0,0);//цвет glVertex2f(-5+i,-5+i); glVertex2f(-5+i,5-i); glVertex2f(5-i,5-i); glVertex2f(5-i,-5+i); glEnd(); glPushMatrix(); glRotatef(angle, 0, 0, 1); glBegin(GL_POLYGON);//рисуем полигон glColor3ub(255,255,255);//цвет glVertex2f(-4.5+i,-4.5+i); glVertex2f(-4.5+i,4.5-i); glVertex2f(4.5-i,4.5-i); glVertex2f(4.5-i,-4.5+i); glEnd(); glPopMatrix(); } glutSwapBuffers(); } //установка таймера void Timer(int) { angle+=0.5; glutTimerFunc(5,Timer,0);//обновлять экран каждые 8мсек 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; }
Прикрепленный файл | Размер |
---|---|
Shadrov_Melnica.rar | 935.14 кб |