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

Вход на сайт

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

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

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

Спасибо за реализацию, она действительно быстрая. Но не все линии отрисовывает в нужную сторону... Необходимо добавить проверку для случая X-линии if(y1 "<" y0) grad=-grad; и аналогично для Y-линии if(x1 "<" x0) grad=-grad; P.S. На...
Отличные уроки(учу GL по ним), только в renderScene нужно добавить очистку буфера цвета и буфера глубины. При изменении размеров треугольники размножаются)
как исправить это , сделал все по инструкции
Timer1 - выдает ошибку. Использовал IdleTimer1, работает! unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, OpenGLContext, GL, GLU; type { TForm1 } TForm1 =...
в коде присутствуют ошибки! // Считываем координаты procedure TForm1.getCoords(Sender: TObject); var j1:longint; begin n:= StrToInt(Edit2.Text); //число точек s1:=Edit1.Text; s2:=''; i := 1; j:=1; k:=0...

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

Яндекс.Метрика Рейтинг@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 кб