[JAVA] ~ Mandelbrot-figuur..

Pagina: 1
Acties:
  • 160 views sinds 30-01-2008

  • Lord_aragorn
  • Registratie: Maart 2000
  • Laatst online: 01-08 21:23
Ik zit met 't volgende probleem..
Ik moet voor de Uni een Applet maken die een mandelbrot figuurtje tekent.
Afbeeldingslocatie: http://www.cs.uu.nl/docs/vakken/imp/pract1/mandel1.gif
http://www.cs.uu.nl/docs/vakken/imp/pract1/index.html
Nou was ik lekker onderweg,. compilen gaat goed,. maar ik krijg 't maar niet goed voor elkaar. Ik krijg alleen maar een zwart vlak.

Ziet iemand wat er fout is in deze code? Dan kan ik weer verder.
Thnx alvast..
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Mandelbrot extends Applet implements ActionListener
{
double x,y;
int herha;
TextField xMiddel,yMiddel,schaal,herhalingen;

public void init()
{
x = 0;
y = 0;

xMiddel = new TextField("0.0",15);
yMiddel = new TextField("0.0",15);
schaal = new TextField("0.01",15);
herhalingen = new TextField("100",15);
this.add(xMiddel);
this.add(yMiddel);
this.add(schaal);
this.add(herhalingen);
xMiddel.addActionListener(this);
yMiddel.addActionListener(this);
schaal.addActionListener(this);
herhalingen.addActionListener(this);
}

public void paint(Graphics g)
{
double xMid, yMid, scha;

//Text importeren vanuit de texboxes
xMid = Double.parseDouble(xMiddel.getText() );
yMid = Double.parseDouble(yMiddel.getText() );
scha = Double.parseDouble(schaal.getText() );
herha = Integer.parseInt(herhalingen.getText());


//MandelBrot-Figuur
for (int y=0;y<=400;y++)
{
for (int x=0;x<=400;x++)
{
int mandelgetal;
mandelgetal = this.Mandelcalc((x+200-xMid)*scha,(y+200-yMid)*scha);
if (mandelgetal%2==1)
g.setColor(Color.black);
else
g.setColor(Color.red);
g.drawRect((int)x,(int)y,1,1);

}

}

}


// #########################################
// ## ~*MANDELGETAL BEREKENEN*~ ##
// #########################################
private int Mandelcalc (double x, double y)
{
double a,b,c,olda;
int t;
t=0;
a=0;
b=0;
c=Math.sqrt(a*a+b*b);
while (c<=4 && t<=herha) // het mag 4 vanaf de oorsprong zijn, niet groter
{
olda = a;
a = a*a-b*b+x;
b = 2*olda*b+y;
t++;
}
return t;
}

public void actionPerformed(ActionEvent e)
{
this.repaint();
}

}

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Als ik jou was zou ik de afstand tot de oorsprong iedere iteratie berekenen. :P

Dus c=Math.sqrt(a*a+b*b) binnen je loop.

edit:
Point taken Soultaker. ;)
Ik ging meer uit van het Mandelbrot algoritme dan van code. Ik zie nu ook dat het zelfs voor een fractal leek, die wel kan programmeren, makkelijk was om te zien dat die controle op c zo nutteloos is, aangezien die var toch altijd gelijk blijft.

[ Voor 53% gewijzigd door Ericston op 02-02-2003 16:01 ]


  • Lord_aragorn
  • Registratie: Maart 2000
  • Laatst online: 01-08 21:23
[on topic]
zal 't even testen... -->> DONE!

Thnx! Wel stom idd,. maar ik zag 't gewoon effe niet meer :)
* Lord_aragorn bows!

[ Voor 61% gewijzigd door Lord_aragorn op 02-02-2003 13:52 . Reden: Oplossing gevonden,. Mod 'm maar dicht.. ]


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:08
Wat een "het werkt niet dus ik pleur al m'n code hier maar neer; gaan jullie het maar fixen" topic. :r

Al is je behulpzaamheid prijzenswaardig, Ericston, je hoeft natuurlijk niet direct de oplossing te geven, dan leert de topic starter er ook nog eens wat van.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 24-08 21:34

.oisyn

Moderator Devschuur®

Demotivational Speaker

zie soultaker :{

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Dit topic is gesloten.