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
<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(reZ[n]*reZ[n]+imZ[n]*imZ[n]>200) setTimeout('randomC()',1);
else if(n==99) setC();
else checkC();
}
// gefundene Punkte anzeigen, Nullpunkt = 150/90, Vergrößerungsfaktor = 50
function setC() {
// ie5+,nn6+
if(document.getElementById) {
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.left=150+reC*50;
document.all.tags("div")[p].style.top=90+imC*50;
}
// nn4x
else if(document.layers) {
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().
Die 5000 Punkte des vorstehenden Beispiels, sowie die gewählte Auflösung, reichen natürlich noch nicht aus, um Einzelheiten im Apfelmännchen zu betrachten. Jedoch ist das wohl die zumutbare Grenze für einen ersten Blick in die Wunderwelt der JavaScript-Fraktale :-) Wenn das Fraktal anfängt sich aufzubauen, können Sie die weitere Entwicklung auch offline beobachten. Nach kleinen Modifikationen sogar mit wesentlich mehr Punkten und schärferen Rändern. Mit etwa 30 bis 50-Tausend Punkten lässt sich dann schon einiges anfangen. Jedoch dauert das seine Zeit. Mit dem Internet Explorer habe ich bis zu 61.000 Punkte geschafft, die aber geschlagene 18 Stunden(!) brauchten, bis sie alle ihren Platz im Apfelmännchen gefunden hatten. (siehe Apfelmännchen 2)