Дърво на Питагор
Облик
За информацията в тази статия или раздел не са посочени източници. Въпросната информация може да е непълна, неточна или изцяло невярна. Имайте предвид, че това може да стане причина за изтриването на цялата статия или раздел. |
Дървото на Питагор (англ. 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.

