Фрактал Хартера — Хейтуея

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Дракон Хартера, також відомий як дракон Хартера - Хейтуея, був вперше досліджений фізиками NASA - John Heighway, Bruce Banks, і William Harter. Він був описаний в 1967 році Мартіном Гарднером (Martin Gardner) в колонці «Математичні ігри» журналу www.scientificamerican.com.


Багато властивостей фрактала були описані Чандлером Девісом і Дональдом Кнутом.

Для його побудови візьмемо відрізок. Повернемо його на 90 градусів навколо однієї з вершин і додамо отриманий відрізок до вихідного. Отримаємо куточок з двох відрізків. Повторимо описану процедуру. Повернемо куточок на 90 градусів навколо вершини і додамо отриману ламану до вихідної.

Код програми у середовищі програмування Borland Delphi 7.0 [1]


 unit Unit1;
 interface
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls;
 type
 TForm1 = class(TForm)
   Button1: TButton;
   PaintBox1: TPaintBox;
   procedure Button1Click(Sender: TObject);
   procedure Paint(x1,y1,x2,y2,k:Longint);
 private
   { Private declarations }
  public
  n: integer
   { Public declarations }
  end;
  var
  Form1: TForm1;
  implementation
  {$R *.dfm}
  procedure TForm1.Paint(x1,y1,x2,y2,k:Longint);
 var tx,ty:Longint;
 begin
 if n=1 then
 begin
 PaintBox1.Canvas.Pen.Color:=clRed;
 end else begin
 PaintBox1.Canvas.Pen.Color:=clRed;
 end;
  if k=0 then
   begin
    PaintBox1.Canvas.MoveTo(x1,y1);
    PaintBox1.Canvas.LineTo(x2,y2);
    Exit;
   end;
  tx := (x1+x2) div 2 + (y2-y1) div 2;
  ty := (y1+y2) div 2 - (x2-x1) div 2;
  Paint(x2,y2,tx,ty,k-1);
  Paint(x1,y1,tx,ty,k-1);
 end;
procedure TForm1.Button1Click(Sender: TObject);
Var x1,y1,x2,y2,k: Integer;
begin
PaintBox1.Width := 1000;
PaintBox1.Height:= 650;
PaintBox1.Canvas.Brush.Color := clWhite;
PaintBox1.Canvas.Rectangle(0,0,PaintBox1.width,PaintBox1.height);
    x1 := 200;
    y1 := 200;
    x2 := 500;
    y2 := 500;
    k  := 24;
    Paint(x1,y1,x2,y2,k);
  end.     end.
  1. Без коментарів