Kapitel 12: "Bildverarbeitung"

"Fraktal.java"


import java.awt.*;
import java.awt.image.*;
import java.io.File;
import java.io.IOException;
import javax.imageio.*;

public class Fraktal extends FensterSchliesstSchickKurz{
static int aufloesung = 500;
BufferedImage bild; // Hier speichern wir das einmal berechnete Bild

public Fraktal (String title1, int w, int h){
super(title1, w, h);
bild = new BufferedImage(aufloesung, aufloesung,
BufferedImage.TYPE_INT_RGB);
Graphics g = bild.createGraphics();
berechneBild(g);

try {
ImageIO.write(bild, "JPEG", new File("Apfelmann.jpg"));
} catch(IOException e) {
e.getStackTrace();
}
}

public int berechnePunkt(double x, double y){
KomplexeZahl c = new KomplexeZahl(x,y);
KomplexeZahl z = new KomplexeZahl(0,0);
double iter = 0;
for (;iter < 40; iter ++){
z = (z.mal(z)).plus(c);
if(z.norm() > 4) break;
}
return (int)Math.floor((255)*iter/40);
}

public void berechneBild(Graphics g){
for (double x=0; x < aufloesung;x++){
for (double y=0; y < aufloesung; y++){
int Fxy = 255 - berechnePunkt(2.5*x/aufloesung - 1.9,
2.5*y/aufloesung - 1.3);
g.setColor(new Color(Fxy, Fxy, Fxy));
g.fillRect((int)x, (int)y, 1, 1);
}
}
}

// Um Flackern zu vermeiden (siehe "Ghosttechnik" Tag 10)
public void update(Graphics g){
paint(g);
}

public void paint(Graphics g){
berechneBild(g);
}

public static void main(String[] args){
Fraktal f = new Fraktal ("Apfelmännchen", aufloesung, aufloesung);
f.setVisible(true);
}
}

Picksel Media Marco Block © 2006-2009 – ImpressumKontakt
Gestaltung und Umsetzung Tobias Losch, www.picksel-media.de