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

Вход на сайт

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

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

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

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

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

Рейтинг@Mail.ru Яндекс.Метрика
Язык программирования: 
C/C++
Среда программирования: 
Visual Studio 2013

#include <glut.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
 
using namespace std;
 
float aut, aut2;//блок
float tua;//переменная возвращающая белый цвет
float color1 = 255;//белый цвет по умолчанию
float color2 = 0;
float x, y;//координаты
float angle = 0;
float angle2 = 1;
float angle3;
int t = 500;
 
//сохранение пропорций
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_POLYGON);//рисуем  полигон
glColor3ub(255, 255, 255);//цвет
for (float i = 0; i <= t; i++)
{
float a = float(i) / t * 3.1415 * 2;
x = sin(a) * 3;
y = cos(a) * 3;
glVertex2f(x, y);
}
glEnd();
 
glPushMatrix();
glRotatef(angle3, 0, 0, 1);
glPushMatrix();
glTranslatef(0, 2 - angle, 0);
glScalef(angle2, angle2, 0);
glBegin(GL_POLYGON);//рисуем  полигон
glColor3ub(0, 0, 0);//цвет
for (float i = 0; i <= t; i++)
{
float a = float(i) / t * 3.1415 * 2;
x = sin(a) * 3 / 2;
y = cos(a) * 3 / 2;
glVertex2f(x, y);
}
glEnd();
 
glPushMatrix();
glTranslatef(0, 3 - angle, 0);
glScalef(angle2, angle2, 0);
glBegin(GL_POLYGON);//рисуем  полигон
glColor3ub(255, 255, 255);//цвет
for (float i = 0; i <= t; i++)
{
float a = float(i) / t * 3.1415 * 2;
x = sin(a) / 2;
y = cos(a) / 2;
glVertex2f(x, y);
}
glEnd();
glPopMatrix();
 
glPushMatrix();
glTranslatef(0, 3 - angle, 0);
glScalef(angle2, angle2, 0);
glBegin(GL_POLYGON);//рисуем  полигон
glColor3ub(0, 0, 0);//цвет
for (float i = 0; i <= t; i++)
{
float a = float(i) / t * 3.1415 * 2;
x = sin(a)*0.5 / 2;
y = cos(a)*0.5 / 2;
glVertex2f(x, y);
}
glEnd();
glPopMatrix();
 
glPushMatrix();
glTranslatef(0, 0.7 - angle, 0);
glScalef(angle2, angle2, 0);
glBegin(GL_POLYGON);//рисуем  полигон
glColor3ub(255, 255, 255);//цвет
for (float i = 0; i <= t; i++)
{
float a = float(i) / t * 3.1415 * 2;
x = sin(a) * 2 / 2;
y = cos(a) * 2 / 2;
glVertex2f(x, y);
}
glEnd();
glPopMatrix();
 
glPushMatrix();
glTranslatef(0, 0.7 - angle, 0);
glScalef(angle2, angle2, 0);
glBegin(GL_POLYGON);//рисуем  полигон
glColor3ub(0, 0, 0);//цвет
for (float i = 0; i <= t; i++)
{
float a = float(i) / t * 3.1415 * 2;
x = sin(a) / 2;
y = cos(a) / 2;
glVertex2f(x, y);
}
glEnd();
glPopMatrix();
glPushMatrix();
glTranslatef(0, 0.7 - angle, 0);
glScalef(angle2, angle2, 0);
glBegin(GL_POLYGON);//рисуем  полигон
glColor3ub(255, 255, 255);//цвет
for (float i = 0; i <= t; i++)
{
float a = float(i) / t * 3.1415 * 2;
x = sin(a)*0.5 / 2;
y = cos(a)*0.5 / 2;
glVertex2f(x, y);
}
glEnd();
glPopMatrix();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
//установка таймера
void Timer(int)
{
angle += 0.1 - aut;
angle2 += 0.02 - aut2;
angle3 += 5;
if (angle > 3.5)
{
aut2 = 0.04;
aut = 0.2;
}
if (angle < 0)
{
aut2 = 0;
aut = 0;
}
glutTimerFunc(15, 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(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;
}

Прикрепленный файлРазмер
Shadrov_proekt Shalnaya vosmerka.rar949.76 кб