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 rechen 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();
var p=0;
maxZo=5999;
reC=-0.02911637885189016;
imC=0.7277142233330573;
// 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.3 <= reZ[0] <= -1.3, -1.3 <= imZ[0] <= 1.3
function randomZo() {
n=0;
reZ[0]=Math.random()*2.6-1.3;
imZ[0]=Math.random()*2.6-1.3;
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(n<20) {
if(reZ[n]*reZ[n]+imZ[n]*imZ[n]>200) setTimeout('randomZo()',1);
else checkZo();
}
else if(n<30) {
if(reZ[n]*reZ[n]+imZ[n]*imZ[n]>200) setTimeout("colorZo='#ffd700';setZo()",1);
else checkZo();
}
else if(n<50) {
if(reZ[n]*reZ[n]+imZ[n]*imZ[n]>200) setTimeout("colorZo='#ff9900';setZo()",1);
else checkZo();
}
else {
if(reZ[n]*reZ[n]+imZ[n]*imZ[n]>200) setTimeout("colorZo='#ff4500';setZo()",1);
else if(n==99) setTimeout("randomZo()",1);
else checkZo();
}
}
// gefundene Punkte anzeigen, Nullpunkt = 120/120, Vergrößerungsfaktor = 70
function setZo() {
//ie5+,nn6+
if(document.getElementById) {
document.getElementById("P"+p).style.color=colorZo;
document.getElementById("P"+p).style.left=120+reZ[0]*70;
document.getElementById("P"+p).style.top=120+imZ[0]*70;
}
//ie4+
else if(document.all) {
document.all.tags("div")[p].style.color=colorZo;
document.all.tags("div")[p].style.left=120+reZ[0]*75;
document.all.tags("div")[p].style.top=120+imZ[0]*75;
}
//nn4x
else if(document.layers) {
//document.layers[p].color=colorZo; ... geht leider nicht,
// deshalb oben auf Weiß gesetzt !
document.layers[p].left=120+reZ[0]*75;
document.layers[p].top=120+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().
Nachstehend ein extremes Beispiel dafür, was mit diesem JavaScript 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. (Überings der gleiche C-Wert wie in obiger Demo-Version.)
44.000 Punkte
Rechenzeit: 12 Stunden
mit JavaScript im IE 5.5
auf 900 MHz-Rechner