MWS_2021/Treść zadań/L-System-2.md

168 lines
8.2 KiB
Markdown
Raw Normal View History

2021-03-27 20:54:15 +01:00
# Filotaksja (Ulistnienie)
Regularne ułożenie bocznych (lateralnych) elementów roślin (liści, gałęzi, płatków kwiatów, kolce na róży itd) jest istotnym aspektem kształtu rośliny, znaną jako filotaksja. Jest to zagadnienie dogłębnie badane przez biologów jak i matematyków. W trakcie zajęć skupimy się na dwóch modelach, pozwalających na otrzymanie realistycznych obrazów kwiatów i owoców, w których pojawia się spirala filotaktyzna.
Pierwszy z nich opisuje rozmieszczenie na płaszczyźnie, został pierwszy raz wykorzystany przez Vogela do opisu struktury słonecznika. Natomiast drugi redukuje filotakcję do upakowania na cylindrze.
## Model planarny
Do opisu wzorców w słoneczniku Vogel zaproponował następujące reguły
$$ \phi = n * 137.5^\circ ,\quad r=c\sqrt{n}$$
gdzie:
* $n$ to indeks elementu kwiatu,
* $\phi$ to kąt między między ustalonym kierunkiem odniesienia a kierunkiem od centrum do danego elementu, gwarantuje, że kąt między dwoma kolejnymi elementami był 137.5 stopni. Można też o tym myśleć jak o kącie we współrzędnych kierunkowych,
* $r$ to promień - odległość od centrum,
* $c$ - ustalona stała.
Efekt wygląda następująco:
![Vogel](\Vogel.jpg)
### Zadanie
Zaproponuj L-System, który opisze poniższy model (będzie przypominał poniższy obrazek), możesz skorzystać ze znaków `+(a)`, który obraca o kąt `a`, `f(w)` który przesuwa o `w` do przodu oraz `S`, który rysuje sferę. Wyświetl go za pomocą sceny **LSystem3D**.
> Podpowiedź: wszystkie elementy mogą być dzieckiem jednego głównego znaku odpowiadającego za centrum
w otrzymanym wzorcu możemy zaobserwować 2 spirale, jedna obraca się zgodnie z ruchem wskazówek zegara, druga w przeciwną (znajdują się na rysunku poniżej ) znane też jako parastichy. Okazuje się,że liczba ramion w jednej i drugiej spirali jest zawsze równa dwóm kolejnym liczbom fibonacciego.
![parastichy](\parastichy1.jpg)
![parastichy](\parastichy2.jpg)
### Zadanie
Zmień kąt $\phi$ kolejno na 137.4 i 137.6 stopni jaką różnicę zauważasz?
### Modelowanie słonecznika
![słonecznik](\sunflower1.jpg)
![słonecznik](\sunflower2.jpg)
Oczywiście sama spirala, chociaż oddaje wzór filotaksji, to nie przypomina za bardzo słonecznika. Słoneczniki mają kwiatostan typu koszyczek, to znaczy duży kwiatostan widoczny widoczny na zdjęciu składa się tak na prawdę z wielu małych kwiatów. Od zewnątrz mamy kwiaty języczkowe, to te, które kończą się dużymi płatkami, wewnątrz są drobniejsze kwiaty rurkowe. Kwiaty zaczynają swój żywot w środku kwiatostanu, następnie są "spychane" na zewnątrz, dlatego możemy zaobserwować, że w środku są zielone świeże pąki, które żółkną im dalej są od środka, żeby następnie przejść w otwarte kwiaty.
By oddać ten efekt wystarczy dla większych wartości N wziąć różne obiekty, by zwiększyć realizm można też dodać także wygięcie widoczne na drugim obrazku
### Zadanie
Zmodyfikuj L-System i definicję żółwia z poprzedniego zadania tak, żeby otrzymać słonecznik. skorzystaj z modeli, które znajdują się w folderze Models/Sunflower. Przyjmij liczbę kroków koło 650.
Zmodyfikuj koszyk tak by był trochę wypukły, jak na drugim zdjęciu.
## Zadanie domowe
Napisz L-System i interpretację, która zamodeluje kwiat róży, zrób w wybranym programie graficznym lub znajdź kilka wariantów płatków, które wykorzystasz do reprezentowania różnych etapów rozwoju. `
## Filotaksja Liści
Przez filotaksję rozumiemy także rozmieszczenie liści na łodydze. Wyróżniane są różne typy filotaksji, część z nich jest pokazana na poniższym obrazku.
![rose](phyllotaxy_leaf.png)
# L-Systemy Kontekstowe
Dotychczasowe L-Systemy były systemami bezkontaktowymi, to znaczy reguły produkcyjne zależały wyłącznie od przepisywanego znaku. Jednak w modelowaniu procesów biologicznych przydatne będzie, żeby organy rośliny komunikowały się między sobą. W tym celu wykorzystamy L-Systemy kontekstowe.
Kontekst oznaczamy poprzez znaki `<` i `>`, gdzie `A < B` oznacza, że przepisany będzie `B`, jeżeli jego poprzednikiem jest `A`. Natomiast `C > D` oznacza, że przepisany zostanie `C` jeżeli jego następnikiem jest `D`.
Przykładowo poniższy L-System prezentuje przekazywanie sygnału od lewej do prawej
```
#axiom
BAAAAAAAA
#rules
B<A -> B
B -> A
#end rules
```
Kolejne kroki będą wyglądać następująco
```
ABAAAAAAA
AABAAAAAA
AAABAAAAA
...
AAAAAAAAB
AAAAAAAAA
```
Możesz to zobaczyć w scenie `Context`, ładując L-System `Context1.txt`.
Powyższy L-System nie jest specjalnie użyteczny, sygnał pochodzi znikąd i idzie donikąd. Można go z łatwością rozbudować tak, żeby po lewej był odbiornik, po prawej i przekaźnik po lewej.
```
#axiom
C(5,5)AAAAAAAAD(0)
#rules
C(a,b) > A : b<5 -> C(a,b+1)
C(a,b) > A : b>=5 -> C(a-1,0)
C(a,b) < A : b>=5 -> B
B<D(a) -> D(a+1)
B<A -> B
B -> A
#end rules
```
Ten L-System znajduje się w `Context2.txt`. Zauważ jak obiekt po prawej rośnie a po lewej się kurczy wraz z przesyłaną informacją. Można w ten sposób przekazywać informację pomiędzy organami rośliny. Poniższy obrazek prezentuje jak sygnał może być propagowany w dół (akropetalnie) i w górę (basipetalnie).
![propagacja](signal_propagation.jpg)
Propagacja sygnału jest jednym z narzędzi do wprowadzenia samoorganizacji w modelu rośliny, poprzez uzależnienie od siły sygnąłu siły decyzji jak dany organ ma się dalej zachować.
W dotychczasowych L-Systemach pojawiały symbole, które nie są częścią struktury rośliny, jedynie odpowiadają za geometrię (takie jak `+` albo `-`). Będą one przeszkadzać w komunikacji poprzez kontekst, w tym celu należy użyć słowa kluczowego `#ignore`, które mówi, żeby pominąć znaki które są wymienione po nim. Muszą one być wymienione w teh samej linii po spacji. Przykładowo zmodyfikowany powyższego LSystemu z dodanymi zgięciami. Będzie on działał dokładnie tak samo.
```
#ignore + -
#axiom
C(5,5)A+A+AA-A-AA-AD(0)
#rules
C(a,b) > A : b<5 -> C(a,b+1)
C(a,b) > A : b>=5 -> C(a-1,0)
B(1)<D(a) -> D(a+1)
B(a)<A -> B(a)
B(a) -> A
#end rules
```
### Zadanie
Bazując na L-Systemie powyżej napisz L-System, który będzie przekazywał w L-Systemie sygnał z korzenia do zalążków. W zależności od rodzaju sygnału powinien sie pojawić kwiat, liść lub nowe rozgałęzienie. To jakie sygnały wysyła może być losowe.
## Zadanie domowe
Wykorzystaj Pozyskaną wiedzę na temat filotaksji i propagacji informacji w L-Systemach do stworzenia modelu rozwoju róży. Użyj propagacji do sterowania wzrostem rośliny zgodnie ze schematem, jako kwiaty użyj wyników modelu z poprzedniego zadania (nie musisz wizualizować ich rozwijania się, wystarczy, że będą się pojawiać i znikać)
### Schemat rozwoju róży
Róża składa się z **łodyg**, **kwiatów** i **liści**. Częścią, która rośnie jest jest czubek łodygi, który będziemy nazywać **wierzchołkiem**.
Liście wyrastają bezpośrednio z łodygi, w filotaksji spiralnej. Każdy liść składa się z nieparzystej liczby liści rosnących na przeciwlegle.
![rose](Rose\3.jpg)
![rose](Rose\2.jpg)
Cykl rozwoju róży podzielimy na 4 etapy wzorowane na porach roku.
#### Wiosna
W miejscu starych liści pojawiają się **zalążki** nowych liści, w tym etapie każdy z nich ma szansę stać się **wierzchołkiem** nowej łodygi. Istniejące **wierzchołki** rosną i wytwarzają nowe zalążki liści.
#### Lato
Obecne **wierzchołki** kontynuują swój wzrost. Na tym etapie nowe łodygi mogą wyrosnąć tylko z nowych **zalążków**, które pojawiają się w wyniku rozwoju łodyg, ale szansa na ich pojawienie jest większa. W trakcie tego etapu **wierzchołek** może zmienić się w **kwiat**.
### Jesień
Wzrost rośliny się zatrzymuje, kwiaty zamieniają się w owoce, nie powstają nowe liście ani zalążki.
### Zima
Roślina czeka na nową wiosnę, powstałe owoce są obrywane przez okoliczne zwierzęta szukające pożywienia. Pojedyńcze elementy łodygi mogą zostać uśpione lub uszkodzone i w niektórych miejscach nie wyrosną nowe liście lub wierzchołek przestanie funkcjonować.
---
Poniżej znajduje się symboliczna reprezentacja zasad
![rose](Rose\rose_diagram.png)