Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Genaue Simulation zweier Kugeln (https://www.delphipraxis.net/12745-genaue-simulation-zweier-kugeln.html)

Christian_1980 3. Dez 2003 14:19


Genaue Simulation zweier Kugeln
 
Hi ihr lieben Delphianer :-)

Folgendes: ich würde gerne ein kleines Programm schreiben, welches den Zusammenstoß von Kugeln simuliert. ich habe bereits einen Teil fertig, in dem kleine Bitmap-Kugeln an einer zufälligen Position mit einer bestimmten Richtung und einer bestimmten geschwindigkeit losgelassen werden. Die Kugeln verlieren dabei immer einen bestimmten Teil ihrer kinetischen Energie ( hatte himitsu glaub ich mal in einem Thread erläutert ). Den Zusammenstoß der Kugeln selbst bekomme ich jedoch noch nicht so hin. Könnt ihr mir vielleicht mal den mathematisch/physikalischen anzatz erklären, wie man einen dezentralen Stoß berechnet? Des weiteren sind meine bitmap-kugeln eckig.. Aber das sollte doch eigentlich kein problem sein, ich könnte ja einfach einen fiktiven radius für die kollisionsabfrage basteln. sehe ich das richtig?

Bin für hinweise, anregungen und lösungsvorschläge jeglicher art sehr dankbar !!

PS.: später einmal würde ich auch gerne die rotation der kugeln berücksichtigen... Wenn der rest funktioniert..

Danke, Christian

himitsu 3. Dez 2003 15:04

Re: Genaue Simulation zweier Kugeln
 
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.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

Robert Marquardt 3. Dez 2003 15:13

Re: Genaue Simulation zweier Kugeln
 
Willst du auch einen Spin beruecksichtigen?

Christian_1980 8. Dez 2003 11:52

Re: Genaue Simulation zweier Kugeln
 
So ihr Lieben,

nach einigen Fehlschlägen am Wochenende hab ich jetzt endlich ein Programm geschrieben, dass die Kugeln vernünftig an den Wänden abprallen lässt.. Die Kollisionsabfrage funktioniert auch und die Kugeln gehorchen den Gesetzmäßigkeiten eines zentralen Stoßes.
Soweit, so gut...
Gesetzt den Fall ich würde auch noch Spin berücksichtigen wollen, wie sollte ich dann die Rotationsbewegung mit dem Bitmap realisieren? das bitmap einfach drehen? sieht das halbwegs aus?

:cyclops:

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz