Boids-Schwarm

Abstand, Ausrichtung und Zusammenhalt in einem reproduzierbaren dreidimensionalen Schwarm erkunden.

About this tool

Dieses diskrete dreidimensionale Steuermodell greift Reynolds' Verhaltensideen Abstand, Ausrichtung und Zusammenhalt auf. Koordinaten haben frei gewählte Modelllängeneinheiten (LE); es ist keine kalibrierte Tier- oder Strömungssimulation. Hindernisse, Ziele, Kollisionen und physikalische Kraftgesetze werden nicht modelliert.

Ein Schritt. Alle Boids lesen denselben alten Zustand. Nachbarn liegen innerhalb des gewählten Radius einschließlich seiner Grenze. Der Würfel ist auf jeder Achse periodisch mit Periode 8,4; Positionen liegen in [−4,2; 4,2). Nachbarabstände und Kohäsion verwenden die kürzeste periodische Verschiebung δ. Ein Boid unmittelbar hinter der gegenüberliegenden Randfläche kann deshalb ein naher Nachbar sein.

Abstand S ist die Summe von −δ/|δ| über Nachbarn mit 0 < |δ| < 0,35 × Radius. S wird nicht gemittelt; mehr nahe Nachbarn können einen stärkeren Steueranteil erzeugen. Ausrichtung A ist die mittlere Nachbargeschwindigkeit minus die eigene Geschwindigkeit. Kohäsion C ist die mittlere periodische Verschiebung zu den Nachbarn. Ohne Nachbarn sind alle drei null. Deckungsgleiche Boids tragen keinen Abstandspfeil bei, zählen aber weiterhin für Ausrichtung und Kohäsion; es gibt keinen Zufallsimpuls.

Aktualisiert wird mit v′ = cap(v + Abstand × S + Richtung × A + Kohäsion × C) und danach x′ = wrap(x + 0,04 × v′). Die Begrenzung cap setzt das Höchsttempo durch. Die Gewichte gelten einmal je 40-ms-Schritt; sie sind keine kontinuierlichen Kraftkonstanten. Die Tabelle zeigt die ungewichteten Anteile für den nächsten Schritt. Das mittlere Tempo ist der arithmetische Mittelwert der einzelnen Geschwindigkeitsbeträge.

Reproduzierbarkeit und Bedienung. Ein 32-Bit-Seed startet einen LCG mit s = (1664525 × s + 1013904223) mod 2³² und u = s / 2³². Sechs Ziehungen pro Boid setzen x/y/z auf (u−0,5) × 4,2 × 1,6 und vx/vy/vz auf (u−0,5) × 2. Auch das Anfangstempo wird begrenzt. Seed 0 ist gültig. Der Generator dient reproduzierbaren Beispielen, nicht der Kryptografie.

Initialisieren bereitet den pausierten Zustand bei Zeit null vor. Starten setzt den aktuellen Zustand fort; Pause verwirft angebrochene Schrittzeit. Ein Schritt pausiert zuerst und erhöht die Modellzeit um genau 0,04 s. Zurücksetzen entfernt den Schwarm und behält die Eingaben. Jede Parameteränderung entwertet das alte Ergebnis. Unsichtbare Seiten pausieren automatisch. Je Bild werden höchstens 250 ms Echtzeit nachgeholt; längere Verzögerungen werden verworfen, damit kein großer Nachholsprung entsteht. Schwarm und Auswahl bleiben beim Seitenwechsel in dieser Sitzung pausiert erhalten. Ein vollständiges Neuladen stellt nur gültige Parameter wieder her und erfordert erneutes Initialisieren.

Ansichten. Die 3D-Kegel zeigen in Geschwindigkeitsrichtung; ruhende Boids erscheinen als Punkte. Ziehen dreht die Ansicht, Strg oder ⌘ mit Mausrad zoomt. Das normale Mausrad scrollt die Seite. Ohne WebGL erscheint derselbe 3D-Zustand als feste isometrische SVG-Projektion. Beide Ansichten markieren den gewählten Boid mit einem Ring. Die Symbolgröße zeigt nicht das Tempo; eine Geschwindigkeit senkrecht zur Projektionsebene erscheint als Punkt. Überlagerung im Bild bedeutet nicht dieselbe Position im Raum.

Konzeptionelle Quelle: Craig Reynolds: Boids. Gewichte, Radius, periodischer Rand und feste Schrittregel sind die hier festgelegte Variante, keine einzig vorgeschriebene Boids-Formel.