- Applets : Fraktale : Apfelmännchen 2 -
Mit nur kleinen Veränderungen entsteht ein farblich abgestuftes Apfelmännchen-Applet.
Diejenigen C-Werte, deren Reihe (Zn) nach Zn+1 = Zn²
+ C nicht sofort konvergiert (dunklblauer Kernbereich), lassen sich je
nach ihrer "Fluchtgeschwindigkeit" farblich unterschiedlich
visualisieren.
Apfelmaennchen2.java
import java.awt.*;
import java.applet.*;
public class Apfelmaennchen2 extends Applet {
public void init() {
setBackground(new Color(255,255,255));
}
// C-Werte checken nach Zn+1 = Zn^2 + C, Zo = 0. 50 Iterationen.
public int checkC(double reC,double imC) {
double reZ=0,imZ=0,reZ_minus1=0,imZ_minus1=0;
int i;
for (i=0;i<50;i++) {
imZ=2*reZ_minus1*imZ_minus1+imC;
reZ=reZ_minus1*reZ_minus1-imZ_minus1*imZ_minus1+reC;
if (reZ*reZ+imZ*imZ>4) return i;
reZ_minus1=reZ;
imZ_minus1=imZ;
}
return i;
}
// Punkte berechnen und setzen
public void paint (Graphics g) {
double reC, imC, zelle=0.00625; // Ein Pixel = 0.00625
int x,y,iterationenC;
Color colAppleman = new Color(0,0,180); // Farbe Apfelmännchen
imC=-1.35; // oberer Rand
for (y=0;y<430;y++) {
reC=-2; // linker Rand
for (x=0;x<480;x++) {
iterationenC=checkC(reC,imC);
if(iterationenC==50) {
g.setColor(colAppleman);
g.drawLine(x,y,x,y);
}
else {
Color colPeriphery = new Color(255-(iterationenC%2*125),
255-(iterationenC%7*55), 255-(iterationenC%3*85));
g.setColor(colPeriphery); // Farbe Umgebung
g.drawLine(x,y,x,y);
}
reC=reC+zelle; // nächste Spalte
}
imC=imC+zelle; // nächste Zeile
}
}
}
Je nach dem wie schnell (Zn) mit Zn+1 = Zn² + C für einen gegebenes C divergiert, wird ein anderer Farbton generiert.
Für die einzelnen Farbanteile des Randbereichs gilt:
Rot = 255-(iterationenC%2*125)
Grün = 255-(iterationenC%7*55)
Blau = 255-(iterationenC%3*85)
Download Apfelmaennchen_2.zip (Applet und Code, ca. 2 kb)
© 2001-2004 Albert Kluge - Alle Rechte vorbehalten
Impressum | Datenschutz | Nutzung | eMail
|