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