abprallender Ball, wie berechnen

14/04/2010 - 09:40 von Stefan Brröring | Report spam
Hallo,


ich habe mir für Schülerpraktikanten ein paar einfache
Programmieraufgaben ausgedacht. Eine Aufgabe besteht darin, einen Kreis
über eine Bildschirmflàche zu bewegen und an den Wànden abprallen zu lassen.

Das funktioniert momentan ganz gut. Wenn der Kreis an eine Wand prallt,
wird die entsprechende Bewegungskomponente invertiert, also
Einfallswinkel = Ausfallswinkel.

z.B. Der Kreis bewegt sich mit ->V = (+2,-2) und trifft auf die untere
Kante, dort wird die y-Komponente von v invertiert. Nach dem Anprallen
ist V = (+2,+2)

Jetzt kommt zusàtzlich ein Schlàger ins Spiel, d.h. ein waagerechter
Strich bzw. ein flaches Rechteck.

In dem Bereich, wo der Kreis so auf den Schlàger trifft, dass der
Mittelpunkt des Balles über dem Schlàger liegt, ist das jetzt kein
Problem, da funktioniert das im Prinzip genauso, wie an den Wànden.

Aber wie berechne ich das Abprallen, wenn der Ball die Kante seitlich
trifft, also wenn der Abstand des Mittelpunktes von einer Ecke des
Schlàgers kleiner wird als der Radius des Kreises?

Ich denke, das Problem könnte man als Abprallen eines Kreises von einem
Punkt beschreiben:

Der Punkt hat die festen Koordinaten P = (xp,yp)

Der Mittelpunkt des Kreises hat die Koordinaten M = (xm,ym)

Daraus ergibt sich das Quadrat des Abstandes zu

AQ = (xp-xm)*(xp-xm) + (yp-ym)*(yp-ym)

wenn AQ kleiner wird, als das Quadrat des Radius, habe ich die
Kollision, soweit klar.

Ich habe jetzt zwei Vektore:

1. Den Bewegungsvektor ->V = (xv,yv)

2. Den Kollisionsvektor ->K =(xp-xm,yp-ym)

mit ->M(t+1) = ->M(t)+ ->V

Wie bestimme ich jetzt den neuen Bewegungsvektor ->V' nach der Kollision
mit dem Punkt?

Ich stelle mir jetzt vor, dass ich an der Stelle, wo P den Kreis berührt
eine Tangente anlege und jetzt die Reflexion genauso berechne, als wenn
die Tangente eine Flàche wàre, also Einfallswinkel = Ausfallswinkel. Die
Tangente steht senkrecht auf dem Kollisionsvektor.

Und ab da klemmt es jetzt.

Es muss doch jetzt relativ einfach sein, aus ->V und ->K das neue ->V'
zu berechnen.





Gruß

Stefan
 

Lesen sie die antworten

#1 Anonimo
14/04/2010 - 10:47 | Warnen spam
Ich denke, das Problem könnte man als Abprallen eines Kreises von einem
Punkt beschreiben:



Wird der Kreis dabei nicht verformt?

Wohl schon lange nicht mehr in der Wirklichkeit gewesen.

Ähnliche fragen