![]() |
Viele Objekte - Movement / Kollision in 1 Schleife?
Hi :)
Ich habe hier sehr viele Objekte (Partikel) die miteinander agieren sollen (sagen wir mal eine Art Kollision). Nun habe ich also meine Prozedur für die Bewegung (Geschw.vektoren auf die Positionsvektoren addieren) und die für die Kollision mit einem anderem Partikel. Das sieht in etwa so aus:
Delphi-Quellcode:
(Nur sinngemäß kurz getippt).
for i:=0 to NumberOfParticles do
ParticleList[i].DoMove; for i:=0 to NumberOfParticles do begin for j:=0 to NumberOfParticles do begin if i<>j then ParticleList[i].DoCollision(ParticleList[j]); end; end; Wie man sieht habe ich 2 Schleifen. Warum? Nunja...ich muss zuerst die Bewegung aller Partikel ausrechnen und dann die Kollision, sonst sieht das Ganze leicht seltsam aus. Gibt es trotzdem eine Möglichkeit 2 Schleifen zu umgehen? (Ich ahne dass das in einem Bereich einer gewissen Anzahl zu langsam wird) air |
Re: Viele Objekte - Movement / Kollision in 1 Schleife?
Zitat:
Etwas schlauer waere es, die Objekte, die gar nicht kollidieren koennen, gar nicht auf Kollision zu ueberpruefen. Eine Einteilung des Spielfelds (Quad-/Octrees) koennte da schon etwas mehr Geschwindigkeit bringen. greetz Mike |
Re: Viele Objekte - Movement / Kollision in 1 Schleife?
Naja gut, okay.
Ich denke die Einteilung dürfte nicht allzuviel bringen, das Feld ist nun nicht soo groß ;) air |
Re: Viele Objekte - Movement / Kollision in 1 Schleife?
Wie ist denn dein Feld modeliert? Eigentlich kann man doch alles verkleiner, wenn du nicht gerade nur natürliche Zahlen als Koordinaten angibst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz