Pygame Boids

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Wuschli
User
Beiträge: 6
Registriert: Sonntag 5. September 2010, 12:53

Hallo,
ich bin neu hier im Forum und gerade dabei eine Boids-Simulation in pygame zu schreiben. die Visualisierung klappt schon, aber ich weiß nicht, wie die einzelnen Boids ihre Umgebung "scannen" können. Muss ich für jeden Boid die Pixel in einem Radius prüfen (stelle ich mir relativ rechenintensiv vor), oder gibt es eine Möglichkeit einen unsichtbaren Kreis zu erstellen und dann alle darunterliegenden Elemente zu listen.
Ich bin über jeden Vorschlag dankbar :)
BlackJack

@Wuschli: Man würde wohl eher ein von der Visualisierung unabhängiges Datenmodell benutzen, statt irgendwelche Information wieder aus den Pixeln der Darstellung zu holen.
Wuschli
User
Beiträge: 6
Registriert: Sonntag 5. September 2010, 12:53

Meine andere Idee wäre für jeden Agenten die Position der anderen Agenten-Instanzen auszulesen und dann die Entfernung zu checken. Wie ist denn die Performence bei ca. 50 Agenten für jeden die Position der anderen auszulesen? Lohnt es sich da eine Liste mit allen Positionen anzulegen, die jeden Frame aktualisiert wird?

Danke schonmal
BlackJack

@Wuschli: Wie die Performance ist, wirst Du wohl ausprobieren müssen. Das ist jedenfalls der Weg den man gehen würde.

Was soll eine extra Liste mit den Positionen bringen? Die Information steckt doch sicher schon in den `Boid`-Objekten!?
Wuschli
User
Beiträge: 6
Registriert: Sonntag 5. September 2010, 12:53

Wenn ich ne Liste hätte müsste nicht jeder Boid auf jeden anderen Boid zugreifen, sondern nur auf eine Liste. Ich weiß aber nicht in wie weit das sinnvoll ist.
BlackJack

@Wuschli: Dann wäre die Information redundant vorhanden und es bestünde die Gefahr, dass die Werte in beiden Datenstrukturen auseinander laufen.

Solange es sich nicht um algorithmische Verbesserungen handelt, die sich in verschiedenen Klassen in der O()-Notation niederschlagen, sollte man nicht anfangen "Verbesserungen" an Dingen vorzunehmen bei denen man nicht durch Messungen/Profiling weiss, dass sie überhaupt signifikant zur Laufzeit beitragen. Im günstigsten Fall verschwendet man einfach nur Zeit bei der "Optimierung" und im ungünstigsten Fall wird das Programm dadurch langsamer statt schneller.
Wuschli
User
Beiträge: 6
Registriert: Sonntag 5. September 2010, 12:53

OKay Danke, dann werde ich das mit den Methoden abfragen :)

edit: hat super funktioniert, danke. Mal sehen wie das dann mit mehreren aussieht :)
Antworten