Języki

You are here

Trójwymiarowy L-System

Wybierz język programu:


Klawisze sterujące:

lewy przycisk myszy obracanie
prawy przycisk myszy przesuwanie

Jak to działa?

Najpierw poczytaj, jak działają L-systemy w dwóch wymiarach.

L-systemy 3D są rozwnięciem tradycyjnych L-Systemów. W odróżnieniu od wersji 2D potrafią one generować formy przestrzenne takie jak rośliny, drzewa czy trójwymiarowe kształty matematyczne (przykładowa roślina znajduje się poniżej).


Podstawowa zasada tworzenia L-systemów pozostaje bez zmian tzn. używamy aksjomatu początkowego i zestawu reguł modyfikujących początkową produkcję.

Różnica polega na rozszerzonym opisie stanu w jakim znajduje się żółw. Pozycja opisywana jest za pomocą trzech zmiennych (x,y,z) zamiast dotychczasowych dwóch (x,y). Natomiast kierunek patrzenia jest opisywany za pomocą trzech liczb (dotychczas jednej). Każda z tych liczb definiuje wielkość obrotu względem danej osi.

W związku tym konieczne jest rozszerzenie dotychczasowego (2D) zestawu symboli:

F zrób krok w przód o zadanej długości
f zrób krok w przód o zadanej długości nic nie rysując
+ obróć się o określony kąt w lewo
- obróć się określony kąt w prawo
^ pochyl się do przodu o określony kąt
& pochyl się do tyłu o określony kąt
/ obróć się wokół własnej osi o określony kąt w prawo
\ obróć się wokół własnej osi o określony kąt w lewo
| zawróć
[ zapamiętaj stan na stosie
] pobierz stan ze stosu i usta jako bieżący

Każdy inny symbol jest ignorowany przez żółwia.

Zatem dla produkcji F[-F][^F/+F] i kąta 90 stopni otrzymamy:


  • F: idziemy do przodu (pionowa linia na pierwszym planie)
  • -F: skręcamy w prawo i krok do przodu (pozioma linia na pierwszym planie)
  • ^F: pochylamy się do tyłu i robimy krok (linia biegnąca w głąb, w tło)
  • /+F: obrót wokół własnej osi (zgodnie z ruchem wskazówek zegara), skręt w lewo a następnie krok (pionowa linia w tle)

Jeśli ograniczymy się do symboli F,f,+,-,[,], to będziemy mieli do czynienia z tradycyjnymi dwuwymiarowymi L-Systemami.

Program i tekst: Jarosław Puszczyński
Przepisanie na javascript: Bartosz Tatarski
Prowadzący: Maciej Komosiński