Okay, ich nehme mal an, du hast folgendes:
Positionsvektor:
s0
Geschwindigkeitsvektor:
v
Breite und Höhe der Box: b und h
Der Ursprung liegt zweckmäßigerwise in der oberen, linken Ecke der Box.
Postives X nach rechts, positives Y nach unten.
Vektoren werde ich fett formatieren
Dann kannst du jetzt eine Geradengleichung aufstellen:
s(t) =
s0 + t *
v
mit t als Parameter.
Jetzt kannst du für die folgernden vier Fälle den Parameter t ausrechnen:
X-Komponente von s(t) ist gleich 0 (links)
Y-Komponente von s(t) ist gleich 0 (oben)
X-Komponente von s(t) ist gleich b (rechts)
Y-Komponente von s(t) ist gleich h (unten)
Du hast jetzt vier mögliche Werte für t, und der kleinste positive Wert ist der Fall, der kollidiert - ic nenne ihn jetzt t_k.
Wenn du die Kollision gefunden hast, kannst du folgendermaßen vorgehen:
Kollision rechts oder links: X-Komponente von v invertieren ("Vorzeichen umdrehen" bzw. "mal minus eins nehmen")
Kollision oben oder unten: Y-Komponente von v invertieren
ergibt
v_neu
Neuer Ortsvektor ist
s(t_k)
[ Mit dem neuen Ortsvektor kannst du auch vom alten zum neuen ne Linie auf dein Canvas zeichnen
]
Damit erhältst du eine neue Bewegungsgleichung:
s2(t2) = s(t_k) + t2 *
v_neu
Jetzt kannst du weieder von vorne anfangen.
Beenden, wenn du genügend Schritte hast.
Falls du etwas nicht verstanden hast, frage ruhig nach
MfG,
Julius