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

Вход на сайт

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

Построения
на плоскости (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


Папоротник Барнсли - фрактал, названный в честь Майкла Барнсли, британского математика, который первым описал его в своей книге "Фракталы Повсюду". Является одним из основных примеров "самоподобных" множеств, т.е. представляет собой математически генерируемый "шаблон", воспроизводимый при любом увеличении или уменьшении количества итераций.

Построение

Папоротник Барнсли строится при помощи 4-х афинных преобразований вида:

Барнсли представил свой IFS-код папоротника (Iterated function system - "Система повторяющихся функций") в виде матрицы значений:

w a b c d e f p
ƒ1 0 0 0 0.16 0 0 0.01
ƒ2 0.85 0.04 -0.04 0.85 0 1.6 0.85
ƒ3 0.2 -0.26 0.23 0.22 0 1.6 0.07
ƒ4 -0.15 0.28 0.26 0.24 0 0.44 0.07

где столбцы a-f - коэффициенты уравнения, а p - коэффициент вероятности, x и y - координаты.
Данная таблица отвечает следующим преобразованиям:




Папоротник Барнсли теоретически может быть построен вручную. Т.е. Вы берете ручку, лист в бумаги в мелкую клетку и следуете матрице коэффициентов. Однако, количество необходимый итераций исчисляется десятками тысяч, что делает использование компьютера, мягко говоря, желательным.
Варьируя значения констант в таблице можно получать множество различных моделей, отличных от Папоротника Барнсли:

Телиптерисовый папоротник





Лептоспоранговый папоротник



Пошаговое моделирование


Первая точка находится в начале координат (х0 = 0, у0 = 0), а затем новые точки итеративно вычисляются путем случайного применения одного из следующих четырех преобразований координат:

  • (1)xn + 1 = 0; yn + 1 = 0.16 yn.

Данное преобразование выбирается в 1% случаев и указывает на точку у основания "стебля". Эта часть рисунка в результате итерационных преобразований завершается первой.

  • (2) xn + 1 = 0.85 xn + 0.04 yn; yn + 1 = −0.04 xn + 0.85 yn + 1.6.

Преобразование (2) используется в 85% случаев и указывает на любую точку листовки попадающую в красный треугольник

  • (3) xn + 1 = 0.2 xn − 0.26 yn; yn + 1 = 0.23 xn + 0.22 yn + 1.6.

Выбирается в 7% случаев - попадания точки в синий треугольник и симметричного ему относительно главного стебля треугольника.

  • (4)xn + 1 = −0.15 xn + 0.28 yn; yn + 1 = 0.26 xn + 0.24 yn + 0.44.

В оставшихся 7% случаев используется преобразование (4) - для симметричных преобразованию (3) относительно стеблей 2-го порядка позиций.

Демонстрационные примеры по теме