Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Und nochmal Kollision - Ball zu Ball (https://www.delphipraxis.net/59391-und-nochmal-kollision-ball-zu-ball.html)

Airblader 21. Dez 2005 18:11


Und nochmal Kollision - Ball zu Ball
 
Hi,
hab leider wieder ein Kollisionsproblem.
Ich will, dass 2 Bälle kollidieren und dabei realistisch abgeprallt weiterfliegen.

Ich hab nun Code gefunden und versucht für mich umzuformen, Ergebnis:

Delphi-Quellcode:
CollisionVec.X := ((Self.FPosition.X + Self.FRadius div 2) / 2) + ((Other.FPosition.X + Other.FRadius div 2) / 2);
CollisionVec.Y := ((Self.FPosition.Y + Self.FRadius div 2) / 2) + ((Other.FPosition.Y + Other.FRadius div 2) / 2);

Self.FAngle := ArcTan2(CollisionVec.Y - (Self.FPosition.Y + Self.FRadius div 2), (Self.FPosition.X + Self.FRadius div 2) - CollisionVec.X);
Code wird ausgeführt, sofern die Bälle kollidieren.
Momentan fliegen die Bälle bei Kollision aber einfach nurnoch nach Rechts O_o

air

ichbins 21. Dez 2005 18:14

Re: Und nochmal Kollision - Ball zu Ball
 
Wie wär's wenn du auch den neuen Kurs des 2. Ball setzt? :gruebel:

Airblader 21. Dez 2005 20:04

Re: Und nochmal Kollision - Ball zu Ball
 
Zitat:

Zitat von ichbins
Wie wär's wenn du auch den neuen Kurs des 2. Ball setzt? :gruebel:

Da die Prozedur für jeden Ball ausgeführt wird, würde ich den Kurs pro Kreis dann ja 2x ändern -> weniger gut.

Übrigens: 0° in FAngle bedeutet nach rechts ;)

air

ichbins 21. Dez 2005 20:53

Re: Und nochmal Kollision - Ball zu Ball
 
Ich hatte auch mal Probleme mit den Winkelfunktionen. Da kamen dann immer die falschen Werte raus. Vllt. liegt es ja daran. Wie sieht denn der Ursprungscode aus?

Airblader 21. Dez 2005 22:08

Re: Und nochmal Kollision - Ball zu Ball
 
Zitat:

Zitat von ichbins
Ich hatte auch mal Probleme mit den Winkelfunktionen. Da kamen dann immer die falschen Werte raus. Vllt. liegt es ja daran. Wie sieht denn der Ursprungscode aus?

Welcher Ursprungscode :gruebel:

air

xineohp 22. Dez 2005 00:33

Re: Und nochmal Kollision - Ball zu Ball
 
moin,

- hast du an Gradmaß --> Bogenmaß gedacht?
- warum teilst du den Radius immer durch zwei?
- wie willst du eine Kollision simulieren, wenn du nirgends die Geschwindigkeit / den Bewegungsvektor der Kugeln verwendest?

Luckie 22. Dez 2005 05:00

Re: Und nochmal Kollision - Ball zu Ball
 
Zitat:

Zitat von Airblader
Zitat:

Zitat von ichbins
Ich hatte auch mal Probleme mit den Winkelfunktionen. Da kamen dann immer die falschen Werte raus. Vllt. liegt es ja daran. Wie sieht denn der Ursprungscode aus?

Welcher Ursprungscode :gruebel:

Den:
Zitat:

Zitat von Airblader
Hi,
Ich hab nun Code gefunden und versucht für mich umzuformen, Ergebnis:


Cicaro 22. Dez 2005 09:42

Re: Und nochmal Kollision - Ball zu Ball
 
Zitat:

Zitat von Airblader
Hi,
hab leider wieder ein Kollisionsproblem.
Ich will, dass 2 Bälle kollidieren und dabei realistisch abgeprallt weiterfliegen.

So, wie ich dich verstehe, arbeitest du mit normalen Vektoren, oder doch mit Polarkoordinaten ?

Aber zunächst würd' ich mir darüber Gedanken machen, dass die Bälle beim Aufprall Energien (kinetische Energien) austauschen. Es reicht nicht nur die Ausfallswinkel zu bestimmen.

Zitat:

Zitat von Airblader
Momentan fliegen die Bälle bei Kollision aber einfach nurnoch nach Rechts O_o

Das kann daran liegen, dass der ArcTan nur für Winkel zwischen -Pi und Pi definiert ist, wenn ich mich recht ensinne :gruebel: . Da müsstest du eine Fallunterscheidung vornehmen.

Airblader 22. Dez 2005 10:13

Re: Und nochmal Kollision - Ball zu Ball
 
Zitat:

Zitat von xineohp
moin,

- hast du an Gradmaß --> Bogenmaß gedacht?
- warum teilst du den Radius immer durch zwei?
- wie willst du eine Kollision simulieren, wenn du nirgends die Geschwindigkeit / den Bewegungsvektor der Kugeln verwendest?

Also bei der normalen

Wenn ich das noch mit DegToRad umziehe ändert sich garnichts ;)
Der Radius durch 2, weil in dem Beispiel, das ich gefunden hatte, der Mittelpunkt dastehen sollte, und Mittelpunkt ist eben (X + Radius/2 | Y + Radius/2).
Zum 3.: :gruebel: Die Kollision selbst funktioniert ja, nur eben der Abprallwinkel stimmt nicht.

Zu der Sache mit der kinetischen Energie:
Nunja, kommt drauf an wie man das berechnet. Momentan hätte ich einfach dazu tendiert, den Multiplikator für die Geschw. des anderen Balls zu setzn. Also Ball A hat 3, Ball B 5, dann hat danach Ball A eben 5 und Ball B 3.

Ich hatte in der Schule (leider) noch keine Trigo, kommt erst dieses Jahr am Ende, von daher kann ich mich nur an anderen Codes orientieren ;)

Den Thread finde ich übrigens grad leider nimmer :pale:

Khabarakh 22. Dez 2005 10:15

Re: Und nochmal Kollision - Ball zu Ball
 
Zitat:

Zitat von Cicaro
Zitat:

Zitat von Airblader
Momentan fliegen die Bälle bei Kollision aber einfach nurnoch nach Rechts O_o

Das kann daran liegen, dass der ArcTan nur für Winkel zwischen -Pi und Pi definiert ist, wenn ich mich recht ensinne :gruebel: .

Stimmt.
Zitat:

Da müsstest du eine Fallunterscheidung vornehmen.
Auch richtig. Und genau das macht ArcTan2, das im obigen Code verwendet wird :wink: .

@Airblader: Vielleicht solltest du langsam doch ganz auf Vektoren umstellen :wink: .

http://www.tobias-nopper.de/BillardG...physik-de.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 Uhr.
Seite 1 von 3  1 23      

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