Нарисовать папоротник с помощью рекурсии - Pascal ABC
Формулировка задачи:
Нарисовать папоротник с помощью рекурсии
Решение задачи: «Нарисовать папоротник с помощью рекурсии»
textual
Листинг программы
///Модуль для рисования фракталов семейства "Лист папоротника" unit Paporotnik; uses GraphABC; type ///Настройки фрактала PaporotnikFractalInitalData = record data: array of array of real; P0,P1,P2,P3:real; end; ///Фрактал "Лист папоротника" PaporotnikFractal = class private data: array of array of real; P0,P1,P2,P3:real; public constructor(initdata: PaporotnikFractalInitalData); begin data := initdata.data; P0 := initdata.P0; P1 := initdata.P1; P2 := initdata.P2; P3 := initdata.P3; end; procedure Draw(x0,y0,Iterations,Height,Brightness: integer; fast: boolean); begin var plotx, ploty, x, y : real; var Size := Height/11; var Width := Height div 2; var dx := Width div 2; var dc := Iterations div Brightness; if fast then LockDrawing; for var i:=1 to Iterations do begin var P := Random(100); var rnd := P<P0 ? 0 : P<P1+P0 ? 1 : P<P2+P1+P0 ? 2 : 3; plotx := data[rnd,0]*x + data[rnd,1]*y; ploty := data[rnd,2]*x + data[rnd,3]*y + data[rnd,5]; x := plotx; y := ploty; SetPixel(x0+Round(x*Size) + dx, y0+Height - Round(y*Size), GreenColor(byte(30 + (i div dc)))); end; if fast then UnlockDrawing; end; end; end.
Объяснение кода листинга программы
- В модуле
Paporotnik
используется типPaporotnikFractalInitalData
, который представляет начальные данные для фракталаЛист папоротника
. Он содержит массивdata
, а также значенияP0
,P1
,P2
иP3
. - Фрактал
Лист папоротника
представлен типомPaporotnikFractal
. У этого типа есть приватные переменныеdata
,P0
,P1
,P2
иP3
, которые представляют собой начальные данные для фрактала. - Конструктор класса
PaporotnikFractal
принимает объектPaporotnikFractalInitalData
в качестве параметра и устанавливает соответствующие значения приватных переменных. - Метод
Draw
классаPaporotnikFractal
выполняет отрисовку фрактала на графике. Он использует циклfor
, чтобы вычислить координаты каждой точки на фрактале на основе начальных данных. Затем он использует функциюSetPixel
, чтобы установить цвет точки на графике. - Если параметр
fast
установлен в значениеtrue
, то методDraw
будет использовать оптимизированный алгоритм отрисовки, который работает быстрее, но может быть менее точным.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д