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
Pygame Boids
@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.
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
Danke schonmal
@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!?
Was soll eine extra Liste mit den Positionen bringen? Die Information steckt doch sicher schon in den `Boid`-Objekten!?
@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.
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.