Prikazati skupove Mandelbrota i Julije na zadanom području kompleksne ravnine.
U svakoj točki kompleksne ravnine generira se niz i ispituje njegova konvergencija. Promatrani nizovi se generiraju iterativnim preslikavanjem, uz određene razlike – ovisno o tome da li se radi o Mandelbrotovom ili Julijevom skupu:
Mandelbrot:
zn+1 = zn2 + c
z0 = 0
c = u + i vJulija:
zn+1 = zn2 + c
z0 = u + i v
c = (zadano od korisnika)
Ocjenu o konvergenciji donosimo po jednostavnom kriteriju: ako niz nakon određenog broja iteracija prijedje zadani prag udaljenosti epsilon od ishodišta, smatramo da niz divergira; u suprotnom, smatramo da konvergira. Radijus i maksimalni broj dozvoljeni broj iteracija su među parametrima koje kontrolira korisnik.
Dano kompleksno područje se linearno preslikava na određeno područje na zaslonu, također određeno od strane korisnika.
Pseudokod:
Učitati korisničke parametre iz ulazne datoteke: prag eps, maks. broj iteracija m, područje kompleksne ravnine koja se promatra (umin, umax), (vmin, vmax). Za svaku točku zaslona x, y: Odrediti u i v. Postaviti k i r na nulu. Ponavljati sve dok je r < eps i istovremeno k < m: k = k + 1 zn+1 = zn2 + c r = sqrt (zreal2 + zimag2) Iscrtati točku (x, y) u boji k.
Područje konvergencije prikazujemo crvenom bojom, a područje divergencije plavo. Nijanse biramo sve svjetlije s porastom varijable k, uz napomenu da su svake dvije susjedne nijanse zamijenjene, pa nijanse idu redom svjetlija-tamnija-svjetlija, da bi granice među njima bile što uočljivije.
Program očekuje da mu se navede ulazna datoteka kao parametar:
Lab9.exe ulaz.txt
Primjer ulazne datoteke:
m=16 eps =100 umin = -1.5 umax = 0.5 vmin = -1 vmax = 1
daje prikaz Mandelbrotovog skupa:
Primjer ulazne datoteke:
m = 16 eps =100 umin = -1 umax = 1 vmin = -1.2 vmax = 1.2 creal = 0.32 cimag = 0.043
daje prikaz Julijevog skupa:
Ante Radman, Laboratorijske vježbe iz Računalne grafike, šk. godina 2003/2004.