\n"; } else { $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. Entscheidend bei der Gewichtung ist sowohl der Abstand als auch die Richtung. Für den attraktiven Teil der Wechselwirkung und die Geschwindigkeitskorrektur werden nur andere Teilchen berücksichtigt, die sich vor einem Teilchen befinden, mit stärkster Gewichtung in Vorwärtsrichtung und Abnahme der Gewichtung zu den Seiten. Dies ergibt etwa Sinn bei Tieren, die sich nur nach vorne oder zu Seite orientieren, nicht aber nach hinten. Bei großem Abstand ist dabei der Korrekturbeitrag klein. Insgesamt wirkt diese Korrektur ähnlich wie Reibung, verändert also die kinetische Energie des Systems, allerdings kann auch kinetische Energie hinzukommen. Auch deshalb kann es sinnvoll sein, explizit minimale und maximale Geschwindigkeit festzulegen. 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 (ist dies kleiner als 0.1, gibt es eine Bewegung in eine zufällige Richtung, die Anzeige folgt der mittleren Geschwindigkeit der Teilchen () ww: Teilchen-Teilchen-Potential () av: Geschwindigkeitsanpassung an Nachbarn, etwa 0, maximal ~1 () zv: Zufällige Geschwindigkeitsänderung () sv: Geschwindigkeitsverteilung anfangs stark zufällig? 0 ohne Zufall () vsoll: ungefähre Sollgeschwindigkeit (~200) () vv: Variation der Sollgeschwindigkeit (0 bis 1) () sw: Sichtwinkel in Grad (sofern nicht angegeben nach vorne, 180) ()