Jan
21
2009

L-system (Lindenmayer-system)


Ett L-system (Lindenmayer-system) är ett system introducerat och utvecklat 1968 av den teoretiska ungerska biologen Aristid Lindenmayer. Systemet är mest känt för att beskriva tillväxten och strukturen för växter och träd, men kan även tillämpas för att modellera t.ex. vener, hjärna, och lungor mm i våra kroppar. L-system utgår från en initial sträng även kallad frö och axiom. Hur allt sedan växer beskrivs av produktionsregler som används som en slags kontextfri grammatik.

Exempel:

Axiom: B
Regler: B → F[-B] + B
F → FF

De funktioner som beskriver strukturen är rekursiva och går ut på att man substituerar B och F med dess regler. Axiomet B blir tex till uttrycket FF[-F[-B] + B] + F[-B] + B efter att B och F har substitueras  med F[-B] + B respektive FF.  Strängar växter otroligt snabbt och redan efter några iterationer är strängarna hopplöst stora och ohanterbara för oss människor. Som tur är finns det gott om programvaror för L-system, tex lsys.

Vad betyder strängarna?

Varje tecken i strängen F[-B] + B berättar för systemet om hur objektet kommer att växa. L-system använder en typ av ”turtle graphics” som är ett enkelt sätt att ge instruktioner till skrivhuvuden (turtle) om vad som skall göras. Tecken läses från vänster till höger i vanlig ordning och tolkas enligt tabellen nedan.

F Gå framåt och dra en linje från den gamle positionen till den nya
G Gå framåt utan att dra linje
+ Vinkla skrivhuvudet åt höger
- Vinkla skrivhuvudet åt vänster
[ Spara aktuell position och vinkel
] Ta bort senaste sparade position och återgå till den positionen

De längder som användes vid F och G då skrivhuvudet går framåt är fördefinierade och kan vara precis vad man önskar. Även vinklarna vid +/- är fördefinierade men ofta satt till 20 grader. Vill man flytta dra en linje som har en 40 graders vinkel åt vänster används alltså strängen ” – - F”.

Exempel på L-system

L-system i 3 steg

Relaterade inlägg

Om författaren: Kim

Administratör

Lämna en kommentar