$vmax) { $vx[$i]=$vvx[$i]*$vmax/$vvr; $vy[$i]=$vvy[$i]*$vmax/$vvr; } else { $vx[$i]=$vvx[$i]; $vy[$i]=$vvy[$i]; } $px[$i]=$px[$i]+$vx[$i]*$dt; $py[$i]=$py[$i]+$vy[$i]*$dt; $ppx[$i]=max(-2000,min(2000,round($px[$i]))); $ppy[$i]=max(-2000,min(2000,round($py[$i]))); # Punkte in values-Liste eintragen... $vax[$i].=";$ppx[$i]"; $vay[$i].=";$ppy[$i]"; } if ($k%20==19) { for ($i = 0; $i < $anz; $i++) { $vax[$i].="\n"; $vay[$i].="\n"; } } # ende k } $raus=""; for ($i = 0; $i < $anz; $i++) { if ($i<=$anz/6) { $rot=255; $gru=floor(255*$i/$anz*6); $bla=0; } elseif ($i<=$anz/3) { $c=($i/$anz-1/6)*6; $rot=floor(255-255*$c); $gru=255; $bla=0; } elseif ($i<=$anz/2) { $c=($i/$anz-1/3)*6; $rot=0; $bla=floor(255*$c); $gru=255; } elseif ($i<=2*$anz/3) { $c=($i/$anz-1/2)*6; $rot=0; $bla=255; $gru=255-floor(255*$c); } elseif ($i<=5*$anz/6) { $c=($i/$anz-2/3)*6; $gru=0; $rot=floor(255*$c); $bla=255; } else { $c=($i/$anz-5/6)*6; $gru=0; $rot=255; $bla=floor(255-255*$c); } $raus.=" \n"; } # SVG-header senden: $content="Content-type: image/svg+xml"; header($content); echo " \n"; ?> Schwarm Ein Schwarm aus bunten Teilchen bildet sich in einem harmonischen Potential, wobei sich die Teilchen anfangs ungefähr auf einer Kreisbahn um das Zentrum des Potentials bewegen. Die Wechselwirkung zwischen zwei Teilchen ist bei kleinem Abstand repulsiv, bei großem Abstand etwas attraktiv. Zusätzlich gibt es eine kleine Geschwindigkeitskorrektur für jedes Teilchen bei jedem Rechenschritt, die aus dem gewichteten Mittel der Geschwindigkeiten der anderen Teilchen besteht. Bei großem Abstand ist dabei der Korrekturbeitrag klein. Insgesamt wirkt diese Korrektur ähnlich wie Reibung, entzieht dem System also kinetische Energie. Zudem kann eine Zufallsgeschwindigkeit bei jedem Schritt hinzuaddiert werden, dies entspricht einem Wärmebad, welches ungerichtet kinetische Energie hinzufügt. Je nach Gewichtung kommt es meist früher oder später zu einer Schwarmbildung oder sogar zu einer Kondensation zu einer flüssigkeitsähnlichen Anordnung oder sogar zu einer kristallinen Anordnung. Geometrische Parameter: x: horizontale Ausdehnung des Bildes () y: vertikale Ausdehnung des Bildes () m: Maßeinheit dafür, %, px, cm, mm () Schwarmparameter: n: Anzahl der Durchläufe und Animationsdauer in zehntel Sekunden, n maximal 10000 () anz: Anzahl der Teilchen; um die Rechenzeit und die Dateigröße zu begrenzen, ist festgelegt, daß n * anz² maximal 1e12 () Gewichte (typisch um 1): pot: Zentralpotential () ww: Teilchen-Teilchen-Potential () av: Geschwindigkeitsanpassung an Nachbarn () zv: Zufällige Geschwindigkeitsänderung () sz: Szenario: 1: Rotation; 2: Beschuß; sonst: Zufall