logo

Modello fillotassi in Python | Un'unità di Botanica Algoritmica

La fillotassi/fillotassi è la disposizione delle foglie sul fusto di una pianta e le spirali fillotattiche formano una classe distintiva di modelli in natura. La parola stessa deriva dal greco phulon che significa "foglia" e taxi che significa "disposizione". Le composizioni fillotassiche floreali di base includono:

1. Fillotassi a spirale -

Nella fillotassi a spirale i singoli organi floreali vengono creati in un intervallo di tempo regolare con lo stesso angolo divergente. L'angolo divergente in un fiore con fillotassi a spirale si avvicina a 137,5 gradi, il che è indicativo di uno schema che segue un



Serie di Fibonacci

immagine come sfondo in css

L'immagine seguente mostra i modelli di fillotassi a spirale con modelli a spirale sia in senso orario che antiorario.

Modello fillotassi in Python | Un'unità di Botanica Algoritmica


Punti importanti da notare:

  1. Le serie di Fibonacci descrivono tipicamente le spirali che si trovano in natura. Viene calcolato come una serie in cui la somma della coppia di numeri precedente dà il numero successivo della serie. La serie è 1 1 2 3 5 8 13 21 34 55 89 … .
  2. In realtà c'è una serie di spirali in senso orario e una in senso antiorario.
  3. Le spirali degli organi floreali seguono un insieme di numeratore e denominatore di numeri di Fibonacci sfalsati (1/2 1/3 2/5 3/8 5/13 8/21 13/34 …). Il numeratore è il numero di volte o giri attorno all'asse per tornare all'origine di inizio. Il denominatore indica il numero di organi avviati durante i turni. Quindi un 2/5 indicherebbe 2 giri attorno all'asse e 5 organi per ritornare all'origine.
  4. es - Nel pino abbiamo fillotassi in capituli (2 3) (5 3) e (5 8) le coppie trovate sono (21 34) (55 34) (55 89) e (89 144) e sugli ananas a scaglie esagonali si trovano triplette (8 13 21) o (13 21 34) a seconda delle dimensioni degli esemplari.
  5. La prevalenza della sequenza di Fibonacci nella fillotassi viene spesso definita "il mistero della fillotassi".


Altri tipi di composizioni floreali fillotassiche sono:

2. Fillotassi a spirale 3. Fillotassi a spirale semplice 4. Fillotassi a spirale complessa e 5. Fillotassi irregolare

Formazione del modello: riepilogo

La bella disposizione delle foglie in alcune piante chiamata fillotassi obbedisce a una serie di sottili relazioni matematiche. Ad esempio, i fiori nella testa di un girasole formano due spirali dirette in senso opposto: 55 di esse in senso orario e 34 in senso antiorario. Sorprendentemente

  1. Questi numeri sono numeri consecutivi di Fibonacci.
  2. I rapporti dei numeri alternativi di Fibonacci sono dati dai convergenti a φ^(-2) dove φ è il rapporto aureo e si dice che misuri la frazione di giro tra le foglie successive sul fusto di una pianta:
  3. es: 1/2 per olmo e tiglio 1/3 per faggio e nocciolo 2/5 per quercia e melo 3/8 per pioppo e rosa 5/13 per salice e mandorlo ecc.
  4. Ogni nuova foglia sullo stelo di una pianta è posizionata con un certo angolo rispetto alla precedente e questo angolo è costante tra le foglie: solitamente circa 137,5 gradi.

Cioè se guardi la pianta dall'alto e misuri l'angolo formato tra una linea tracciata dal fusto alla foglia e una linea corrispondente per la foglia successiva, scoprirai che generalmente esiste un angolo fisso chiamato angolo di divergenza. Qui siamo interessati alla fillotassi a spirale e codificheremo per formare il modello di fillotassi a spirale in Python utilizzando la grafica della tartaruga.

char + int in Java

Progettare il codice

  1. Codificheremo due funzioni, una per disegnare il modello di fillotassi e l'altra per disegnare i petali.
  2. I petali devono essere disegnati solo dopo che il motivo di fillotassi è stato completato. Quindi chiameremo la funzione drawPetal() dall'interno della funzione drawPhyllPattern() con le ultime coordinate x&y visitate dopo aver disegnato il motivo di fillotassi.
  3. La funzione drawPetal() disegnerà i petali con le funzioni e le caratteristiche della tartaruga a cui fanno riferimento Programmazione della tartaruga .

Per codificare il modello di fillotassi dobbiamo seguire queste equazioni:

x = r*cos(θ)  
y = r*sin(θ)

r θ can also vary - so the to form phyllotactic pattern we substitutethe cartesian form
by polar form:

r = c*sqrt(n)
θ = n*137.508°
Modello fillotassi in Python | Un'unità di Botanica Algoritmica
Reduces the problem to optimal packing on a disc so  
r = c*sqrt(n) is from the area of the circle
Area = πr² and n fills the Area in some units
c1 * n/π = r² c is 1/sqrt(c1/π)
So r = some constant c * sqrt(n)

Pseudocodice: modello di fillotassi

IMPORT MODULES ( MATH TURTLE )  

FUNCTION - DrawPhyllotaxisPattern( turtle t length petalstart angle = 137.508 size cspread)
turtleColor('Black')
FillColor(''Orange')
Convert angle to radians (Φ)
initialize ( xcenterycenter ) = ( 00 )
Drawing the Pattern Starts:
For n in Range ( 0t ):
r = cspread * sqrt(n)
θ = n * Φ

x = r * cos(θ) + xcenter
y = r * sin(θ) + ycenter

TURTLE POSITION(xy)
START DRAWING():
if Drawing pattern ends:
DrawFlowerPetals()

FUNCTION - DrawFlowerPetals(Turtle x coordinate y coordinate)
DRAW using Turtle methods

Create Turtle = gfg
Call DrawPhyllotaxisPattern( gfg t length petalstart angle = 137.508 size cspread)

END
Python Pattern A
import math import turtle def drawPhyllPattern(turtle t petalstart angle = 137.508 size = 2 cspread = 4 ):  '''print a pattern of circles using spiral phyllotactic data''' # initialize position # turtle.pen(outline=1 pencolor='black' fillcolor='orange') turtle.color('black') turtle.fillcolor('orange') phi = angle * ( math.pi / 180.0 ) #we convert to radian xcenter = 0.0 ycenter = 0.0 # for loops iterate in this case from the first value until < 4 so for n in range (0 t): r = cspread * math.sqrt(n) theta = n * phi x = r * math.cos(theta) + xcenter y = r * math.sin(theta) + ycenter # move the turtle to that position and draw  turtle.up() turtle.setpos(x y) turtle.down() # orient the turtle correctly turtle.setheading(n * angle) if n > petalstart-1: turtle.color('yellow') drawPetal(turtle x y) else: turtle.stamp() def drawPetal(turtle x y ): turtle.penup() turtle.goto(x y) turtle.pendown() turtle.color('black') turtle.fillcolor('yellow') turtle.begin_fill() turtle.right(20) turtle.forward(70) turtle.left(40) turtle.forward(70) turtle.left(140) turtle.forward(70) turtle.left(40) turtle.forward(70) turtle.penup() turtle.end_fill() # this is needed to complete the last petal gfg = turtle.Turtle() gfg.shape('turtle') gfg.speed(0) # make the turtle go as fast as possible drawPhyllPattern(gfg 200 160 137.508 ) gfg.penup() gfg.forward(1000) 
Python Pattern B
import math import turtle def drawPhyllotacticPattern( t petalstart angle = 137.508 size = 2 cspread = 4 ):  '''print a pattern of circles using spiral phyllotactic data''' # initialize position turtle.pen(outline=1 pencolor='black' fillcolor='orange') # turtle.color('orange') phi = angle * ( math.pi / 180.0 ) xcenter = 0.0 ycenter = 0.0 # for loops iterate in this case from the first value until < 4 so for n in range (0 t): r = cspread * math.sqrt(n) theta = n * phi x = r * math.cos(theta) + xcenter y = r * math.sin(theta) + ycenter # move the turtle to that position and draw  turtle.up() turtle.setpos(x y) turtle.down() # orient the turtle correctly turtle.setheading(n * angle) if n > petalstart-1: #turtle.color('yellow') drawPetal(x y) else: turtle.stamp() def drawPetal( x y ): turtle.up() turtle.setpos(x y) turtle.down() turtle.begin_fill() #turtle.fill(True) turtle.pen(outline=1 pencolor='black' fillcolor='yellow') turtle.right(20) turtle.forward(100) turtle.left(40) turtle.forward(100) turtle.left(140) turtle.forward(100) turtle.left(40) turtle.forward(100) turtle.up() turtle.end_fill() # this is needed to complete the last petal turtle.shape('turtle') turtle.speed(0) # make the turtle go as fast as possible drawPhyllotacticPattern( 200 160 137.508 4 10 ) turtle.exitonclick() # lets you x out of the window when outside of idle 

Produzione:

Modelli di fillotassi.

Modello fillotassi in Python | Un'unità di Botanica Algoritmica

Crea quiz