Ein Hallöle von
http://www.FrankNStein.de/Smiley-Wolke.gif,
Code:
* (X1, Y1)
|\
| \
Y | \ Z
| \
| \
+-----* (X2, Y2)
X
c² = a² + b²
Z² = X² + Y²
Z² = (X1 - X2)² + (Y1 - Y2)²
Sqr(Z) = Sqr(X1 - X2) + Sqr(Y1 - Y2)
[color=darkblue][Z = Abstand zwischen den Kugelmittelpunkten][/color]
R = R1 + R2
[color=darkblue][R = minimaler Abstand zwischen den Kukelmittelpunkten][/color]
Wenn also der Abstand zwischen den Kugeln kleiner ist als die beiden Radien zusammen sind die Kugeln zusammengestoßen.
Delphi-Quellcode:
Var X1, Y1, R1: Integer; {Mittelpunkt & Radius von Kugel 1}
Var X2, Y2, R2: Integer; {Mittelpunkt & Radius von Kugel 2}
If Sqr(R1 + R2) > Sqr(X1 - X2) + Sqr(Y1 - Y2) Then
{Kugeln stoßen zusammen oder stecken schon ineinander}
Die Richtung des Zusammenstoßes kannst du aus der Richtung von
Z erkennen.
Das wurde glaube schon das letzte mal berechnet.
http://www.FrankNStein.de/Smiley-Kuss.gif * *
http://www.FrankNStein.de/Smiley-Spinne.gif * * *
http://www.FrankNStein.de/Smiley-Winken.gif