Algorytmy stochastyczne, wykład 06 Systemy Liendenmayera w R
3Jarosław Piersa
Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika
2014-03-27
1 Grafika żółwiowa w R3 Opis
Instrukcje
2 Kontekstowe LS Kontekstowe LS
Latający żółw
pozycja Żółwia x , y , z,
orientacja żółwia: vh, vu, vl ∈ R3
vh — wektor (jednostkowy) opisujący kierunek głowy żółwia (gdzie żółw patrzy)
vl — wektor opisujący kierunek lewej ręki żółwia vu — wektor opisujący kierunek ”do góry”
tablica wektorów:
O =
vhtr vltr vutr
Latający żółw
pozycja: x , y , z, orientacja żółwia:
vh, vu, vl ∈ R3 vh — głowa żółwia vl — lewa żółwia vu — góra orientacja:
O =
vhtr vltr vutr
Latający żółw
instrukcja F — do przedu o s kroków rysując kreskę, pozycja przed: (x , y , z)
pozycja po: (x0, y0, z0) := (x , y , z) + s · vh
Obrót w lewo / prawo(yaw)
instrukcja + – — obrót o kąt ±α,
macierz obrotu:
RU =
cos α sin α 0
− sin α cos α 0
0 0 1
O0 = O · RU
Wznoszenie i opadanie (pitch)
instrukcja ˆ& — obrót o kąt
±α
macierz obrotu:
RL =
cos α 0 sin α
0 1 0
− sin α 0 cos α
O0 = O · RL
Obrót wokół nosa (roll)
instrukcja / \ — obrót o kąt ±α (beczka)
macierz obrotu:
macierz obrotu:
RU =
cos α sin α 0
− sin α cos α 0
0 0 1
O0 = O · RU O0 = O · RH
W tył zwrot
instrukcja | — obrót o π wokół osi up macierz obrotu:
RU =
−1 0 0
0 −1
0 0 +1
O0 = O · RH
Przykład
P =
A → [&FLA]/////[&FLA]//////[&FLA]
F → S////F S → FL
L → O % generuj liść α = π · 22.5/180
Kontekstowe LS
dopuszczamy zastępowanie symbolu znalezionego w kontekście
< — lewy kontekst
> — prawy kontekst
<> — obustronny kontekst
Kontekstowe LS
dopuszczamy zastępowanie symbolu znalezionego w kontekście lewy kontekst: abc < x → de
„w napisie abcx zastap x przez de”
prawy kontekst: x > fgh → ij
„w napisie xfgh zastap x przez ij ”
Kontekstowe LS
dwustronny kontekst:
abc < x > de → gh
„w napisie abcxde zastap x przez gh”
Kontekstowe LS
Uwaga 1. Konteksty mogą ignorować pewne symbole (np: +−) Uwaga 2. wzorzec może być rozdzielony rozgałęzieniem, ale powinien być wychwycony
np: a < x > c → y
stosuje się do x w napisie bcax[bb]c ponieważ instukcja ]
„resetuje” ciąg!