[Back to TURTLE SWAG index] [Back to Main SWAG index] [Original]
(* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Programated by Vladimir Zahoransky ³
³ Vladko software ³
³ Contact : zahoran@cezap.ii.fmph.uniba.sk ³
³ Program tema : Triangle in circle - rekusion version ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ *)
{ This program draw triangle in circle in triangle in .... , but
with rekusion.
Part one of rekusion : Nathing
Part two of rekusion (penetrate) : Draw 1/2 of base direction.
Then rotate turtle to correkt angle.
It is 60 degrees (for elimination the next poly)
+ angle of Tales circle. (See rekpic11.pas !)
Here muth be vpravo. Draw the triangle and
then vlavo the Tales angle for next circle.
We muth to draw 5/6 of circle. (270 degress sector)
s/2 for next triangle is transverse.
(see rekpic11.pas !) (n do not increment, because
we are working in penetrate part)
For this work is axiliary variable l. L is a
level of effekt.
Part tree of rekusion (emerge) : Rotate a Tales circle angle and finish the
circle. (1/6) Rotate 60 - Tales circle
angle and finish the triangle. Here we
muth s/2 because we go outside to
inside.
This program do not work with alfa. (rekpic11.pas have alfa)
}
Uses okor;
Type
Mykor=object(kor)
Procedure poly(n:integer;s,u:real);
Procedure Draw(n:integer;s:real;p:integer);
End;
Var k:Mykor;
poc:integer;
Procedure Mykor.poly(n:integer;s,u:real);
Begin
While n>0 do Begin
Dopredu(s);
Vpravo(u);
Dec(n);
End;
End;
Procedure Mykor.draw(n:integer;s:real;p:integer);
Begin
if p=0 then
else Begin
Inc(poc);
Zmenfp(poc);
Dopredu(s/2);
Vpravo(60+180/n);
Poly(round(5*n/6),2*s*sin(pi/n)/sqrt(3),360/n);
Vlavo(180/n);
Draw(n,s*2,p-1);
Inc(poc);
Zmenfp(poc);
Vpravo(180/n);
Poly(round(n/6),2*s*sin(pi/n)/sqrt(3),360/n);
Vpravo(60-180/n);
Poly(2,s,360/3);
Dopredu(s/2);
End;
End;
begin
poc:=0;
With k do Begin
init(0,-50/sqrt(3)/2,-90);
draw(120,50,4);
Cakajklaves;
Koniec;
End;
End.
[Back to TURTLE SWAG index] [Back to Main SWAG index] [Original]