Einzelnen Beitrag anzeigen

mr.winkle

Registriert seit: 25. Mai 2006
98 Beiträge
 
Delphi 7 Personal
 
#26

Re: Gasteilchen 3D [Version 1.6]

  Alt 9. Mär 2007, 14:26
Zitat von himitsu:
was mir eben och noch auffiehl:
Teilchen Bewegen sich durch die Wand.
also nicht durch den winzigen Spalt daunten, sondern direkt durch das Material.
Aber nach den Beshreibungen sollte es ja keine halbdurchlässige Membran sein.
Ja, dass ist auch der Grund warum man die Wand nicht mehr verschieben kann, wenn diese ein wenig angehoben wurde.



Die Kollisionsabfrage bei nicht angehobener Wand sieht folgendermaßen aus:
Delphi-Quellcode:
  if (wandy=0) and wand and (x-r<wandx) then begin
    x:=wandx+r;
    vx:=-vx;
  end;
Das funktioniert auch schon ziemlich perfekt. Allerdings klappt das so ja nur, wenn sowieso keine Teilchen auf der anderen Seite sein dürfen.


Bei hochgehobener Wand setzt dann diese Abfrage ein:
Delphi-Quellcode:
if wand and (x+r>wandx-2) and (x+r<wandx-1) and (vx>0) and (y+r>wandy) then vx:=-vx else
if wand and (x-r<wandx+2) and (x-r>wandx-1) and (vx<0) and (y+r>wandy) then vx:=-vx;
Es gibt also einen Bereich vor der Wand, in dem die Teilchen umgelenkt werden.

Wie könnte ich die letzte Abfrage optimieren, so dass man auch während der Laufzeit die Wand verschieben kann und keine Teilchen (auch bei hohen Geschwindigkeiten) mehr durch die Wand gelangen?
  Mit Zitat antworten Zitat