Simulació de l'estructura d' un arbre
Aquest és un programa propi, creat amb l'interprete del llenguatge Logo, NetLogo, preparat per a representar, dins d'unes limitacions, una figura el més propera possible a l'estructura d'un arbre.
Podeu utilitzar l'aplicació prement el botó per preparar el programa i tot seguit el botó Per tal de fer creixer la figura.
Podem variar fàcilment diferents aspectes de la figura:
1. La mida del tronc
2. El nombre d'iteracions (el nombre de vegades que es repeteix la separació en branques)
3. El nombre de branques
4. La relació de mida entre les primeres branques i el tronc
5. L'angle d'obertura total de les branques.
6. Aleatorietat de mides i angles: Indica el grau d'aleatorietat, dins una límits, de la figura tant pel que fa a mides com pel que fa a angles.
La dimensió en aquest programa es calcula segons el nombre de branques i la variació de la mida de les branques.
Programació
El mètode fet servir en aquest programa consisteix en una instrucció que es crida a ella mateixa. És a dir, la tortuga inicial, que es troba a l'inici inferior del tronc, avança la mida inicial i reparteix tortugues allà on toca fer un branca que fan el mateix procediment en una altre escala però dins mateix de la instrucció. Així, la figura no es separa en diferents iteracions sinó que les fabrica totes de cop, hi ha una sola imatge per cada valor. Hi ha un comptador que atura l'execució de la instrucció quan arriba a un límit, en el nostre cas, el nombre d'iteracions.
En el món de la programació, a quest mètode de auto executar-se, s'anomena recursivitat .
Les instruccions que rep el programa són:
clear-all
create-turtles 1
ask turtles [ setxy 0 min-pycor + 5
hide-turtle]
end
to CREIX
pen-down
CAMI Mida_del_tronc 0
end
to CAMI [mida comptador]
if comptador <= Numero_d'iteracions [
fd mida * (1 + (random (Aleatorietat_mides_angles * 20)) / 60 )
lt (Angle_d'obertura_de_les_branques / 2 )* (1 + (random (Aleatorietat_mides_angles * 20)) / 80 )
repeat Numero_de_branques - 1 [
hatch 1 [CAMI mida * Variacio_de_la_mida_de_les_branques comptador + 1]
rt ( Angle_d'obertura_de_les_branques / ( Numero_de_branques - 1 ))* (1 + (random (Aleatorietat_mides_angles * 20)) / 80 ) ]
CAMI mida * Variacio_de_la_mida_de_les_branques comptador + 1
die]
end