14.2 Interpretado de la testudo

Tiu unua ekzemplo ebligis vin kompreni la nocion de sistemo de Lindenmayer, eble sen ekkonscii kiel ni uzos tion konkrete kun la testudo.

Ja tie tio estiĝas interesa: Ĉiu vorto tiel konstruita nur havas propran signifon. Oni tiam kroĉos al ĉiu litero de la sinsekvo, komandon rulotan de la testudo, por tiel generi desegnojn 2D aŭ 3D.

14.2.1 Oftaj simboloj

Ni prenu por ekzemplo α = 90 kaj unuecan moviĝon je 10 testudpaŝojn; jen:

Simbolo F + & ^ \ |
Komando XLogo an 10 mdn 90 dn 90 malsupren 90 supren 90 mdfn 90 dfn 90 dn 180

14.2.2 Neĝero de Koch

Konsideru la L-sistemon:

Unuaj iteracioj:

pict
pict


pict
pict

Programo en Logo:

 por neĝero :p
 provizu "unuo 300 / potencon 3 :p-1
 ripetu 3 [F :p-1 td 120]
 fino
 
 por F :p
 se :p=0 [an :unuo haltu]
 F :p-1 mdn 60 F :p-1 dn 120 F :p-1 md 60
 F :p-1
 fino

14.2.3 Kurbo de Koch je ordo 2

Ni interesiĝu pri la jena L-sistemo:

Jen la unuaj reprezentoj uzante α = 90 kaj alĝustigante la unuecan paŝon tiel ke la figuro havu ĉiam la saman amplekson:

pict
pict


pict
pict

Tre facilas do krei la programon Logo ebligantan generi tiujn desegnojn:

                                                                                                  
                                                                                                  
 # p indikas l’ iteracion
 por koch :p
   # Je ĉiu iteracio, la unueca distanco dividatas per 4
   # Ĉi tie, la fina figuro havos amplekson 600x600 maksimume
   provizu "unuo 300 / potencon 4 :p-1
   ripetu 3 [F :p-1 tg 90] F :p-1
 fino
 
 # La ĉeno reskribada
 por F :p
   se :p=0 [an :unuo haltu]
   F :p-1 mdn 90 F :p-1 dn 90 F :p-1 dn 90
   F :p-1 F :p-1 mdn 90 F :p-1 mdn 90 F :p-1 dn 90 F :p-1
 fino

14.2.4 Kurbo de l’ dragono

 por a :p
 se :p=0 [an :unuo haltu]
 a :p-1 mdn 90 b :p-1 mdn 90
 fino
 
 por b :p
 se :p=0 [an :unuo haltu]
 dn 90 a :p-1 dn 90 b :p-1
 fino
 
 por dragono :p
 provizu "unuo 300 / 8 / :p
 a :p
 fino

pict
dragono 10
pict
dragono 15

14.2.5 Kurbo de Hilbert en 3D

La sekva ekzemplo estas la kurbo de Hilbert en la spaco; ĝi estas kurbo kun la atributo plenigi tute kubon kiam oni pligrandigas la nombron de iteracioj .

Jen la rilata sistemo:

 por hilbert :p
 ev perspektive
 provizu "unuo 400 / potencon 2 :p
 linia_difino sdikp :unuo/2
 a :p
 linia_difinhalto
 tridimensie_vidigu
 fino
 
 por a :p
 se :p=0 [haltu]
 b :p-1 dn 90 an :unuo mdn 90 c :p-1 an :unuo c :p-1
 mdn 90 an :unuo dn 90 d :p-1 malsupren 90 an :unuo supren 90 d :p-1
 dn 90 an :unuo mdn 90 malsupren 180 c :p-1 an :unuo c :p-1
 mdn 90 an :unuo mdn 90 b :p-1 dfn 180
 fino
 
 por b :p
 se :p=0 [haltu]
 a :p-1 malsupren 90 an :unuo supren 90 c :p-1 an :unuo b :p-1 supren 90
 an :unuo supren 90 d :p-1 supren 180 dn 90 an :unuo dn 90 d :p-1 supren 90
 dn 180 an :unuo supren 90 b :p-1 dn 180 an :unuo c :p-1 supren 90 an :unuo
 supren 90 a :p-1 dfn 180
 fino
 
 por c :p
 se :p=0 [haltu]
                                                                                                  
                                                                                                  
 dn 180 d :p-1 supren 90 dn 180 an :unuo supren 90 b :p-1 dn 90 an :unuo mdn 90
 c :p-1 supren 90 an :unuo supren 90 a :p-1 malsupren 180 an :unuo a :p-1 malsupren 90
 an :unuo supren 90 c :p-1 mdn 90 an :unuo mdn 90 b :p-1 supren 90 an :unuo supren 90
 d :p-1 dfn 180
 fino
 
 por d :p
 se :p=0 [haltu]
 dn 180 c :p-1 an :unuo b :p-1 dn 90 an :unuo mdn 90 b :p-1 dn 180
 an :unuo a :p-1 malsupren 90 an :unuo supren 90 a :p-1 malsupren 180 an :unuo
 b :p-1 dn 90 an :unuo mdn 90 b :p-1 dn 180 an :unuo c :p-1 dfn 180
 fino

Jen l’ unuaj iteracioj:

pict
pict


pict
pict