=1000)) { $zuf=100; } if (($n <= 5) or ($n >=2000)) { $n=100; } if (($df <= 0) or ($df >=1)) { $df=0.9; } # Zufallsgenerator initialisieren mt_srand ((double)microtime()*1000000); # Anfangsauslenkung links und rechts $xr1=0; $xr2=0; #Gewichtung der Iterationsanteile; $par2+$par3+$par=0.5! $par1=$zuf; $par2=mt_rand(100,900)/1000; $par3=(1-$par2)*0.4; $par4=(1-$par2)*0.1; # Iteration berechnen ... # h, g: Höhe der Auslenkung $anz=1000; $anzz=$anz+1; # Rand- und Startwerte $h[0]=0; $h[$anzz]=0; $g[0]=0; $g[$anzz]=0; for ($j = 1; $j <= $anz; $j++) { $t=($j-1)/$anzz; $h[$j]=$xr2*$t+$xr1*(1-$t); } $anz2=$n; for ($k = 1; $k <= $anz2; $k++) { $par1=$par1*$df; for ($j = 1; $j <= $anz; $j++) { $jm=max(0,$j); $jp=min(1000,$j); # iterierte Höhe = Zufallsanteil + Anteil abhängig von Nachbarn + Anteil vorheriger Iterationsschritt $g[$j]=$par1*mt_rand(-1000,1000)/1000 +$par4*($h[$jm]+$h[$jp]) +$par3*($h[$j-1]+$h[$j+1]) +$par2*$h[$j]; } $h=$g; } # zum Abschätzen der viewBox $xmin=1000; $xmax=0; $ymin=1000; $ymax=-100; # Linie malen $pax=0; $pay=$h[0]; $pfad="\n"; # viewBox $xd=$xmax-$xmin+40; $yd=$ymax-$ymin+40; $xmin=$xmin-20; $ymin=$ymin-20; $vb="$xmin $ymin $xd $yd"; # SVG-header senden: $content="Content-type: image/svg+xml"; header($content); echo " \n"; ?> Riß Eine Zufallslinie oder ein Riß als Resultat einer Iteration. n: zwischen 5 und 2000 für die Anzahl der Iterationen df: Dämpfungsfaktor pro Interation (0 > df > 1) zuf: Gewicht Zufallsanteil zum Mittelwert der Nachbarpunkte bei der ersten Iteration (0 > zuf >= 1000, typisch 100)