Home > Programming > Fractals > Triangle

 Previous Next

```const    escape=4.0;                { escape value }    attract=0.0001;            { attractor sensitivity } const    Black        = 0;    Blue         = 1;    Green        = 2;    Cyan         = 3;    Red          = 4;    Magenta      = 5;    Brown        = 6;    LightGray    = 7;    DarkGray     = 8;    LightBlue    = 9;    LightGreen   =10;    LightCyan    =11;    LightRed     =12;    LightMagenta =13;    Yellow       =14;    White        =15; function GetRGBColor(color:byte):longint; begin   case Color of     black : GetRGBColor := RGB(0,0,0);     blue  : GetRGBColor := RGB(0,0,128);     green : GetRGBColor := RGB(0,128,0);     cyan  : GetRGBColor := RGB(0,255,255);     red   : GetRGBColor := RGB(128,0,0);     magenta : GetRGBColor := RGB(128,0,128);     brown : GetRGBColor := RGB(128,128,0);     lightgray : GetRGBColor := RGB(192,192,192);     darkgray : GetRGBColor := RGB(128,128,128);     lightBlue : GetRGBColor := RGB(0,0,255);     lightGreen : GetRGBColor := RGB(0,255,0);     lightcyan : GetRGBColor := RGB(0,255,255);     lightRed : GetRGBColor := RGB(255,0,0);     lightmagenta : GetRGBColor := RGB(255,0,255);     yellow: GetRGBColor := RGB(255,255,0);     white : GetRGBColor := RGB(255,255,255);   else     GetRGBColor := RGB(0,0,255);   end; end; //////////////////////////////////////////////////////////////////////////////// procedure FTriangle(ABitmap: TBitmap); { compute and display Sierpinski triangle via random orbits} var    x, y      : integer;       { pixel coordinates }    triangle  : integer;      { select random traiangle}    i         : integer;       { loop counters}    MaxX,    MaxY      : integer;      { maximum X and Y coordinates}    Rect      : TRect;    Iterations: integer; begin   SetRect(Rect, 0, 0, ABitmap.Width, ABitmap.Height);   with Rect do   begin     MaxX := right - left;     MaxY := bottom - top;     { find maximum Y coordinate }     if (MaxX=0) or (MaxY=0) then exit;     MaxX := Min(MaxX,MaxY);     MaxY := MaxX;     right := left + MaxX;     bottom := top + MaxY;     x := random(MaxY);  {select random starting point}     y := random(MaxY);  {use MaxX=MaxY }     Iterations := MaxY * 100;     for i := 1 to  iterations do     begin       triangle := random(3)+1;  { select random number between 1 and 3}       case triangle of         { select which triangle to measure from }          1:   begin                x := x div 2;             { find 1/2 way point to  A}                y := (MaxY + y) div 2              end;          2:  begin                x := (MaxY div 2 + x) div 2; { find 1/2 way point to B }                y := y div 2              end;          3:  begin                x := (MaxY + x) div 2;        { find 1/2 way point to C}                y := (MaxY + y) div 2              end       end;       ABitmap.Canvas.Pixels[x+Left,y+Top] := ABitmap.Canvas.Pen.Color;     end;   end; end; //////////////////////////////////////////////////////////////////////////////// ```