Entwickler-Ecke
Sonstiges (Delphi) - Ball abprallen lassen
luckyluc - Fr 12.11.10 15:12
Titel: Ball abprallen lassen
hallo!
Ich möchte eine Kugel an einem Panel abprallen lassen. Hier meine Überlegung, die aber nicht funktioniert. (a, b, (a+10), (b+10) sind die variablen für die ellipse die aufgespannt wurde also für den ball.
Delphi-Quelltext
1: 2: 3: 4: 5:
| if b> (Panel1.Top+Panel1.Height) then d:=-1; if a > (Panel1.Left+Panel1.Width) then c:=-1; if (b+10) < Panel1.Top then d:= -1; if (a+10) < Panel1.Left then c:=-1; |
Könnt ihr mir helfen?
Thx
Dude566 - Fr 12.11.10 15:40
Warum nimmst du für die Kugel keinen zentrierten Punkt vom Typ TPoint und einen Radius, so kannst du gute Vergleiche für alle Eventualitäten aufstellen.
delfiphan - Sa 13.11.10 10:42
Was bei dir c und d ist, weiss ich nicht.
1. Ich würde zuerst mal berechnen, ob die Kugel innerhalb des Panels ist.
2. Dann würde ich schauen, ob der Ball eine Ecke berührt, falls ja, dann Einfallswinkel=Ausfallswinkel zu einer imaginären Kante im 90°-Winkel zur Verbindungsgerade zwischen Mittelpunkt des Balles und der Ecke (ist halt ein wenig Vektorrechnung*).
3. Falls nicht, dann bestimmten, welche Kante berührt wird und dann wieder Einfallswinkel=Ausfallswinkel (d.h. eine Geschwindigkeitskomponente negieren).
*Zwei Vektoren v und w aneinander Spiegeln kann man so: Spiegeln(w an v) = 2*(v*w)/(v*v)*v-w. Im Fall der Ecke spiegelst du den Geschwindigkeitvektor an den Vektor von der Ecke zum Mittelpunkt des Balles.
Fiete - So 14.11.10 12:58
Moin luckyluc,
suche mal nach Ballbewegung in OOP
Gruß
Fiete
delfiphan - Mo 15.11.10 23:10
Zum Spass...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!