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

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

Построения
на плоскости (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 Studio 2013
Статья по теме: 

При запуске программы открывается окно, в котором рисуется искомый фрактал.

Код программы: 

#define GL_GLEXT_PROTOTYPES
#include <windows.h>
#include <GL/gl.h>
#include <glut.h>
#include <GL/glu.h>
#include <math.h>
 
/* Обьявление функции, которая будет рисовать фрактал */
void func(double x, double y, double angle, double len, int deph);
 
/* Функция, прорисовывающая изображение в окне */
void display(void){
	/* Очистка экрана цветом по-умолчанию */
	glClear(GL_COLOR_BUFFER_BIT);
 
	/* Задание цвета для рисования */
	glColor3f(1.0f, 0.2f, 0.5f);
 
	/* Начало рисования. Вершины 2n и 2n+1 будут обьединены в линию*/
	glBegin(GL_LINES);
 
	/* Вызов функции, рисующей фрактал. В функции передаются вершины в буфер */
	func(50, 50, 1.1, 50, 12);
	/* Функция, выгружающая буфер в сцену */
	glEnd();
 
	/*  Прорисовка текущего буфера */
	glFlush();
}
 
/* Функция, определённая выше */
void func(double x, double y, double angle, double len, int deph){
	double angp = 0.5; //изменение угла
	for (int i = -1; i<5; i += 2){
		//если не достигнута глубина рекурсии - продолжить построение фрактала
		if (deph>0)
			func(x + cos(angle + i*angp)*len / 2, y + sin(angle + i*angp)*len / 2, angle + i*angp, len / 2, deph - 1);
		/* В буфер записываются вершины. Эти две вершины будут соединены в прямые между собой*/
		glVertex2d(x, y);
		glVertex2d(x + cos(angle + i*angp)*len / 2, y + sin(angle + i*angp)*len / 2);
	}
}
 
void init(void){
	/* Установка цвета по-умолчанию */
	glClearColor(0.0, 0.0, 0.0, 0.0);
	/* Задаются параметры сцены. Матрица преобразований для проекции, координаты сдвигаются в 0 и границы экрана устанавливаются в заданные*/
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(0.0, 100.0, 0.0, 100.0, -100.0, 100.0);
}
/* Позволяет закрыть программу нажатием клавиши "эскейп" */
void processNormalKeys(unsigned char key, int x, int y) {
	if (key == 27)
		exit(0);
}
 
 
int main(int argc, char** argv){
	/* Инициализируются буферы для glut-a*/
	glutInit(&argc, argv);
	/* Задаются режимы смешивания цветов и количество буферов*/
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	/* Задаётся размер окна 500 на 500*/
	glutInitWindowSize(500, 500);
	/* Окно сдвигается на 100 единиц по икс и по игрек */
	glutInitWindowPosition(100, 100);
	/* Создаётся окно с названием, размером и смещениями, которые были указаны */
	glutCreateWindow("Fractal");
	/* Вызывается функция инициализации, задания начальных параметров */
	init();
	/* Устанвливается фукция прорисовки, переданная как параметр */
	glutDisplayFunc(display);
	/* Задаётся функция, которая будет обрабатывать нажатия клавиш*/
	glutKeyboardFunc(processNormalKeys);
	/* Начинается выполнение прорисовки и обработка клавиш*/
	glutMainLoop();
	return 0;
}

Прикрепленный файлРазмер
Pifagor.zip166.29 кб