Python'da filotaksis modeli | Bir Algoritmik Botanik birimi
Filotaksis / filotaksi, bir bitki gövdesi üzerindeki yaprakların düzenlenmesidir ve Filotaktik spiraller, doğada kendine özgü bir desen sınıfı oluşturur. Kelimenin kendisi Yunanca 'yaprak' anlamına gelen phullon ve 'düzenleme' anlamına gelen taksilerden gelir. Temel çiçek filotaksik düzenlemeleri şunları içerir:
1. Spiral Filotaksis -
Spiral filotakside, bireysel çiçek organları aynı farklı açıyla düzenli bir zaman aralığında oluşturulur. Spiral filotaksili bir çiçekteki ıraksak açı yaklaşık 137,5 derecedir, bu da bir deseni takip eden bir modelin göstergesidir.
Fibonacci serisi
Aşağıdaki resimde hem saat yönünde hem de saat yönünün tersine spiral desenlere sahip spiral filotaksi desenleri gösterilmektedir.
Dikkat edilmesi gereken önemli noktalar:
- Fibonacci serisi tipik olarak doğada bulunan spiralleri tanımlar. Önceki sayı çiftinin toplamının serideki bir sonraki sayıya eşit olduğu bir seri olarak hesaplanır. Seri 1 1 2 3 5 8 13 21 34 55 89… .
- Aslında saat yönünde bir takım spiraller ve saat yönünün tersine bir takım spiraller vardır.
- Çiçek organ spiralleri, Fibonacci sayılarından oluşan bir pay ve payda kümesini takip eder (1/2 1/3 2/5 3/8 5/13 8/21 13/34…). Pay, başlatma başlangıç noktasına geri dönmek için eksen etrafındaki dönüş sayısı veya dönüş sayısıdır. Payda, dönüşler sırasında başlatılan organ sayısını gösterir. Bu nedenle 2/5, eksen etrafında 2 dönüş ve 5 organın orijine dönmesi anlamına gelir.
- örneğin - Çamda capituli'de (2 3) (5 3) ve (5 8) filotakslar bulunur ve bulunan çiftler (21 34) (55 34) (55 89) ve (89 144)'tür ve altıgen pullu ananaslarda üçüzler (8 13 21) veya (13 21 34) bulunur. örnekler.
- Fibonacci dizisinin filotaksideki yaygınlığına genellikle 'filotaksinin gizemi' denir.
Diğer çiçek filotaksik düzenleme türleri şunlardır:
2. Dairesel Filotaksis 3. Basit Dairesel Filotaksis 4. Karmaşık Dairesel Filotaksis ve 5. Düzensiz Dairesel Filotaksis
Desenin Oluşumu: Özet
Bazı bitkilerde filotaksis adı verilen yaprakların güzel dizilişi, bir dizi ince matematiksel ilişkiye uyar. Örneğin bir ayçiçeğinin başındaki çiçekçikler birbirine zıt iki spiral oluşturur; bunların 55'i saat yönünde ve 34'ü saatin tersi yönündedir. Şaşırtıcı bir şekilde
- Bu sayılar ardışık Fibonacci sayılarıdır.
- Alternatif Fibonacci sayılarının oranları yakınsaklarla φ^(-2)'ye verilir; burada φ, altın oran ve bir bitkinin sapı üzerindeki ardışık yapraklar arasındaki dönüş oranını ölçtüğü söylenir:
- Örneğin: Karaağaç ve ıhlamur için 1/2 Kayın ve ela için 1/3 Meşe ve elma için 2/5 Kavak ve gül için 3/8 Söğüt ve badem vb. için 5/13.
- Bir bitki gövdesindeki her yeni yaprağın bir öncekine göre belirli bir açıda konumlandırıldığı ve bu açının yapraklar arasında sabit olduğu, genellikle yaklaşık 137,5 derece olduğu anlaşılmaktadır.
Yani bitkiye yukarıdan bakarsanız ve gövdeden yaprağa çizilen bir çizgi ile bir sonraki yaprağa karşılık gelen çizgi arasında oluşan açıyı ölçerseniz, genellikle ıraksama açısı adı verilen sabit bir açının olduğunu göreceksiniz. Burada Spiral filotaksi ile ilgileniyoruz ve kaplumbağa grafiklerini kullanarak Python'da Spiral Filotaksi modelini oluşturmak için kodlayacağız.
Kodu Tasarlamak
- Biri filotaksi desenini çizmek için, diğeri yaprakları çizmek için iki fonksiyon kodlayacağız.
- Yaprakların yalnızca filotaksis deseni tamamlandıktan sonra çizilmesi gerekir. Bu nedenle, filotaksis deseni çizildikten sonra ziyaret edilen son x ve y koordinatlarıyla, DrawPhyllPattern() işlevinin içinden DrawPetal() işlevini çağıracağız.
- DrawPetal() fonksiyonu, kaplumbağa fonksiyonlarını ve özelliklerini içeren yaprakları çizecektir. Kaplumbağa programlama .
Filotaksis modelini kodlamak için şu denklemleri takip etmemiz gerekir:
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°
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)
PseudoCode: Filotaksis Deseni
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 APython Pattern Bimport 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 )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Çıkış:
Filotaksis Modelleri.
![]()
Test Oluştur