Дървото на Питагор (англ. Pythagoras tree) е равнинна фигура, построена от квадрати.
Ако най-големият квадрат има големина 1x1, цялото дърво ще се събере
в размери 6×4.
Построение
Започва се с квадрат. Върху него се построяват 2 квадрата, намалени в мащаб 1:½√2
и страни, сключващи прав ъгъл. Същата процедура се прилага рекурсивно до безкрайност.
Програма за построение
Program PythagorasTree;
{version 6.0 }
{GPLv3 2007 }
{for turbo pascal 5.5}
uses CRT, Graph, DOS, turtle ;
{$DEFINE SVGA} { turn off for standard EGAVGA driver }
{$IFDEF SVGA}
{$I SVGA.INI} { specific init file for SVGA driver }
{$ENDIF}
Const
huge = 5; {25,55}
Var
Color : integer;
StartX, StartY : integer;
ScreenWidth, ScreenHeight : integer;
alpha : byte;
LineWidth,
Length : byte;
ch : char;
Procedure DrawSquare( Length : integer );
var i : Integer;
Begin
PenDown;
For i := 1 to 4 do begin
if i= 1 then SetPenColor(red) else SetPenColor(yellow);
Forwd ( Length );
TurnRight(90);
end
End;
Procedure DrawPythagorasTree ( Length : integer );
Begin
DrawSquare( Length );
If Length > huge then begin
Forwd( Length );
TurnLeft(alpha);
ch := readkey;
DrawPythagorasTree(abs(round( Length * sin( pi*0.5-alpha*pi/180) )));
TurnRight( 90 );
Forwd( abs(round( Length * sin(pi*0.5- alpha*pi/180) ) )) ;
{desen katet}
DrawPythagorasTree( abs(round(Length * sin(alpha*pi/180) ))) ;
SetPenColor(white);
Forwd( round(-Length * sin(pi*0.5-alpha*pi/180 )) );
TurnLeft( 90-alpha );
SetPenColor(green);
Forwd( -Length );
End;
End;
var grDriver,grMode,LowMode,HighMode : integer;
Procedure Graf;
Begin
grDriver:=detect;
grDriver := 9;
grMode :=1;
writeln(detect);
InitGraph(grDriver,grMode,'d:\usual\tp55\graf\');
if GraphResult <> 0 then begin
writeln ('error ', GraphErrorMsg(GraphResult),' ',GraphResult);
Halt(1);
end;
GetModeRange(GrDriver, LowMode,HighMode);
SetGraphMode(HighMode);
end;
Begin
ClrScr;
Length := 100;
Graf;
ScreenWidth := 640; {1280}
ScreenHeight := 480; {1024}
InitTurtle;
SetHeading( 0 ); {orientacia na kostenurkata}
SetPenColor(yellow);
Home;
ShowTurtle;
SetPosition( -length div 2 – 90, – ScreenHeight div 2 + 20);
setcolor(blue);
Line(0,0,639,0);Line(639,0,639,479);Line(639,479,0,479);Line(0,479,0,0);
SetPenColor(yellow);
alpha := 60;
DrawPythagorasTree(Length);
ch := readkey;
CloseGraph;
textmode(co80);
writeln ('End.');
End.
Общомедия