Филотаксис образац у Питхон-у | Јединица алгоритамске ботанике
Филотаксија/филотаксија је распоред листова на стабљици биљке и филотактичке спирале чине посебну класу шара у природи. Сама реч потиче од грчког пхуллон што значи 'лист' и такис што значи 'аранжман'. Основни цветни филотаксички аранжмани укључују:
1. Спирална филотакса -
У спиралној филотаксији појединачни цветни органи се стварају у редовном временском интервалу са истим дивергентним углом. Дивергентни угао у цвету са спиралном филотаксијом је приближно 137,5 степени што указује на образац који следи
Фибоначијев низ
.Слика испод приказује спиралне филотаксијске обрасце који имају спиралне обрасце у смеру казаљке на сату и у супротном смеру.
Важне тачке које треба напоменути:
- Фибоначијеви низови обично описују спирале које се налазе у природи. Израчунава се као низ у коме се претходни пар бројева сабира са следећим бројем у низу. Серија је 1 1 2 3 5 8 13 21 34 55 89 … .
- Заправо постоји један сет спирала у смеру казаљке на сату и један у смеру супротном од казаљке на сату.
- Спирале цветних органа прате бројник и именилац скупа офсет Фибоначијевих бројева (1/2 1/3 2/5 3/8 5/13 8/21 13/34 …). Бројилац је број пута или окретања око осе да бисте се вратили на почетак иницијације. Именилац означава број органа покренутих током окрета. Према томе, 2/5 би значило 2 окрета око осе и 5 органа да се врате на почетак.
- нпр. - У бору имамо (2 3) (5 3) и (5 8) филотаксе у цапитули пронађени парови су (21 34) (55 34) (55 89) и (89 144) а на ананасима са хексагоналним скалама налази се 133 тројки212 у зависности од 133 тројки (334) на величину примерака .
- Преваленција Фибоначијевог низа у филотаксији се често назива 'мистеријом филотаксије'.
Друге врсте цветних филотаксичних аранжмана су:
2. Филотакса са вијугама 3. Једноставна филотакса 4. Сложена филотакса и 5. Неправилна филотакса
Формирање узорка : Резиме
Прекрасан распоред листова код неких биљака зван филотаксис је подређен низу суптилних математичких односа. На пример, цветови у глави сунцокрета формирају две супротно усмерене спирале: њих 55 у смеру казаљке на сату и 34 у супротном смеру казаљке на сату. Изненађујуће
- Ови бројеви су узастопни Фибоначијеви бројеви.
- Односи алтернативних Фибоначијевих бројева су дати конвергентима према φ^(-2) где је φ златни пресек и каже се да мери део обрта између узастопних листова на стабљици биљке:
- на пример: 1/2 за брест и липу 1/3 за букву и леску 2/5 за храст и јабуку 3/8 за тополу и ружу 5/13 за врба и бадем итд.
- Сваки нови лист на стабљици биљке је постављен под одређеним углом у односу на претходни и тај угао је константан између листова: обично око 137,5 степени.
То је ако погледате одозго на биљку и измерите угао формиран између линије повучене од стабљике до листа и одговарајуће линије за следећи лист, видећете да генерално постоји фиксни угао који се зове угао дивергенције. Овде нас занима спирална филотаксија и кодираћемо да формирамо спиралну филотаксију у питону користећи графику корњаче.
Дизајнирање кода
- Кодираћемо две функције, једну за цртање филотаксије, а другу за цртање латица.
- Латице треба да се нацртају тек након што је филотаксис образац завршен. Тако ћемо позвати функцију дравПетал() из функције дравПхиллПаттерн() са последњим к и и координатама које се посећују након цртања филотаксис шаблона.
- Функција дравПетал() ће нацртати латице са функцијама корњаче и карактеристикама које се односе Програмирање корњача .
Да бисмо кодирали образац филотаксије, морамо да пратимо ове једначине:
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)
Псеудокод: Филотаксис образац
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Излаз:
Пхиллотакис Паттернс.
![]()
Креирај квиз