- 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 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
[Die fraktale Juliamenge mit JavaScript zum Download. Die Juliamenge lässt sich allerdings nur mit aktiviertem JavaScript betrachten !]
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