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

Вход на сайт

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

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

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

КРУГОВОЙ ФРАКТАЛ -ОШИБОЧНАЯ ПРОГРАММА! ПАПА ЗибЕрт
Можешь обяснить подробно что как работает, и почему массу не задаем
Здравствуйте, Ильгиз. Математика - царица наук (Карл Гаусс). Изучение математики начинается с детского сада, когда нас учат считать и выполнять простые арифметические операции. Любой, даже самый простейший алгоритм будет связан с арифметическими...
Я хотел узнать математика это обязательно в программирование. Пять лет назад просто из любопытства я увлекся HTML потом изучил CSS и JvaScript потом изучил PHP и Java. Как то не задумывался и начал смотреть форумы и узнал что без математики не...
Все верно, но так же необходимо зайти в: Компоновщик -> Ввод -> Дополнительные зависимости Здесь необходимо нажать изменить и в Дополнительные зависимости прописать это: SDL2.lib SDL2main.lib SDL2test.lib Без этого не заработает. (MVS 2015)

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

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

Программа рисует фрактал Жулиа.

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

#include <SFML\Graphics.hpp>
#include <SFML\Window.hpp>
#include <iostream>
#include <math.h>
 
using namespace std;
//Ширина и высота окна
const int winW = 750;
const int winH = 550;
 
 
//Функция прорисовки фрактала
 
void setFractal(sf::VertexArray & target_va) { 
	float cRe = -0.70176 , cIm = -0.3842;
	// вещественная и мнимая части.
	float newRe, newIm, oldRe, oldIm;
 
	//Определяем число итераций и время работы. 
	int maxIt = 300;
 
 
	for (int x = 0; x < winW; ++x) {
		for (int y = 0; y < winH; ++y){
			//вычисляем реальную и мнимую часть
			//масштабирования и значения позиции
			newRe = 1.5 * (x - winW / 2) / (0.5 * winW);
			newIm = (y - winH / 2) / (0.5 * winH);
 
 
 
			//начинается процесс итерации
			int curr_it;
			for (curr_it = 0; curr_it < maxIt; ++curr_it) {
				//Запоминаем значение предыдущей итерации
				oldRe = newRe;
				oldIm = newIm;
 
				// в текущей итерации вычисляются действительная и мнимая части
				newRe = oldRe * oldRe - oldIm * oldIm + cRe;
				newIm = 2 * oldRe * oldIm + cIm;
 
				// условие прерывания
				if (newRe * newRe + newIm * newIm > 4)
					break;
			}
 
			sf::Vertex tmp;
			tmp.color = sf::Color((curr_it - 1 * 9) % 60, (curr_it - 1 * 9) % 60, (curr_it - 1 * 9) % 60, (curr_it - 1 * 9) % 150);
 
			tmp.position = sf::Vector2f(x, y);
 
			target_va.append(tmp);
		}
	}
}
 
 
 
int main() {
	sf::RenderWindow window(sf::VideoMode(winW, winH), "FRACTAL"); //окно программы
 
	sf::VertexArray va; //массив вершин
	va.setPrimitiveType(sf::Points); //рисуем точками
 
	setFractal(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;
}

Прикрепленный файлРазмер
FractalJulia.zip773 кб