logo

Phylotaxis modelis Python | Algoritmiskās botānikas vienība

Filotaksija/filotaksija ir lapu izkārtojums uz auga stumbra, un filotaksi spirāles veido dabā atšķirīgu rakstu klasi. Pats vārds cēlies no grieķu vārda phullon, kas nozīmē 'lapa', un taxis, kas nozīmē 'izkārtojums'. Ziedu filotaksiskās pamatsastāvas ietver:

1. Spirālveida filotaksis -

Spirālveida filotaksijā atsevišķi ziedu orgāni tiek izveidoti regulārā laika intervālā ar vienādu atšķirīgu leņķi. Atšķirīgais leņķis ziedā ar spirālveida filotaksiju ir aptuveni 137,5 grādi, kas liecina par modeli, kas seko



Fibonači sērija

. Zemāk esošajā attēlā ir parādīti spirālveida filotaksijas raksti, kuriem ir gan pulksteņrādītāja virzienā, gan pretēji pulksteņrādītāja virzienam.

Phylotaxis modelis Python | Algoritmiskās botānikas vienība


Svarīgi punkti, kas jāņem vērā:

  1. Fibonači sērija parasti apraksta dabā sastopamās spirāles. To aprēķina kā sēriju, kurā iepriekšējais skaitļu pāris summējas līdz nākamajam sērijas skaitlim. Sērija ir 1 1 2 3 5 8 13 21 34 55 89 … .
  2. Faktiski ir viens spirāles komplekts pulksteņrādītāja virzienā un viens komplekts pretēji pulksteņrādītāja virzienam.
  3. Ziedu ērģeļu spirāles seko Fibonači skaitļu skaitītāju un saucēju kopai (1/2 1/3 2/5 3/8 5/13 8/21 13/34 …). Skaitītājs ir reižu vai apgriezienu skaits ap asi, lai atgrieztos iniciācijas sākumpunktā. Saucējs norāda pagriezienu laikā uzsākto orgānu skaitu. Tāpēc 2/5 nozīmētu 2 apgriezienus ap asi un 5 orgānus, lai atgrieztos sākotnējā vietā.
  4. piem. - Priedē mums ir (2 3) (5 3) un (5 8) filotaksi capituli, atrastie pāri ir (21 34) (55 34) (55 89) un (89 144) un ananāsos ar sešstūra zvīņām trīnīši (8 1) vai 13, atkarībā no izmēra ir atrasti (1423) no paraugiem.
  5. Fibonači sekvences izplatība filotaksē bieži tiek saukta par "filotakses noslēpumu".


Citi ziedu filotaksisko kompozīciju veidi ir:

2. Pīlotaksija 3. Vienkāršā filotakse 4. Sarežģītā filotakse un 5. Neregulārā filotakse

Modeļa veidošanās: kopsavilkums

Skaistais lapu izvietojums dažos augos, ko sauc par filotaksi, pakļaujas vairākām smalkām matemātiskām attiecībām. Piemēram, ziedi saulespuķu galviņā veido divas pretēji vērstas spirāles: 55 no tām pulksteņrādītāja virzienā un 34 pretēji pulksteņrādītāja virzienam. Pārsteidzoši

  1. Šie skaitļi ir secīgi Fibonači skaitļi.
  2. Alternatīvo Fibonači skaitļu attiecības ir norādītas ar konverģentiem φ^(-2), kur φ ir zelta griezums un ir teikts, ka mēra pagrieziena daļu starp secīgām lapām uz auga kātiņa:
  3. piemēram: 1/2 gobai un liepai 1/3 dižskābarža un lazdas 2/5 ozolam un ābelei 3/8 papelei un rozei 5/13 vītoliem un mandelēm utt.
  4. Katra jauna lapa uz auga kāta ir novietota noteiktā leņķī pret iepriekšējo, un šis leņķis starp lapām ir nemainīgs: parasti aptuveni 137,5 grādi.

Tas ir, ja paskatās uz augu no augšas un izmēra leņķi, kas veidojas starp līniju, kas novilkta no kāta līdz lapai, un atbilstošo līniju nākamajai lapai, jūs atklāsiet, ka parasti pastāv fiksēts leņķis, ko sauc par novirzes leņķi. Šeit mūs interesē spirālveida filotaksija, un mēs kodēsim, lai izveidotu spirālveida filotaksiju pitonā, izmantojot bruņurupuču grafiku.

Koda izstrāde

  1. Mēs kodēsim divas funkcijas, vienu, lai uzzīmētu filotaksijas modeli, un otru, lai zīmētu ziedlapiņas.
  2. Ziedlapiņas ir jāzīmē tikai pēc tam, kad ir pabeigts filotaksis raksts. Tāpēc mēs izsauksim funkciju drawPhyllPattern() no funkcijas drawPhyllPattern() iekšpuses ar pēdējām x & y koordinātām, kas tiek apmeklētas pēc Phyllotaxis raksta zīmēšanas.
  3. Funkcija drawPetal() uzzīmēs ziedlapiņas ar bruņurupuča funkcijām un funkcijām Bruņurupuču programmēšana .

Lai kodētu filotakses modeli, mums jāievēro šie vienādojumi:

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°
Phylotaxis modelis Python | Algoritmiskās botānikas vienība
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)

Pseidokods: Filotakses modelis

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 

Izvade:

Filotakses modeļi.

Phylotaxis modelis Python | Algoritmiskās botānikas vienība

Izveidojiet viktorīnu