Java & JavaScript


Home
Applets
Scripts
   Navigation:
 · Kontextmenü
 · Linkwechsler
   Dialogboxen:
 · Alert
 · Alert 2
 · Confirm
 · Prompt
   Animation:
 · Kreis
 · Kreis 2
 · Kreis 3
 · Drei Kreise
 · Spirale
 · Planetarium
 · Globus
   Grafik-Effekte:
 · Clipping
 · Clipping 2
 · Clipping 3
 · Alpha-Clipping
 · Fading
 · Wellenmuster
 · Wellenmuster 2
   Bildschirmschoner:
 · Proto
 · Marquee
 · Donut
 · Worm
 · Mondrian
 · Pacman
   Datum & Uhrzeit:
 · Countdown
 · Countup
 · Wochentag
 · Last Modified
   Fraktale:
 · Apfelmännchen
 · Apfelmännchen 2
 · Juliamenge
 · Juliamenge 2
 · C-Wert-Generator
   Mathematik:
 · Primzahlen
 · Primzahlen 2
   Verschiedenes:
 · Dynamic Popup
 · TextArea Counter
 · Warteschleife
 · Mausschreiber
Gäste
Kontakt

- JavaScript : Fraktale : Juliamenge -


Die fraktale Juliamenge mit JavaScript.

Erfolgreich getestet mit Internet Explorer 5.5 und 6.0, Netscape Navigator 7.1, Mozilla 1.21 und 1.4.
Netscape 4.75, 6.01 - 6.22 und 7.0 laden und rechnen langsam
Opera 5.02, 5.11, 6.0, 6.01 und 7.01 laden z.T. sehr langsam
Mozilla 1.0 läd und rechnet sehr langsam


Demo:  hier starten


JavaScript-Quellcode:

<script language="JavaScript">
  // Punkte zunächst außerhalb des sichtbaren Bildschirms platzieren
  document.write("
      <style type='text/css'>div{position:absolute;left:-300px;top:-300px}</style>");

  // Komplexe Zahlen, maxC=Anzahl der Punkte
  var reZ=new Array();
  var imZ=new Array();
  var p=0;
  maxZo=4999;
  reC=-0.6517547688761771;
  imC=0.41850227663215666;

  // Punkte in div-tags schreiben
  for(z=0;z<maxZo+1;z++) document.write("<div id='P"+z+"'>.</div>");

  // Punkte-Zähler für ie5+, nn6+
  if(document.getElementById && document.styleSheets) {
    counter=true;
    document.write("<form name='F1'><input name='E1'></form>");
    document.F1.E1.value=maxZo+1;
  }
  else counter=false;

  // Zo-Wert zufällig auswählen, Intervall: -1.4<=reZ[0]<=-1.4, -0.9<=imZ[0]<=0.9
  function randomZo() {
    n=0;
    reZ[0]=Math.random()*2.8-1.4;
    imZ[0]=Math.random()*1.8-0.9;
    checkZo();
  }

  // nach der rekursiven Gleichung: Z[n+1] = Z[n]^2 + C überprüfen,
  // ob Zo zur Juliamenge gehört ((Zn) nicht divergiert).
  function checkZo() {
    n++;
    reZ[n]=reZ[n-1]*reZ[n-1]-imZ[n-1]*imZ[n-1]+reC;
    imZ[n]=2*reZ[n-1]*imZ[n-1]+imC;
    if(reZ[n]*reZ[n]+imZ[n]*imZ[n]>200) setTimeout('randomZo()',1);
    else if(n==74) setZo();
    else checkZo();
  }

  // gefundene Punkte anzeigen, Nullpunkt = 155/100, Vergrößerungsfaktor = 75
  function setZo() {
    //ie5+,nn6+
    if(document.getElementById) {
      document.getElementById("P"+p).style.left=155+reZ[0]*75;
      document.getElementById("P"+p).style.top=100+imZ[0]*75;
    }
    //ie4+
    else if(document.all) {
      document.all.tags("div")[p].style.left=155+reZ[0]*75;
      document.all.tags("div")[p].style.top=100+imZ[0]*75;
    }
    //nn4x
    else if(document.layers) {
      document.layers[p].left=155+reZ[0]*75;
      document.layers[p].top=100+imZ[0]*75;
    }
    if(counter) document.F1.E1.value=maxZo-p;
    if(p<maxZo) setTimeout('p++;randomZo()',1);
    else if(counter) document.F1.E1.value="";
  }

</script>

Gestartet wird die Berechnung der Juliamenge durch den Aufruf der Funktion randomZo().


Download  Juliamenge.zip (ca. 2 kb)




© 2001-2004 Albert Kluge - Alle Rechte vorbehalten
Impressum | Datenschutz | Nutzung | eMail