AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Viele Objekte - Movement / Kollision in 1 Schleife?
Thema durchsuchen
Ansicht
Themen-Optionen

Viele Objekte - Movement / Kollision in 1 Schleife?

Ein Thema von Airblader · begonnen am 11. Okt 2006 · letzter Beitrag vom 11. Okt 2006
Antwort Antwort
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#1

Viele Objekte - Movement / Kollision in 1 Schleife?

  Alt 11. Okt 2006, 22:05
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
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

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

  Alt 11. Okt 2006, 22:14
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
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#3

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

  Alt 11. Okt 2006, 22:54
Naja gut, okay.
Ich denke die Einteilung dürfte nicht allzuviel bringen, das Feld ist nun nicht soo groß

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

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

  Alt 11. Okt 2006, 23:43
Wie ist denn dein Feld modeliert? Eigentlich kann man doch alles verkleiner, wenn du nicht gerade nur natürliche Zahlen als Koordinaten angibst.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 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