Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 10. Feb 2011, 11:28
Wenn dein Ball nur an horizontalen und Vertikalen Flächen reflektiert ist es sogar noch einfacher...
...dann musst du nur das Vorzeichen einer der Teilgeschwindigkeiten umkehren.
Mit ein bisschen Vektorzeugs geht das immer (und nicht nur an horizontalen/vertikalen Flächen) - dann braucht man den Tangens gar nicht mehr

Formel: v_neu = v_alt - 2 * (v_alt*n)*n
n ist der Normalenvektor der Fläche, v_neu und v_alt die vorher/nachher Geschwindigkeitsvektoren.

Zitat:
wieso:
Delphi-Quellcode:
if sball.left > pgrenze.width - sball.width then
begin
sball.left := pgrenze.width - sball.width; //(1)
bx := -bx;//(2)
Naja, wenn der Ball rechts rausfliegt, wird der Ball (1) zurückgesetzt an den Rand und (2) die x Geschwindigkeit negiert, damit er wieder in die andere Richtung fliegt. (1) ist nötig weil es sonst passieren könnte, dass der Ball etwas zu weit raus fliegt und im nächsten Schritt wieder eine Kollision erkannt wird. Das darf nicht sein weil der Ball dann am rechten Rand hängen bleiben würde.