So würde ich das machen ... (Enthält aber jetzt Vektoren
)
Du hast einen Positionsvektor s_b mit X und Y Komponente (Positions-Koordinaten des Mittelpunkts) und
einen Geschwindigkeitsvektor v_b (Geschwindigkeit in X und Y Richtung) und den Radius r_b
Außderdem einen Positionsvektor s_h des Hindernisses und dessen Radius r_h
Dann nehmen wir erstmal die Differenz: a = s_h - s_b;
Wenn |a| <= r_b + r_h dann kollidieren sie.
Dann teilen wir die Geschwindigkeit auf:
Normalenvektor: b = a / |a|
Normalgeschw.:
v_n = (
v_b *
b) *
b
Und Tangentialgeschw.: v_t = v_b - v_n
Da sich die Normalgeschw. im Vorzeichen umkehrt, ergibt sich die neue Geschw. zu:
V_neu = v_t - v_n
Und das, ohne eine einzige Winkelfunktion