Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.
Спасибо за статью. Я не Ваш студент. Но мне она помогла написать функцию для Канторова множества на Python для черепашки: import turtle def kanter(x, y, d):     if d > 1:         turtle...
Как реализовать в данном примере границы расчёта?

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Язык программирования: 
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.rar940.02 кб