Vježbe 11
Fraktali
Primjer 1:
Julia-ovi skupovi - granice područja konvergencije u kompleksnoj ravnini.
Izvorni kod:
julia.c
- 'l' - smanjuje parametar lambda
- 'L' - povećava parametar lambda
Primjer 2:
Sebi-slični (eng.
self-similar) fraktali - "izrezivanje"
jednakostraničnog trokuta.
Izvorni kod:
trokuti.c
- 'n' - povećava dubinu rekurzije
- 'N' - smanjuje dubinu rekurzije
Primjer 3:
Fraktalna aproksimacija Brownovog gibanja - može poslužiti za
vizualizaciju iskrenja.
Izvorni kod:
iskra.c
- 'n' - povećava dubinu rekurzije
- 'N' - smanjuje dubinu rekurzije
- -> pritisak na bilo koju tipku ponovo iscrtava "iskru"
Primjer 4:
Plazma fraktal - zapravo dvodimenzionalna verzija Primjera 3.
Izvorni kod:
plazma.c
- 'n' - povećava dubinu rekurzije
- 'N' - smanjuje dubinu rekurzije
- -> pritisak na bilo koju tipku ponovo iscrtava "plazmu"
Savjet: najprije povećavati dubinu rekurzije (do recimo 10) - tek onda
se matrica potpuno ispuni, tj. vide se pravi efekti. Potom se pritiskom
na bilo koju tipku dobiva nova, sasvim drugačija slika.
10.1. Dopunite Primjer 1 tako da parametar lambda može biti i
kompleksan broj, te tipkama 'i' i 'I' omogućite interaktivnu promjenu
imaginarnog dijela od lambda (tipkama 'l' i 'L' neka se mijenja
realni dio).
10.2. Po uzoru na Primjer 2 napišite rekurzivni program koji
"izrezuje" tetraedre - vidi sliku:
tetraedri.png. Pomoć: vrhovi pravilnog tetredra
upisanog u sferu sa centrom u ishodištu (polumjer sfere r = 3) su
V
1(0, 3, 0), V
2(sqrt(6), -1, -sqrt(2)),
V
3(0, -1, 2 * sqrt(2)), V
4(-sqrt(6), -1, -sqrt(2)).
10.3. Modificirajte Primjer 4 tako da matricu vrijednosti plazma
fraktala interpretirate kao matricu visina nekog terena - vidi sliku:
teren.png.