| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| io pan Registriert seit: Mar 2002 Ort: Basel
Beiträge: 86
|
Ich sitze vor einem vollgekritzelten Blatt und versuche mich an die gute Trigonometrie zu erinnern.. Vielleicht kann mir da jemand formelmässig helfen: Situation: Eine Kugel rollt innerhalb eines Kreises mit Radius r. Richtung und Geschwindigkeit der Kugel sind durch den Vektor v[x,y] definiert. Die Kugel prallt elastisch vom Rand des Kreises ab, ohne Geschwindigkeit zu verlieren. Frage: Wie sieht jetzt der Geschwindigkeitsvektor v der Kugel aus, nachdem sie an der Stelle (x,y) mit dem Kreis (mit Radius r, gell) kollidiert? Das wär toll, wenn das grad jemand wissen tät Stefan |
| | |
| | #3 (permalink) |
| io pan Registriert seit: Mar 2002 Ort: Basel
Beiträge: 86
|
Das ist im Prinzip egal, ob die Kugel an Geschwindigkeit verliert oder nicht. Viel wichtiger ist die Richtung, in die die Kugel rollt/fliegt, nachdem sie die Kreisinnenseite berührt hat. Vielleicht möchte ja jemand kommentieren, was ich bisher hab, da stimmt die richtung einfach nicht.. (siehe fla) Stefan Edith sagt, dass die berechnung im MC "KaliumIon" stattfindet (frame 2) Geändert von mehlkelm (31-08-2004 um 13:30 Uhr) |
| | |
| | #4 (permalink) |
| All-rounder Registriert seit: Mar 2004 Ort: Bayerische Rhön
Beiträge: 2.507
|
Hi. Alleine schon mal den Code in der .fla zu finden, ist für mich unmöglich ![]() Sauber programmiert, liegt der ganze Code, soweit möglich, auf der *HZL im ersten Frame. Am besten in der obersten Ebene. *HZL= Hauptzeitleiste
__________________ -------------------------------- Ich klicke, ergo bin ich. (me) -------------------------------- |
| | |
| | #5 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
Hi, eigentlich ist es ganz simpel: du denkst dir am Kollisionspunkt am Kreis eine Tangente. Diese hat einen Winkel. Bei der Kollision gilt üblicherweise Eingangswinkel=Ausgangswinkel. Das ist ja recht einfach zu berechnen... Schwieriger ist es indes herauszufinden, wo genau die Kugel den Kreis trifft, d.h., welchen Winkel deine Tangente hat. Da du in diesem Fall einen Kreis mit bekannter Größe verwendest, dürfte auch das nicht so schwierig sein: zunächst berechnest du den Abstand der Kugel zum Zentrum mit da = Math.sqrt(x*x+y*y); wenn dieser Abstand größer oder gleich dem Radius ist, ermittelst du den Winkel der Kugel zum Zentrum mit: dw = Math.atan2(dy,dx); // dy und dx sind die Differenzen der Position der Kugel und des Zentrums) Die Tangente steht lotrecht auf diesem Winkel. Zuletzt brauchst du noch den Richtungswinkel der Kugel. Hierzu nimmst du wieder Math.atan2, diesmal aber nicht mit dem Abstand zum Zentrum sondern mit dem Abstand zur vorherigen Position der Kugel: w = Math.atan2(_y-lastY,_x-lastX); lastX und lastY musst du einfach in jeder Iteration deines Skripts speichern. Jetzt hast du sowohl den Winkel der Kugel als auch den Winkel der Tangente, quasi deiner Spiegelfläche. Damit solltest du dann zurechtkommen, oder?! Grüße Sascha
__________________ 12:15, press return |
| | |
| | #6 (permalink) |
| All-rounder Registriert seit: Mar 2004 Ort: Bayerische Rhön
Beiträge: 2.507
|
@ ludabruda Muss ich sowas auch wissen um als schlau zu gelten? *heul* Wahnsinn! Hast Du mit Mathe viel am Hut?
__________________ -------------------------------- Ich klicke, ergo bin ich. (me) -------------------------------- |
| | |
| | #7 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
@thebiz: ja, wer das nicht weiß ist doof ![]() nein, Quatsch. Ich habe mich nur des öfteren mit Kollisionsproblemen auseinandergesetzt. Da Flash hier nicht viel bietet, muss man sich anderer Dinge behelfen. Du überlegst dir, was du willst und schaust, was du hast und versuchst, das irgendwie miteinander zu verbinden. Das ist ja letztlich auch nur eine Lösung, die in diesem speziellen Fall funktioniert. Sobald du Bezier-Kurven hast, wird das wesentlich schwieriger. Grüße Sascha
__________________ 12:15, press return |
| | |
| | #9 (permalink) |
| aka stauby Registriert seit: Mar 2004 Ort: Würzburg
Beiträge: 705
|
Noch ne kleine Ergänzung: Ich glaube fast, es geht noch einfacher, wenn man den Geschwindigkeitsvektor zunächst in eine Komponente senkrecht und eine parallel zum Einfallslot (=Radius) zerlegt. Denn mit der senkrechten passiert dann nix und die parallele ändert nur ihr Vorzeichen.
__________________ "The things you own end up owning you." |
| | |
| | #11 (permalink) |
| io pan Registriert seit: Mar 2002 Ort: Basel
Beiträge: 86
| danke aber so gehts auch
Was meint ihr zu der Lösung? r = Winkel zw. Zentrum und Kollisionspunkt v = Geschwindigkeitsvektor der Kugel alpha = einfallswinkel (zw. r und v) beta = winkel, um den v gedreht werden muss Code: rx = this._x - zentrum._x; ry = this._y - zentrum._y; vx = geschw.x; vy = geschw.y; cosalpha = (rx * vx + ry * vy) / (Math.sqrt(rx*rx+ry*ry)*Math.sqrt(vx*vx+vy*vy)); alpha = Math.acos(cosalpha); beta = Math.PI - 2 * alpha; nvx = Math.cos(beta) * vx - Math.sin(beta) * vy; nvy = Math.sin(beta) * vx + Math.cos(beta) * vy; Stefan |
| | |
| | #12 (permalink) |
| All-rounder Registriert seit: Mar 2004 Ort: Bayerische Rhön
Beiträge: 2.507
|
@ mehlkelm Ich denke wir werden heimlich sortiert und ich bin nicht bei denen dabei, die solche Dinge berechnen können.
__________________ -------------------------------- Ich klicke, ergo bin ich. (me) -------------------------------- |
| | |
| | #13 (permalink) | |
| aka stauby Registriert seit: Mar 2004 Ort: Würzburg
Beiträge: 705
| Zitat:
![]() Im Endeffekt ist das nichts anderes, als eine Transformation von kartesischen- in ebene Polar-Koordinaten: klick Edit: Und wehe, es sagt jemand was über meine Handschrift!!
__________________ "The things you own end up owning you." Geändert von webdust (31-08-2004 um 16:10 Uhr) | |
| | |
| | #14 (permalink) |
| All-rounder Registriert seit: Mar 2004 Ort: Bayerische Rhön
Beiträge: 2.507
|
Was für ein gekritzel! *spässle*Also tut mir Leid, Mathe liegt bei mir schon etwas zurück. Bis ich das verstanden habe, vergehen sicherlich Stunden. Ich dachte es wäre irgendwie etwas einfaches. Edit: Habe mir das nochmal angeschaut. Das mit den Vektoren, kommt mir aus dem Elektro.Technik Studium bekannt vor, das ich geschmissen habe.
__________________ -------------------------------- Ich klicke, ergo bin ich. (me) -------------------------------- Geändert von thebiz (31-08-2004 um 16:16 Uhr) |
| | |
| | #15 (permalink) |
| aka stauby Registriert seit: Mar 2004 Ort: Würzburg
Beiträge: 705
|
Gut möglich. Solche Koordinatentransformationen machen wir sehr gerne in Physik. Und soweit ist ja eine Elektrotechnik-Studium nicht umbedingt von der Physik entfernt. Der Vorteil ist halt, wenn man das in geeigneten Koordinaten ansetzt, man ähnliche Probleme nach dem gleichen Schema für Kugeln, Zylindern, Ellipse, etc. berechnen könnte.
__________________ "The things you own end up owning you." |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |