Язык программирования:
C/C++
Среда программирования:
Visual Studio 2013
#include <glut.h> #include <math.h> #include <stdlib.h> #include <iostream> using namespace std; float aut, aut2, aut3;//счетчик float x, y;//координаты float angle, angle2, angle3, angle4;//параметр отвечающий за движение float sk = 1; //сохранение пропорций 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(); glScalef(sk, sk, sk); glRotatef(angle2, 0, 0, 1); glPushMatrix(); glTranslatef(0, 10 - angle, 0); glBegin(GL_QUADS);//рисуем квадрат glColor3ub(0, 0, 0);//цвет glVertex2f(-2.5, -2.5); glVertex2f(-2.5, 2.5); glVertex2f(2.5, 2.5); glVertex2f(2.5, -2.5); glEnd(); glPopMatrix(); glPushMatrix(); glTranslatef(-10 + angle, 0, 0); glRotatef(45, 0, 0, 1); glBegin(GL_QUADS);//рисуем квадрат glColor3ub(0, 0, 0);//цвет glVertex2f(-2.5, -2.5); glVertex2f(-2.5, 2.5); glVertex2f(2.5, 2.5); glVertex2f(2.5, -2.5); glEnd(); glPopMatrix(); glPushMatrix(); glTranslatef(0, -10 + angle, 0); glRotatef(25, 0, 0, 1); glBegin(GL_QUADS);//рисуем квадрат glColor3ub(0, 0, 0);//цвет glVertex2f(-2.5, -2.5); glVertex2f(-2.5, 2.5); glVertex2f(2.5, 2.5); glVertex2f(2.5, -2.5); glEnd(); glPopMatrix(); glPushMatrix(); glTranslatef(10 - angle, 0, 0); glRotatef(65, 0, 0, 1); glBegin(GL_QUADS);//рисуем квадрат glColor3ub(0, 0, 0);//цвет glVertex2f(-2.5, -2.5); glVertex2f(-2.5, 2.5); glVertex2f(2.5, 2.5); glVertex2f(2.5, -2.5); glEnd(); glPopMatrix(); //glPopMatrix(); glPopMatrix(); glutSwapBuffers(); } //установка таймера void Timer(int) { angle += 0.5 - aut; if (angle > 9.5) { aut = 0.5; angle2 += 5; sk -= 0.05; if (sk < 0.05) { angle = 0; sk = 1; aut = 0; } } cout << sk << endl; glutTimerFunc(50, 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; }
Прикрепленный файл | Размер |
---|---|
Basov-Tishenko_Alexandr_Sovmeshenie_Kvadratov.rar | 928.16 кб |
Комментарии
Я хотел узнать математика это обязательно в программирование. Пять лет назад просто
из любопытства я увлекся HTML потом изучил CSS и JvaScript потом изучил PHP и Java.
Как то не задумывался и начал смотреть форумы и узнал что без математики не стать
программистом.Пожалел что потерял время на изучение мне 50.В свое время я не учил
математику.Пожалуйста ответьте.
Здравствуйте, Ильгиз.
Математика - царица наук (Карл Гаусс). Изучение математики начинается с детского сада, когда нас учат считать и выполнять простые арифметические операции. Любой, даже самый простейший алгоритм будет связан с арифметическими вычислениями. Поэтому без математики не стать программистом. Однако, хороший программист оперирует сложными алгоритмами, построенными по законам различных разделов математики: геометрии, алгебры, теории множеств, тригонометрии и т.д. Большинство алгоритмов, представленных на данном сайте, являются самыми простыми алгоритмами компьютерной графики. При этом они используют известные математические формулы.