Autor Beitrag
_Digger
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 46

Win XP
Delphi5 Prof
BeitragVerfasst: Sa 05.11.05 19:43 
Hallo

ich habe ein Programm gemacht, in dem die Bewegung eines Balles möglichst realistisch dargestellt wird (abprallen von der Wand, Schwerkraft,..). Das funktioniert auch alles recht gut, aber jetzt habe ich einen zweiten Ball hinzu gefügt. Einen Ball von einer geraden Wand wegspringen lassen ist kein Problem, aber wie mache ich das, wenn zwei runde Bälle zusammen stoßen?

Danke!
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Sa 05.11.05 20:45 
Also von der Theorie her müsstest du die Tangente, die durch den Berührungspunkt geht, berechnen und die Bälle müssten dann beide jeweils von der Tangente abprallen wie von einer Wand. So würde ich mir das vorstellen... Aber wie genau das funktioniert, da müsste ich mir länger als 2 Minuten Gedanken drüber machen ;-) Hoffe mal, das hilft dir schon ein bisschen weiter...

Gruß,
Miri
_Digger Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 46

Win XP
Delphi5 Prof
BeitragVerfasst: Sa 05.11.05 21:38 
Danke!!
Ich weiß zwar noch nicht wie ich die Tangente ausrechnen kann und wie ich die unterschiedlichen Geschwindigkeiten der Bälle miteinberechnen soll, aber das mit der Tangente klingt schon recht gut!
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Sa 05.11.05 23:49 
Hmm... Wenn ich mich recht erinnere, ermittelt man die Steigung der Tangente in einem Punkt einer Funktion über die erste Ableitung der Funktion. Du würdest also den Kreis in 2 Halbkreise aufteilen, da ein Kreis ja keine richtige Funktion darstellt. Für den oberen Halbkreis gilt f(x) = wurzel(r² - x²), für den unteren Halbkreis f(x) = - wurzel(r² - x²). Das musst du dann ableiten, für r den Radius deines Balls einsetzen, für x den x-Achsen-Wert des Schnittpunktes und raus kommt die Steigung deiner Tangente

Müsste auch noch anders (einfacher) gehen...
Du ermittelst aus dem Mittelpunkt des Balls und dem Berührungspunkt eine Geradengleichung. Diese Gerade steht senkrecht zu deiner Tangente.

Hmm...ist mal wieder typisch für mich, dass ich erst an der komplizierten Lösung rumrechne und mir dann die einfache einfällt ;-)
ähM_Key
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: Di 08.11.05 15:31 
Hi!

Ist das 2 oder 3D?

Eigentlich ja egal; vom Prinzip her das selbe.

Ich würde ständig den Abstand der Mittelpunkte 'Messen' und mit der Summe der Radien der einzelnen Bälle vergleichen.

Bei Berührung dann wie auch vom Vorredner schon angesprochen eine Geradengleichung (zwischen den beiden Mittelpunkten) und dann die Geschwindigkeitsvektoren negieren. (bzw. elastischer Stoß)

Hoffe nur, der Spin oder sowas wird nicht mit berücksichtigt...

Grüße; ähM_Key

PS: Oder du fragst halt mal deine Freundin :D

_________________
Alles geht ni! Aber ein bissl' was muss!
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Di 08.11.05 15:42 
user profile iconähM_Key hat folgendes geschrieben:
...wie auch vom Vorredner schon angesprochen...


Vorrednerin, wenn ich bitten darf ;)
ähM_Key
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: Di 08.11.05 15:46 
Vielen Sorry! :oops:

Dann sollte ich vielleicht den letzten Satz aus meinem letzten Post auch rausnehmen... ?

MK

_________________
Alles geht ni! Aber ein bissl' was muss!
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Di 08.11.05 15:48 
Musste meinetwegen nicht ;) Sooo empfindlich bin ich nu wirklich nich...
_Digger Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 46

Win XP
Delphi5 Prof
BeitragVerfasst: Mi 09.11.05 14:22 
Mit dem, was ihr mir jetzt geantwortet habt, müsste ich es eigentlich hinkriegen

Vielen Dank!!!
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mi 09.11.05 14:50 
In der ersten Ausgabe von www.magazin.spieleprogrammierer.de/ ist das sehr detailiert und anschaulich erklärt.