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

Вход на сайт

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

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

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

Здравствуйте, Ильгиз. Математика - царица наук (Карл Гаусс). Изучение математики начинается с детского сада, когда нас учат считать и выполнять простые арифметические операции. Любой, даже самый простейший алгоритм будет связан с арифметическими...
Я хотел узнать математика это обязательно в программирование. Пять лет назад просто из любопытства я увлекся HTML потом изучил CSS и JvaScript потом изучил PHP и Java. Как то не задумывался и начал смотреть форумы и узнал что без математики не...
Все верно, но так же необходимо зайти в: Компоновщик -> Ввод -> Дополнительные зависимости Здесь необходимо нажать изменить и в Дополнительные зависимости прописать это: SDL2.lib SDL2main.lib SDL2test.lib Без этого не заработает. (MVS 2015)
Спасибо за реализацию, она действительно быстрая. Но не все линии отрисовывает в нужную сторону... Необходимо добавить проверку для случая X-линии if(y1 "<" y0) grad=-grad; и аналогично для Y-линии if(x1 "<" x0) grad=-grad; P.S. На...
Отличные уроки(учу GL по ним), только в renderScene нужно добавить очистку буфера цвета и буфера глубины. При изменении размеров треугольники размножаются)

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

Яндекс.Метрика Рейтинг@Mail.ru
Скриншот к примеру
Среда программирования: 
Code::Blocks 16.01
Статья по теме: 

Программа рисует фрактал "Слово Фибоначчи".

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

#include <math.h>
#include <string>
using namespace std;
//ширина и высота
const int winW = 750; 
const int winH = 550;
//глубина
const int depth = 23; 
 
 
void setFractal(int x, int y, int len, int it, sf::VertexArray & target_va) {
 
	string s; // получаем строку Фибоначчи на n итерации
	string s1 = "1";
	string s2 = "0";
	for (int i = 0; i < it - 2; ++i) {
		s = s2 + s1;
		s1 = s2;
		s2 = s;
	}
	if (it == 1) {
		s = "1";
	}
	else {
		s = s2;
	} //теперь s - наша строка
 
	int vx = 0, vy = -1;// начальный вектор (0,-1) то есть вверх
	int x1 = x;
	int y1 = y;
	int x2, y2, temp;
 
	for (int i = 0; i < s.length(); i++) {
		x2 = x1 + len * vx; //проводим сегмент длины а в направлении вектора (vx,vy)
		y2 = y1 + len * vy;
		sf::Vertex tmp_x, tmp_y;
		tmp_x.color = tmp_y.color = sf::Color::Yellow;
		tmp_x.position = sf::Vector2f(x1, y1);
		tmp_y.position = sf::Vector2f(x2, y2);
		target_va.append(tmp_x);
		target_va.append(tmp_y);
		x1 = x2;
		y1 = y2;
		if (s[i] == '0') {
			if (i % 2 == 0) {// поворот налево
				temp = vx;
				vx = -1 * vy;
				vy = temp;
			}
			else {// поворот направо 
				temp = vx;
				vx = vy;
				vy = -1 * temp;
			}
		}
	}
}
 
 
 
int main() {
	sf::RenderWindow window(sf::VideoMode(winW, winH), "FRACTAL"); //устанавливаем окно
 
	sf::VertexArray va; //массив вершин
	va.setPrimitiveType(sf::Lines); //рисуем типом линия
 
	setFractal(50, winH - 100, 1, depth, va); //вызываем функцию прорисовки фрактала
 
	while (1) {
		sf::Event event;
		while (window.pollEvent(event)) {
			// События закрытия окну по клику на крестик и по нажатию Esc
			if (event.type == sf::Event::Closed || event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)
				return 0;
		}
		window.clear(sf::Color::Black);
 
		window.draw(va);
 
		window.display();
	}
	return 0;
}

Прикрепленный файлРазмер
FIBO_WORD.zip774.42 кб