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



Behr: Ein Weg zur fraktalen Geometrie
- Anzeige -


- JavaScript : Fraktale : Apfelmännchen 2 -


Das fraktale Apfelmännchen mit JavaScript in Farbe.

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();
  reZ[0]=0;
  imZ[0]=0;
  var reC, imC;
  var p=0;
  maxC=4999;

  // Punkte in div-tags schreiben
  for(z=0;z<maxC+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=maxC+1;
  }
  else counter=false;

  // C-Wert zufällig auswählen, Intervall: -2 <= reC <= 0.5,  -1.25 <= imC <= 1.25
  function randomC() {
    n=0;
    reC=Math.random()*2.5-2;
    imC=Math.random()*2.5-1.25;
    checkC();
  }

  // nach der rekursiven Gleichung: Z[n+1] = Z[n]^2 + C überprüfen,
  // ob C zur Mandelbrotmenge gehört ((Zn) für gewähltes C nicht divergiert). Z[o]=0
  function checkC() {
    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(n<10) {
      if(reZ[n]*reZ[n]+imZ[n]*imZ[n]>200) setTimeout('randomC()',1);
      else checkC();
    }
    else if(n<17) {
      if(reZ[n]*reZ[n]+imZ[n]*imZ[n]>200) setTimeout("colorC='#ffd700';setC()",1);
      else checkC();
    }
    else {
      if(reZ[n]*reZ[n]+imZ[n]*imZ[n]>200) setTimeout("colorC='#ff4500';setC()",1);
      else if(n==99) setTimeout("randomC()",1);
      else checkC();
    }
  }

  // gefundene Punkte anzeigen, Nullpunkt = 150/90, Vergrößerungsfaktor = 50
  function setC() {
    //ie5+,nn6+
    if(document.getElementById) {
      document.getElementById("P"+p).style.color=colorC;
      document.getElementById("P"+p).style.left=150+reC*50;
      document.getElementById("P"+p).style.top=90+imC*50;
    }
    //ie4+
    else if(document.all) {
      document.all.tags("div")[p].style.color=colorC;
      document.all.tags("div")[p].style.left=150+reC*50;
      document.all.tags("div")[p].style.top=90+imC*50;
    }
    //nn4x
    else if(document.layers) {
      // document.layers[p].color=colorC;
      // ... geht leider nicht, deshalb oben auf Weiß gesetzt !
      document.layers[p].left=150+reC*50;
      document.layers[p].top=90+imC*50;
    }
    if(counter) document.F1.E1.value=maxC-p;
    if(p<maxC) setTimeout('p++;randomC()',1);
    else if(counter) document.F1.E1.value="";
  }
</script>

Gestartet wird die Berechnung des Fraktals durch den Aufruf der Funktion randomC().


Nachstehend ein extremes Beispiel dafür, was mit diesem Script möglich ist (beachten Sie aber auch die extreme Rechenzeit). Die technischen Daten beziehen sich auf die Angaben im Script und erlauben eine nahezu exakte Reproduktion des Bildes.


Das fraktale Apfelmännchen mit JavaScript
   61.000 Punkte
   Rechenzeit: 18 Stunden
   mit JavaScript im IE 5.5
   auf 900 MHz-Rechner

   Zn+1 = Zn² + C, Z0 = 0
   -2 ≤ reC < 0.5
   -1.25i ≤ imC < 1.25i

   Divergenzkriterium:
   
reZn² + imZn² > 100
   Dunkelblau: 10 ≤ n ≤ 16
   Hellblau: 17 ≤ n ≤ 49
   Vergrößerungsfaktor: 100




Download  Apfelmaennchen_2.zip (ca. 2 kb)




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