Punkte auf dem Ellipsoid < Lin. Algebra/Vektor < Oberstufe < Schule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:34 Fr 04.08.2006 | Autor: | jeb |
Hallo!
Ich schreibe gerade einen Kollisionsmanager für ein Programm. Dabei bin ich auf folgendes Problem gestossen:
Ich habe einen Ellipsoid der durch einen Vektor [mm] \vektor{ex \\ ey \\ ez} [/mm] definiert ist der die Halbachsen entsprechend der Achsen enthält. Dazu habe ich einen Vektor [mm] \vektor{vx \\ vy \\ vz} [/mm] der in der Mitte des Ellipsoid startet. Nun muss ich wissen, wie weit der Schnittpunkt des Vektors mit dem Ellipsoid vom Mittelpunkt des Ellipsoid entfernt ist.
Das ist mein Problem. Ich habe bisher noch nie etwas mit Ellipsoiden gemacht, habe aber schon mit Ellipsen (Kegelschnitten) gerechnet. Ich habe eine Formel aufgestellt, doch diese ist falsch. Ich habe die Formel einmal von Hand und einmal mit dem Taschenrechner überprüft. Trotzdem erhalte ich ein falsches Resultat: Halbachsen=2, [mm] Distanz=\wurzel{2} [/mm] Mein Lösungsweg sieht folgendermassen aus:
1.) Berechnen des Abstandes s des Schnittpunktes in der xz-Ebene -> ex und ez sind Halbachsen der Ellipse
2.) Berechnen des Abstandes k einer Ellipse mit den Halbachsen ey und s
3.) k ist der gesuchte Abstand
Schritt 1:
Da ich in der xz-Ebene bin, gilt folgendes:
Ellipse: Halbachse a = ex, Halbachse b = ez
Ellipsengleichung: [mm] \bruch{x^2}{a^2} [/mm] + [mm] \bruch{y^2}{b^2} [/mm] = 1
Geradengleichung: [mm] \vektor{x\\y} [/mm] = [mm] \vektor{0\\0} [/mm] + [mm] t*\vektor{vx\\vz}
[/mm]
x und y sind die Koordinaten des Schnittpunktes. Wenn man alles einsetzt erhält man folgende Gleichung:
[mm] \bruch{(t*vx)^2}{ex^2} [/mm] + [mm] \bruch{(t*vz)^2}{ez^2} [/mm] = 1
Nach t aufgelöst ergibt das:
[mm] t^2=\bruch{ex*ez}{vx^2*ez + vz^2*ex}
[/mm]
Wenn man jetzt t in die Geradengleichung einsetzt sollte der Betrag dieses Vektors die Distanz s des Schnittpunktes zur Mitte der Ellipse ergeben. Diese Gleichung vereinfacht ergibt:
[mm] s^2=\bruch{ex*ez*(vx^2 + vz^2)}{vx^2*ez + vz^2*ex}
[/mm]
Schritt 2:
Jetzt verwende ich den Abstand s als Halbachse a und ey als Halbachse b. Der Rest der Berechnung sollte ganz analog funktionieren. Deshalb habe ich einfach die Variabeln ersetzt. Daraus ergibt sich:
[mm] k^2=\bruch{s*ey*(vx^2 + vz^2 + vy^2)}{(vx^2 + vz^2)*ey + vy^2*s}
[/mm]
Schritt 3:
k sollte jetzt eigentlich der gesuchte Abstand sein. Leider kommt bei mir wenn ich ex=ey=ez=2 wähle, für s immer [mm] \wurzel{2} [/mm] heraus, entsprechend ist dann auch k falsch. Ich weiss aber nicht wo der Fehler liegt.
Kann mir jemand weiterhelfen?
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Vielen Dank, jeb
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:59 Fr 04.08.2006 | Autor: | ron |
Hallo jeb,
vielleicht versuchst du mal einen anderen Ansatz über die Polarkoordinaten. a,b,c sind die Schnittpunktwerte der entsprechenden Achsen mit dem Ellipsoiden.
[mm] (x,y,z)^T \to [/mm] (ar cos( [mm] \mu) [/mm] cos( [mm] \nu [/mm] ), br sin( [mm] \mu) [/mm] cos( [mm] \nu [/mm] ), cr sin( [mm] \nu ))^T
[/mm]
Dabei ist [mm] \mu [/mm] der Winkel in der x-y-Ebene, also [0, 2 [mm] \pi [/mm] )
[mm] \nu [/mm] der Winkel in der y-z-Ebene, also [0, [mm] \bruch{\pi}{2}], [/mm] wenn du z.B. nur die Werte für z>0 betrachten willst, sonst das gleiche Intervall wie bei [mm] \mu.
[/mm]
Jetzt hast du ja die Koordinaten des Vektor, damit bekommst du über die Umkehrfunktion von
tan := [mm] \bruch{sin}{cos} [/mm] in der jeweiligen Ebene die zugehörigen Winkel.
Dann setze diese Werte ein und anschließend die "Restkoordinaten" in die Formel für den Ellipsoiden. Dadurch bekommst du schließlich den gesuchten Wert für r = Abstand zum Nullpunkt des Schnittpunktes zwischen Vektor und Ellipsoiden.
Hoffe ich habe es nicht zu kompliziert ausgedrückt.
Gruß
Ron
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:31 Sa 05.08.2006 | Autor: | ron |
Hallo jeb,
wollte dir gerne bei deinem Lösungsansatz weiterhelfen.
Kann es sein, dass du im Schritt 1 bei der Umformung nach t im Nenner für [mm] e_z [/mm] und [mm] e_x [/mm] ein Quadrat vergessen hast?
Ist aber auch egal, denn was ist dein ursprüngliches Problem:
Schnittpunkt einer Ursprungsgeraden mit dem Ellipsoiden bestimmen, dann den Betrag dieses Vektors als Abstand zum Nullpunkt ermitteln.
| [mm] \vektor{(x,y,z)^T} [/mm] |= [mm] \wurzel{x^2+y^2+z^2}
[/mm]
Du hast schon die richtige Idee, warst nur nicht "mutig" genung.
Warum die Gerade auf 2 Dimensionen beschränken, gehe doch in 3 Dimensionen, die Werte dafür hast du ja!
[mm] \vektor{x\\y\\z} [/mm] = [mm] \vektor{0\\0\\0} [/mm] + t [mm] \vektor{v_x\\v_y\\v_z}
[/mm]
und
1= [mm] \bruch{x^2}{(e_x)^2} [/mm] + [mm] \bruch{y^2}{(e_y)^2} [/mm] + [mm] \bruch{z^2}{(e_z)^2}
[/mm]
Jetzt genauso vorgehen wie bei z-x-Ebene nur eben mit drei Koordinaten.
Hinweis: die zwei Werte für t sind richtig, da ja die Gerade genau 2 Schnittpunkte mit dem Ellipsoiden hat. Achte unbedingt darauf welcher Bereich für dich interessant ist! Der Abstand ist zwar gleich, aber die Koordinaten des Schnittpunktes sicher nicht!
Vielleicht hilft dir das mehr als mein erster Versuch.
Ciao
Ron
|
|
|
|