Среда программирования:
Lazarus
Статья по теме:
Задача - построить алгебраический фрактал - биоморф на языке программирования Pascal.
Код программы:
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; PaintBox1: TPaintBox; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); type TComplex = record //типизированные константы X : Real; Y : Real; end; const //после какого количества шагов, функция должна прекрать работу iterations = 50; max = 70; var z, t, c : TComplex; //комплексные переменные x, y, n : Integer; xc, yc : Integer; //координаты центра PaintBox1 colour: TColor; //цвет begin with PaintBox1.Canvas do Begin Randomize; Clear; //очищаем PaintBox1 xc := Width div 2; //находим координаты центра PaintBox1 yc := Height div 2; // проходим каждый пиксель диапазона на экране for y := -yc to yc do for x := -xc to xc do begin n := 0; z.x := x * 0.01; z.y := y * 0.01; //выбираем значения константы с, которая определяет форму биоморфа c.x := 1.00003; c.y := 1.01828; //вычисляем реальную и мнимую части числа z while ((sqr(z.x) < max) and (sqr(z.y) < max)) and (n < iterations) do begin //запоминаем предыдущее значение t := z; //z^4 + c //вычисление в текущем значении n < iterations z.x := t.x * t.x * t.x * t.x + t.y * t.y * t.y * t.y - 6 * t.x * t.x * t.y * t.y + c.x; z.y := 4 * t.x * t.x * t.x * t.y - 4 * t.x * t.y * t.y * t.y + c.y; n:=n+1; end; if (abs(z.x) > 10) or (abs(z.y) > 1000) then begin //выбираем цвет по числу итераций colour := n mod 16; Pixels[xc+x,yc+y]:=RGBToColor(colour,0,0); end; end; end; end; end.
Прикрепленный файл | Размер |
---|---|
Stus_biomorf.rar | 1.06 Мб |