| |||||||
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) |
| access denied Registriert seit: Jan 2006 Ort: Düsseldorf
Beiträge: 86
|
Hallo! Ich lese grad das Buch "Flash MX Game Design Demystified", was sicher viele von euch kennen. Eine Erklärung, die mir leider sehr wichtig erscheint, verstehe ich allerdings überhaupt nicht! Es geht dort um die im Voraus berechnete collision detection von zwei Kreisen, unabhängig von der Framerate. Und zwar werden da erst die Gleichungen für die Position der beiden Kreise aufgestellt: x1 = xl1 + xmov1 * t y1 = yl1 + ymov1 * t und x2 = xl2 + xmov2 * t y2 = yl2 + ymov2 * t wobei jeweils xl1, yl1, xl2 und yl2 die letzte (daher l) Position des Kreises am Ende des letzten Frames sein soll. Die mov ist die verschiebung (vorher definiert) und t sind die Frames. Soweit komme ich mit. Dann folgt die Gleichung: Entfernung der beiden Kreise ist nach Pythagoras distance = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)); und gesucht ist schließlich der Punkt, an dem die Entfernung = der Summe der Raadii der Kreise ist, also r1 + r2, und R soll nun r1+r2 sein. Jetzt werden R und die Entfernungsgleichnung gleichgesetzt. Daraus entsteht: R = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)) quadriert wird R*R = (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) Jetzt wird ausmultipliziert: (ich schreibe mal ich in AS-Schreibweise weiter): R² = x2²-2x1x2+x1² + (y2²-2y1y2+y1²) = x1² + x2² - 2x1x2 + y1² - y2² Soweit kann ich auch noch folgen. Jetzt werden die vier ursprünglichen Gleichungen eingesetzt und man erhält Für x1 = xl1² + xmov1²*t² + 2xl1*xmov1*t Für x2 = xl2² + xmov2²*t² + 2xl2*xmov2*t Für -2x1x2 = (-2xmov1*xmov2)*t²+(-2xl1*xmov2 -2xl2*xmov1)*t -2xl1*xl2 und so weiter. Und jetzt hörts bei mir auf. Im Buch steht "solve for the time". Heißt das Ableiten oder Auflösen...? Auf jeden Fall werden dann eine ganze Reihe mysteriöser "Konstanten" definiert: R = radius1+radius2 a = -2*xmov1*xmov2+xmov12+xmov22 b = -2*xl1*xmov2-2*xl2*xmov1+2*xl1*xmov1+2*xl2*xmov2 c = -2*xl1*xl2+xl12+xl22 d = -2*ymov1*ymov2+ymov12+ymov22 e = -2*yl1*ymov2-2*yl2*ymov1+2*yl1*ymov1+2*yl2*ymov2 f = -2*yl1*yl2+yl12+yl22 g = a+d h = b+e k = c+f-R2 und es entsteht auf wundersame Weise folgende Gleichung: g*t2+h*t+k = 0 Und ich habe ABSOLUT keine Ahnung, wie der Autor darauf kommt, obwohl ich weder in Mathe noch in Physik schlecht bin Falls jemand von Euch diese Sache durchschaut, wäre es toll, wenn er/sie es mir erklären könnte! Oder kennt jemand einen einfacheren Weg, das Gleiche zu erreichen? Ich kann auch mal das gesamte ActionScript aus dem Buch posten, wenns hilft. In verzweifelter Hoffnung auf Hilfe... Gurth |
| | |
| | #2 (permalink) |
| Custom Title Registriert seit: Aug 2001
Beiträge: 467
|
Na da hab ich doch was für Dich: Pool Hall Lessons auf Gamasutra
__________________ ---::::: AVisioN :::::--- |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |