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

Вход на сайт

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

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

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

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

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

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

Одним из фракталов множества Мандельброта является «паук».
Рассматривается множество таких a, которые стремятся к бесконечности при итерировании вида:

z0=c0=a;

z'=z2+c;

c'=c/2+z';

Для построения фрактала будем использовать следующие формулы:

z.X=(z1.X)2-(z1.Y)2+c.X;

z.Y=2*z1.X*z1.Y+c.Y;

c.X=c1.X/2+z.X;

c.Y=c1.Y/2+z.Y;

Для прорисовки фрактала следует нажать кнопку "Fractal"

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

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 =class(TForm)
    Fractal: TButton;
    PaintBox1: TPaintBox;
    procedure FractalClick(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FractalClick(Sender: TObject);
   type
	TComplex = record
		X : Real;
		Y : Real;
	end;
       const
	iter = 50;
	max  = 16;
       var
        z1, z2, c1, c2 : TComplex;
	x, y, n : Integer;
	Mx, My  : Integer;
        col:TColor;
begin
    PaintBox1.Canvas.Clear; //очищаем canvas
    Mx := PaintBox1.Canvas.Width div 2;  //вычисляем центр (ширина)
    My := PaintBox1.Canvas.Height div 2; //вычисляем центр (высота)
    for y:=-My to My   do
     for x:=-Mx  to Mx   do
     begin
           //устанавливаем начальные значения параметров
           n:=0;
           z1.X:=x*0.01;
           z1.Y:=y*0.01;
           c1.X:=z1.X;
           c1.Y:=z1.Y;
            while ((z1.X*z1.X+z1.Y*z1.Y)<max) and (n<iter) do
            begin
                 z2:=z1;
                 c2:=c1;
                 z1.X:=(z2.X*z2.X)-(z2.Y*z2.Y)+c1.X;
                 z1.Y:=2*z2.X*z2.Y+c1.Y;
                 c1.X:=c2.X/2+z1.X;
                 c1.Y:=c2.Y/2+z1.Y;
                 n:=n+1;
            end;
 
             if (n<iter)   //цвет выбираем по числу итераций
             then
             begin
             col :=30*n mod 255;
             PaintBox1.Canvas.Pixels[(Mx div 2)+x, (My div 2)+y]:=RGBToColor(0, col, col);
             end;
     end;
end;
 
end. 

Прикрепленный файлРазмер
Spider_fractal.zip880.19 кб