logo

Phyllotaxis mönster i Python | En enhet för algoritmisk botanik

Phyllotaxis/phyllotaxi är arrangemanget av blad på en växtstam och de fyllotaktiska spiralerna bildar en distinkt klass av mönster i naturen. Själva ordet kommer från det grekiska phullon som betyder "löv" och taxis som betyder "arrangemang". De grundläggande blommiga phyllotaxiska arrangemangen inkluderar:

1. Spiral phyllotaxis -

Vid spiralfyllnad skapas de individuella blomorganen i ett regelbundet tidsintervall med samma divergerande vinkel. Den divergerande vinkeln i en blomma med spiralfyllnad är ungefär 137,5 grader vilket indikerar ett mönster som följer en



Fibonacci-serien

mysql visa alla användare

.Bilden nedan visar spiralfyllnadsmönstren med både medurs och moturs spiralmönster.

css text align
Phyllotaxis mönster i Python | En enhet för algoritmisk botanik


Viktiga punkter att notera:

  1. Fibonacci-serien beskriver vanligtvis spiraler som finns i naturen. Det beräknas som en serie där föregående talpar summerar till nästa tal i serien. Serien är 1 1 2 3 5 8 13 21 34 55 89 … .
  2. Det finns faktiskt en uppsättning spiraler i medurs riktning och en uppsättning i en moturs riktning.
  3. Blommiga orgelspiraler följer en täljare och nämnare uppsättning förskjutna Fibonacci-tal (1/2 1/3 2/5 3/8 5/13 8/21 13/34 …). Täljaren är antalet gånger eller varv runt axeln för att komma tillbaka till initieringsursprunget. Nämnaren anger antalet organ som initierats under svängarna. Därför skulle en 2/5 indikera 2 varv runt axeln och 5 organ för att återgå till ursprunget.
  4. t.ex. - I tallen har vi (2 3) (5 3) och (5 8) phyllotaxes in capituli paren som hittas är (21 34) (55 34) (55 89) och (89 144) och på ananas med sexkantiga fjäll är trillingarna (8 13 42) beroende på storlek 13 eller 342 av exemplaren.
  5. Prevalensen av Fibonacci-sekvensen i phyllotaxis kallas ofta för "mysteriet med phyllotaxis".


Andra typer av blommiga fyllotaxiska arrangemang är:

2. Snurrig Phyllotaxis 3. Enkel-whirled Phyllotaxis 4. Komplex-whirled Phyllotaxis & 5. Oregelbunden Phyllotaxis

Formning av mönstret: Sammanfattning

vad är build-essential ubuntu

Det vackra arrangemanget av löv i vissa växter som kallas phyllotaxis följer ett antal subtila matematiska samband. Till exempel bildar buktarna i huvudet på en solros två motsatt riktade spiraler: 55 av dem medurs och 34 motsols. Förvånande

  1. Dessa nummer är på varandra följande Fibonacci-nummer.
  2. Förhållandena mellan alternativa Fibonacci-tal ges av konvergenterna till φ^(-2) där φ är gyllene snittet och sägs mäta bråkdelen av ett varv mellan på varandra följande blad på stjälken av en växt:
  3. ex: 1/2 för alm och lind 1/3 för bok och hassel 2/5 för ek och äpple 3/8 för poppel och ros 5/13 för pil och mandel mm.
  4. Varje nytt blad på en växtstam placeras i en viss vinkel mot det föregående och att denna vinkel är konstant mellan bladen: vanligtvis cirka 137,5 grader.

Det vill säga om du tittar ner ovanifrån på plantan och mäter vinkeln som bildas mellan en linje som dras från stjälken till bladet och en motsvarande linje för nästa blad, kommer du att upptäcka att det i allmänhet finns en fast vinkel som kallas divergensvinkeln. Här är vi intresserade av Spiral phyllotaxy och vi kommer att koda för att bilda Spiral Phyllotaxy-mönster i python med hjälp av sköldpaddsgrafik.

Designa koden

reaktionstabell
  1. Vi kommer att koda två funktioner, en för att rita filotaximönstret och den andra för att rita kronbladen.
  2. Kronbladen behöver ritas först efter att phyllotaxismönstret är färdigt. Så vi kommer att anropa drawPetal()-funktionen inifrån drawPhyllPattern()-funktionen med de sista x & y-koordinaterna som besöks efter att ha ritat Phyllotaxis-mönstret.
  3. DragPetal()-funktionen kommer att rita kronbladen med sköldpaddsfunktioner och funktioner refererar Sköldpaddsprogrammering .

För att koda phyllotaxismönstret måste vi följa dessa ekvationer:

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°
Phyllotaxis mönster i Python | En enhet för algoritmisk botanik
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)

Pseudokod: Phyllotaxis-mönster

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 

Produktion:

Phyllotaxis mönster.

Phyllotaxis mönster i Python | En enhet för algoritmisk botanik

Skapa frågesport