Hallo Bernd
Ich nehme mal an, jeder Ball eine derzeitige Position(x,y), eine Richtung(z.B. alpha) und eine Geschwindigkeit(d (Pixel pro gezeichnetes Bild))
Nun entdeckst Dein Programm, dass zwei Baelle zu nahe gekommen sind (sprich Distanz ist kleiner als 2 mal Radius).
Falls Du dich etwas auskennst mit Vektorrechnung, dann hast Du das Werkzeug folgendes zu berechnen:
r1=(x1,y1) Position von Kugel 1, als der Zusammenprall entdeckt wurde
r2=(x2,y2) Position von Kugel 2
v1=(vx1,vy1) Bewegungsvektor von Kugel 1 (von einem Bild zum naechsten bewegt sich die Kugel mit vx1 in x-Richtung und mit vy1 in y-Richtung)
v2=(vx2,vy2) fuer die andere Kugel
d Summe der Radien
Nun gilt, dass es einen Ort r1+k*v1 gibt, welcher den Abstand d vom Ort r2+k*v2 hat.
Du hast also die beiden Gleichungen
x1 + k* vx1 + d*q = x2 + k* vx2
y2 + k* vy1 + d*sqrt(1-q^2) = y2 + k* vy2
Unbekannt sind k und die Richtung eines Vektor mit Laenge 1, welcher die Verbindung anzeigt, wenn die beiden Kugeln sich treffen.
Also zwei Gleichungen und zwei Unbekannte. Aber Vorsicht beim Aufloesen: es wird zwei Loesungen geben. Es braucht noch die Einschraenkung, dass k negativ ist. Von Hand geschickt aufloesen und einprogrammieren.
Na ich weiss ja nicht, ob das hier verstaendlich ist. Ausserdem hoffe ich, dass mir kein Fehler in der Eile eingeschlichen ist. Mit Sicherheit koennte ich es besser erklaeren, wenn ich Dir das mit Papier und Bleistift erklaeren koennte.
Deshalb: Mach dir eine Skizze und zeichne Dir alle ganz genau auf. Ich wuerde alles schoen mit Vektoren zeichnen.
Gute Nacht
Louis