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

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

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

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

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

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

Рейтинг@Mail.ru Яндекс.Метрика
Среда программирования: 
Microsoft Visual C++ 2010 Express

#include "stdafx.h"
#include <glut.h>
#include <math.h>
#include <stdlib.h>
bool drawing=true;//параметр "рисовать/не рисовать"
float WinWid = 600.0, WinHei = 600.0;//размеры экрана
float X1=-100, Y1=100, X2=100, Y2=100, X3=100, Y3=-100, X4=-100, Y4=-100;//координаты квадрата
int cnt=0, Add=0;//вспомогательные переменные для изменения координат
float S1=100, S2=600, S3=500, S4=0;//координат треугольников
 
void KVADRAT(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)//функция прорисовки квадрата
{
	glBegin(GL_QUADS);
	glVertex2f(x1, y1);
	glVertex2f(x2, y2);
	glVertex2f(x3, y3);
	glVertex2f(x4, y4);
	glEnd();
 
}
void TREUGOLNIK(float s1, float t1, float s2, float t2, float s3, float t3)//функция прорисовки треугольников
{
	glBegin(GL_TRIANGLES);
	glColor3f(1.0, 0.0, 1.0);
	glVertex2f(s1, t1);
	glColor3f(0.0, 1.0, 1.0);
	glVertex2f(s2, t2);
	glColor3f(1.0, 1.0, 0.0);
	glVertex2f(s3, t3);
	glEnd();
}
 
void Draw()//функция прорисовки всего изображения
{
	glClear(GL_COLOR_BUFFER_BIT);//очистка буфера цвета
	glPushMatrix();//сохраняем текущую матрицу
	glColor3f(0.0, 0.0, 0.0);//выбираем чёрный цвет для квадрата
	KVADRAT(X1+Add, Y1+Add, X2+Add, Y2-Add, X3-Add, Y3-Add, X4-Add, Y4+Add);//рисуем квадрат
	if(drawing){//если drawing=true то рисуем треугольники
	TREUGOLNIK(-S1, S3-cnt, S4, S2-cnt,S1, S3-cnt);//верхний треугольник
	TREUGOLNIK(S3-cnt, -S1, S3-cnt, S1, S2-cnt,S4);//правый треугольник
	TREUGOLNIK(-S1, -S3+cnt, S1, -S3+cnt, S4, -S2+cnt);//нижний треугольник
	TREUGOLNIK(-S3+cnt, S1, -S3+cnt, -S1, -S2+cnt, S4);//левый треугольник
	}
	glPopMatrix();
	glutSwapBuffers();
}
 
void Initialize()//инициализация
{
	glClearColor(1.0, 1.0, 1.0, 1.0);//цвет фона
	glMatrixMode(GL_PROJECTION);//тип используемой матрицы
	glLoadIdentity();
	glOrtho(-WinWid/2, WinWid/2, -WinHei/2, WinHei/2, -200.0, 200.0);//выбор системы координат
	glMatrixMode(GL_MODELVIEW);
}
void Timer(int)//функция таймера
{
	if(cnt<400)cnt+=2;//изменение координаты для перемещения треугольников
	if(cnt==400)//после перемещения треугольников в нужную позицию рисуем новый квадрат, а треугольники не прорисовываем
	{	
		Add=100;
		drawing=false;
		cnt++;
	}
	if(cnt>400){//трансформируем квадрат до исходного размера
	if(Add!=0)
		{
			Add--;
		}
	else{ //снова рисуем треугольники с исходной позиции за экраном
		drawing=true;
		cnt=0;
		}
	}	
	glutPostRedisplay();
	glutTimerFunc(10, Timer, 0);
 
}
 
int main(int argc, char** argv)
{
	glutInit(&argc, argv);//инициализируем переменные
	glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
	glutInitWindowSize(WinWid, WinHei);//выбор размеров окна
	glutInitWindowPosition(50,50);//выбор позиции окна
	glutCreateWindow("Transforming square");//название окна
	glutDisplayFunc(Draw);//вызов функции прорисовки
	glutTimerFunc(10, Timer, 0);//вызов функции таймера
	Initialize();
	glutMainLoop();
	return 0;
}

Прикрепленный файлРазмер
Marokhovskaya_Kseniya_Transforming_squares.zip10.17 кб