spiegelung im kreis
-
hallo alle
bin neu hier und freu mich auf eure antworten
leider komme ich selber nicht draufein ball bewegt sich in einem kreis.
es gibt die eigenschaft des balles
ball.speedX
ball.speedY
um diesen wert "bewegt" sich das ballObjekt über den Screen.berührt der ball die Randlinie des Kreises, soll
er nach innen zurückreflektiert werden.also eine spiegelung an der tangente im berührungspunkt.
wie berechne ich die neuen werte für ball.speedX
und ball.speedY.es liegen vor:
kreis.radius
ball.x
ball.yund das event ballHitKreisrand (der ball berührt nun die keislinie)
würde mich sehr über tips freuen,
elo
-
sorry, habe einen fehler gemacht.
ich habe oben das gefragt und ihr könnt
an mich schreiben.grüße,
elo
-
Sieht man den Ball als punktförmig an (also seine Ausmaße spielen keine Rolle), würde ich an dem Kollisionspunkt des Kreises die Tangente errechnen und dann den wie die Lichtspiegelung am ebenen Spiegel (Ausfallswinkel = Einfallswinkel) rechnen.
EDIT: Ach, das mit der Tangente hast du ja schon selber geschrieben.
Na, wie du das Lot auf der Tangente fällst, weißt du ja?
-
hi nochmal,
ich brauch die geradengleichung y=ax+b der tangente in dem punkt an dem der ball die kreislinie berührt. (angenommen wird ein punktförmiger ball)
die spiegelung hm...
ich denke das schaffe ich sogar nochnaja, der winkel zum lot zur tangente wird invertiert.
y=sqr(1-x^2) gilt im einheitskreis.
nun habe ich einen kreis mit R=kreis.radius
der kreis hat seinen mittelpunkt in kreis.x und kreis.ykanns du mir weiterhelfen ?
viele grüße,
elo
-
elohim schrieb:
y=sqr(1-x^2) gilt im einheitskreis.
Viel zu kompliziert
Wenn du vom Kreismittelpunkt zur Berührstelle eine Linie ziehst, was hast du dann?Zum Errechnen der Geradengleichung:
http://www.realmath.de/Mathematik/Gerade/vorlage5c.html
-
habs mir schon gedacht.
der winkel alpha zwischen x-achse und radius kreis zum auftreffpunkt
ist der selbe winkel wie
zwischen ballegeraden und radius zum auftreffpunkt.so siehts mal aus.
das kann ich dann über pyt. ausrechnen.
die tangente in auftreffpunkt hätte eine um 90 grad gedrehte
steigung, wie das lot auf ihr zum kreismittelpunkt.sin alpha = (|kreis.y-ball.y|)/kreis.radius. (gegenK/Hypot)
die formel über die erste ableitung der kreisfunktion in dem auftreffpunkt hätte mich auch mal interessiert
danke und grüße,
elo
-
kann mir noch jemand sagen,
wie ich aus dem winkel wieder auf den neuen speedX und speedY komme?grüße,
daniel
-
hallo
Folgende Überlegung:
Du triffst den Keis in dem Punkt P=(p1.p2) , Der Kreis hat den Radius R
Dann P in Polarkoodinaten P=(R*cos(a),R*sin(a))
a=arccos(p1/R) bzw a=arcsin(p2/R)
Du hast den Geschwindigkeitsvektor V=(v1,v2).Nun nimm Die Drehmatrix D:=
cos(a) sin(a)
-sin(a) cos(a)und multipliziere diese mit V
also D*VDamit drehst du den Punkt P auf die x-achse
Nun nimmst nun einfach den den x-Wert mal (-1) (d.h. Spiegelung an der y-Achse)
diesen Wert multiplizierst du nun mit der Inversen Drehmatrix (alse statt a nimmst du -a) und schon hast du deinen neuen Geschwindigkeitsvektor
rechnnen must du nun selbst
gruss Linus
-
Ableitung der Kreisfunktion:
-
f(x):= +- sqrt((R2-x2)) → f'(x) = -+x/sqrt(R2-x2)
-
c(t):= (R*cos(t),R*sin(t)) → (-R*sin(t),R*cos(t))
Gruss Linus
-
-
wau linus,
das klingt alles recht kompliziert.
kannst du diese sachen bitte in eine art pseudocode schreiben?
das wäre super nett.vielen dank,
daniel
-
Hallo
? Pseudocode ?
Hier noch einmal die Formel (wenn du so willst):
v=(v1,v2) = der Geschwindigkeitsvektor
R:= Radius des Kreises
p=(p1,p2) = der Punkt des Kreises
dann ist: α=arcsin(p1)/R der Winkel bzgl (1,0)D:= cos(α) sin(α)
| -sin(α) cos(α)
die Drehmatrix um α im UhrzegersinnS:= -1 0
| 0 1
Die Matrix welche an der Y-Achse spiegeltT:= cos(α) -sin(α)
| sin(α) cos(α)
Die Drehmatrix welche um den Winkel -α zurückdreht(Das sollen alles 2x2 Matrizen sein , weiss der Teufel wie man die hier darstellen soll)
nun rechnest du einfach:w:=T*S*D*v
und schon erhälst du den gespiegelten Geschwindigkeits vektor
Die Werte für cos(α) und sin(α) sind dir jedoch bekannt
da cos(α)=p1/R
und sin(α)=p2/Rso nun sollte es aber kein Problem sein
Gruss Linus