Generovanie farieb v appletochNajjednoduchší spôsob vykreslenia Mandelbrotovej množiny (MM) je použitím dvoch farieb. Napr. čiernej a bielej. Čierna farba predstavuje tie body, ktoré ležia v MM, biela tie, ktoré v MM neležia.
Čiernobiela Mandelbrotova množina
Už z predchádzajúcich článkov vieme, že body ktoré patria do MM majú absolútnu hodnotu menšiu ako 2. Tiež vieme, že ak v priebehu iteračného procesu absolútna hodnota prekročí 2, postupnosť diverguje a bod už neleží v MM.
Ak bod neleží vnútri MM, je možné ho zafarbiť na základe počtu iterácií, ktoré prebehnú od chvíle, keď absolútna hodnota prekročí 2. To sa dá využiť v tom jednoduchšom prípade na farbenie bodu rôznymi jasovými úrovňami šedej. Na obrázku tak vzniknú izoplochy, tj. súvislé jednofarebné plochy, ktorých farba odpovedá počtu iterácií potrebných pre zistenie, že pixel nepatrí do MM.
Programová realizácia v jave pomocou RGB modelu:
farba = 256 / cykly;
h.setColor(new Color(farba, farba, farba));
MM s rôznymi úrovňami šedej
časť v bielom štvorci je zobrazená na obrázku nižšie
izoplochy vo zväčšenej časti MM
čísla udávajú počet iterácií
Ďalší veľmi podobný spôsob sa dá použiť na vyfarbenie farebnej MM. Vyfarbujú sa jednotlivé farebné zložky RGB modelu bodov, ktoré nepatria do MM. Nakoniec sú to však aj tak len jasové úrovne jednotlivých farieb.
Na zeleno vyfarbená MM:
farba = 256 / cykly;
h.setColor(new Color(0, farba, 0));
MM v zelenom prevedení
Oveľa zaujímavejší a aj krajší spôsob, je využitím goniometrický funkcií na generovanie farieb. Používa sa takisto RGB farebný model. Každá zložka modelu je generovaná z počtu iterácií pomocou niektorej goniometrickej funkcie.
Použitie goniometrických funkcií v jave na generovanie farieb:
farbar = 150 + 104 * Math.sin(cyklus/30);
farbag = 150 - 104 * Math.cos(cyklus/10);
farbab = 150 - 104 * Math.sin(cyklus/60);
h.setColor(new Color(farbar, farbag, farbab));
farebná MM
zväčšená časť MM
Ďalšou možnosťou je použitie farebného modelu HSV (HSB). Na rozdiel od modelu RGB jeho základné zložky nie sú farby ale:
- Hue - farebný tón
- Saturation - sýtosť farby
- Value(Brightness) - hodnota jasu
Kód v jave:
farba = 256 / cykly;
h.setColor(Color.getHSBColor(farba, farba, farba));
MM v farebne vykreslená v HSB modeli
zväčšená časť MM
|