ALGORITAMSKA BOTANIKA Ognjen Šuljagić Mentor: prof. dr. sc. Željka Mihajlović
fizikalna simulacija botaničkog objekta u realnom vremenu Uvod Zadatak: fizikalna simulacija botaničkog objekta u realnom vremenu
Uvod opis L-sustava interpretacija korištenjem trokutastog pokazivača implementacija fizike programska implementacija
L-sustavi u osnovi slični Chomskyevim gramatikama produkcije se primjenjuju paralelno, a ne sekvencijalno biološka motivacija G = < V, ω, P> V – abeceda, ω – aksiom, P – konačan skup produkcija
Primjer L-sustava V: A, B ω: A P : (A → B), (B → AB) n = 0 : A n = 1 : B n = 2 : AB n = 3 : BAB n = 4 : ABBAB n = 5 : BABABBAB n = 6 : ABBABBABABBAB n = 7 : BABABBABABBABBABABBAB V: A, B ω: A P : (A → B), (B → AB) Fibbonaccievi brojevi
Interpretacija korištenjem trokutastog pokazivača kompleksniji botanički objekti trokutasti pokazivač turtle u LOGO stilu
Trokutasti pokazivač u 2D trojka (x, y, α) duljina koraka d, povećanje kuta δ simboli (F + - [ ]) kao naredbe
Trokutasti pokazivač u 3D orijentacija pomoću vektora H, L, U rotacija pokazivača: [H’ L’ U’]=[ H L U ] R simboli (F + - & ^ \ / | ) kao naredbe
Trokutasti pokazivač u 3D n=2, δ= 90° ω=A A->B-F+CFC+F-D&F^D-F+&&CFC+F+B// B->A&F^CFB^F^D^^-F-D^|F^B|FC^F^A// C->|D^|F^B-F+C^F^A&&FA&F^C+F+B^F^D// D->|CFB-F+B|FA&F^A&&FB-F+B|FC//
Implementacija fizike heuristička formula α = 0.001*(1-radijus)*|H X F| gdje je F je vektor sile koja djeluje na cijeli objekt
Programska implementacija Microsoft C++ 2008 Express Edition Direct3D 10 API
Programska implementacija Dodajemo četiri nova znaka: ! : dekrementiraj radijus segmenta ' : inkrementiraj trenutni intenzitet boje f : pomakni se u smjeru trokutnog pokazivača i nacrtaj liniju lista w : pomakni se u smjeru trokutnog pokazivača i nacrtaj liniju latice
Primjer 1 5 iteracija A A → [&FL!A]/////'[&FL!A]///////'[&FL!A] F → S/////F S → FL L → ['''^^{-f+f+f-|-f+f+f}]
Primjer 1
kao primjer 1, sa iscrtavanjem lišća, 7 iteracija
Primjer 3 5 iteracija P P->I+[P+C]--//[--L]I[++L]-[PC]++PC I->FS[//&&L][//^^L]FS S->SFS L->['{+f-ff-f+|+f-ff-f}] C->[&&&G'/W////W////W////W////W] G->FF W->['^F][{&&&&-w+w|-w+w}]
Primjer 3