Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Viele Objekte - Movement / Kollision in 1 Schleife? (https://www.delphipraxis.net/78838-viele-objekte-movement-kollision-1-schleife.html)

Airblader 11. Okt 2006 21:05


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:
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;
(Nur sinngemäß kurz getippt).

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

JasonDX 11. Okt 2006 21:14

Re: Viele Objekte - Movement / Kollision in 1 Schleife?
 
Zitat:

Zitat von Airblader
Gibt es trotzdem eine Möglichkeit 2 Schleifen zu umgehen? (Ich ahne dass das in einem Bereich einer gewissen Anzahl zu langsam wird)

Ob dus schaffst, die 2 Schleifen zu umgehen? Ginge sicher, aber per BruteForce musst du n*(n-1)/2 Elemente immer auf Kollision ueberpruefen. Auch in einer Schleife wuerde das also keinen berauschenden Performancegewinn bringen.
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

Airblader 11. Okt 2006 21:54

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

Nikolas 11. Okt 2006 22:43

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 06:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz