Mathematische berechnung der Position!

Maltose

Grünschnabel
Hallo alle miteinander.
Also, ich habe folgendes Problem:
Ich habe einen Fischschwarm Simulation. Als erstes wird ein sogenanter BossFisch gestartet. Dieser Berechnet immer seine Positionen von links oben nach rechts unten. Lädt man weiter 10 Fische dazu, folgend diese dem BossFisch.
Ich habe mir jetzt so überlegt, dass die Fische selber quasi eine Figur bilden (ovaler kreis o.ä.). Desweiteren sollen die Fische untereinander einen bestimmten Abstand halten (min Abstand). Ziel ist es halt, dass jeder einzelne Fisch in dieser Form ist und das sie immer in einen abstand (zwischen min und max) einhalten und sich jeder fisch eigenständig in der Fischform bewegt (also wenn ein fisch dann mal quasi die "perfekte" position erreicht hat, dass er dann nicht stehen bleibt). so soll halt möglichst ein realistisches verhalten simuliert werden. hat jemand eine ahnung davon, wie die mathemtematischen formeln dazu aussehen und wie ich diese dann in mein programm einbinden kann. ich danke euch
Maltose
 
Hm, gute Frage! Also zunächst solltest du vielleicht eine Funktion beschreiben, die die Grundformation beschreibt (also für dein Oval oder was auch immer). Damit rechnest du die Startposition aller Fische aus. Am besten du arbeitest für die Fische mit einer Klasse. Die Fische müssen ihre Nachbarn kennen.
Jetzt wird simuliert: Der Leitfisch erhält einen Durchschnittsrichtungsvektor, der für die anderen Fische identisch ist. Dieser Durchschnittsrichtungsvektor wird jetzt variiert, so dass die Fische nicht identische Bewegungen durchführen (per Zufall vielleicht einfach). Es muss halt nur wert darauf gelegt werden, dass die Abweichung vom Durchschnitt irgendwann wieder kompensiert wird. Bei groben Richtungsänderungen des Leitfisches würde es jetzt (mindestens) zwei Umsetzungsmöglichkeiten geben: 1. alle Fische ändern gleichzeitig die Richtung (kommt glaube ich so wirklich in der Natur vor), 2. die Fische ändern erst ihre Richtung, wenn Sie auf "Höhe" des Leitfisches sind (dazu die Position der Richtungsänderung merken und aus dem Richtungsvektor und einem "Upvektor" (dessen Herleitung man sich leicht überlegen kann) eine Ebene basteln und die Position der anderen Fische zur Ebene überprüfen).
 
ich danke euch für die antworten. bin nen bissel weiter gekommen und habe in nen neuen thread ein neues prob gepostet ;P
 

Neue Beiträge

Zurück