Vektor Rotation im R3 < Sonstiges < Lineare Algebra < Hochschule < Mathe < Vorhilfe
|
|
> Hallo!
>
> Thema:
> Ich arbeite an einer GPS-Simulation. Die Erde wird als
> Kugel (kein Ellipsoid) und die Satellitenbahnen als Kreise
> dargestellt.
> Mein Problem bezieht sich auf die Umrechnung von
> Kugelkoordinaten auf kartesische Koordinaten bei der
> Positionsangabe eines Punktes (Satellit)
>
> Bekannte Parameter:
> - Kartesisches Koordinatensystem. Zentrum ist
> Erdmittelpkt.
> - Entfernung bzw. Radius von Koordinatenuhrsprung zu Punkt
> (Sat/Empfänger) ist bekannt
> - Die Umlaufbahn des Punktes ist bekannt durch die Winkel
> phi=Inklination und theta=Äquatorversatz
> vgl. Abbildung:
> Sphere
> Gesamtansicht-GPS
>
> - Winkelposition Alpha auf der Kreisbahn (aktuelle Position
> des Satelliten auf Umlaufbahn)
>
> Frage:
> Wie komme ich auf die Position des Punktes in Form von
> kartesischen Koordinaten also einem Vektor im [mm]R^3[/mm] mit
> Ausgangspkt. Erdmittelpunkt
>
> Lösungsansatz:
> Ich kann mir über die Parameterdarstellung der Kugel einen
> Vektor berechnen, der auf die Kreisbahn zeigt.
> x = r * cos(phi) * cos(theta)
> y = r * sin(phi) * cos (theta)
> z = r * sin(theta)
>
> Ich bin der Meinung jetzt müsste ich diesen Vektor auf
> dieser Kreisbahn (also eine "Scheibe") nur noch
> entsprechend Alpha auf die Position des Punktes Rotieren.
> Leider weiss ich nicht wie das funktioniert!
>
> Vielleicht würde es mir schon weiterhelfen wenn ich einen
> Weg hätte meine Rotationsachse (also Senkrechte auf
> Kreisbahn) zu finden.
> Dann schätze ich könnte ich weiter machen in Richtung
> Drehmatrix usw.....
>
>
> -----------------------------------------
> Ich hoffe das mir jemand helfen kann und ich nicht nicht
> generell komplett auf dem Holzweg bin
>
> Vielen Dank im Voraus
> Max
> -----------------------------------------
Hallo Max,
zuerst einmal: Chapeau, da hast du dir ja etwas Interes-
santes vorgenommen !
Bei der Lektüre deines Textes sind bei mir dann aber ein
paar Fragen aufgetreten. Du brauchst ja mindestens zwei,
wahrscheinlich aber sogar mehr als zwei Kugelkoordinaten-
systeme, wenn die Simulation (trotz dem Verzicht auf die
Ellipsoidform etc.) einigermassen realistisch herauskommen
soll. In Bezug auf ein irdisches, als fixiert betrachtetes KS
mit geogr. Länge und Breite bewegt sich ja der Satellit
wegen der Erdrotation gar nicht auf einem Kreis ...
Du musst also spezifizieren, welche Effekte du in die
Simulation einbeziehen willst und auf welche anderen
du verzichten willst.
Bei der genauen Definition der verschiedenen Koordina-
tensysteme ist grosse Vorsicht geboten. Mir ist z.B. der
Begriff "Äquatorversatz" unbekannt. Ausserdem glaube
ich, dass deine angegebenen Gleichungen nicht mit den
Bezeichnungen in der (übrigens sehr schönen) ersten
Grafik übereinstimmen. Man müsste [mm] sin(\theta) [/mm] und [mm] cos(\theta)
[/mm]
austauschen oder [mm] \theta [/mm] anders definieren.
Es wird sich bestimmt lohnen, zuerst einmal ein klar
definiertes Teilproblem zu behandeln, zum Beispiel dieses:
Aufgabe | Gegeben ist eine Ebene E durch O(0/0/0) durch
ihren Normaleneinheitsvektor [mm] $\vec{n}=\vektor{n_1\\n_2\\n_3}=\vektor{cos(\alpha)\\cos(\beta)\\cos(\gamma)}$
[/mm]
und in ihr ein Kreis k mit dem Radius r und Zentrum in O.
Auf k bewegt sich ein Punkt [mm] P_t(x(t)/y(t),z(t)) [/mm] mit konstanter
Winkelgeschwindigkeit [mm] \omega. [/mm] Seine Startposition [mm] P_0 [/mm] sei der
Punkt von k mit der größten z-Koordinate.
Stelle die Funktionen x(t), y(t) und z(t) auf ! |
Bemerkung: Die Angabe des Normalenvektors [mm] \vec{n} [/mm] bzw. der
Winkel [mm] \alpha,\beta,\gamma [/mm] (mit [mm] cos^2(\alpha)+cos^2(\beta)+cos^2(\gamma)=1) [/mm] ist eine von
verschiedenen Möglichkeiten, die Lage der Bahnebene zu
beschreiben.
LG und bis später ...
Al-Chwarizmi
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:50 Fr 12.06.2009 | Autor: | max789 |
Hallo Al-Chwarizmi!
Erstmal vielen Dank das du dich meiner Frage angenommen hast!
Vorne weg: Letztlich geht es bei meiner Arbeit weniger um die Simulation, sondern mehr um die
Themen Projektmanagement, Organisation usw. Trotzdem möchte ich natürlich nicht das die Simulation
völliger Unsinn ist.
Nochmal Daten zur Simulation:
- Es gibt keine Erdrotation.
- Beim KS liegt die x-Achse auf der Äquatorebene und läuft durch den 0-Meridian.
y ebenfalls auf der Äquatorebene und zu x um 90 Grad östlich versetzt.
z steht senkrecht auf x,y und geht durch den Nordpol.
- Es gibt 6 Satellitenbahnen mit jeweils 4 Satelliten um beta=90Grad versetzt, damit
der Empfänger immer zu mindestens 3 Satelliten "Sichtkontakt" hat und eine
Positionsbestimmung im [mm] R^3 [/mm] möglich ist.
Du hast Recht das meine Formeln nicht zu dem Bild passen. Muss mir das nochmal überlegen.
Hier die Definition meiner Winkel:
Inklination=Phi:
So definiert wie im Bild hier, nur eben mit 60° Schritten. Also 0° auf y-Achse/Äquatorebene und dann immer um 60° erhöht (gegen Uhrzeigersinn, also richtung Nordpol) bis 360°
[Dateianhang nicht öffentlich]
"Äquatorversatz"=Theta:
Das im Bild hier angegebene phi ist mein Theta. Es wird auch 6mal um 60° verdreht wobei 0° auf dem Nullmeridian/X-Achse liegt und richtung osten/y hochgezählt wird.
[Dateianhang nicht öffentlich]
Dein vorgestelltes Teilproblem werde ich mir später noch genauer anschauen...
Dateianhänge: Anhang Nr. 1 (Typ: gif) [nicht öffentlich] Anhang Nr. 2 (Typ: GIF) [nicht öffentlich]
|
|
|
|
|
OK, die Winkel [mm] \phi [/mm] und [mm] \theta [/mm] dienen also dazu, die räumliche
Lage der Bahnebene eines Satelliten festzulegen. Sechs
solche Ebenen [mm] E_i [/mm] sind durch Winkelpaare [mm] (\phi_i,\theta_i) [/mm] festgelegt,
und in jeder solchen Ebene kreisen 4 Satelliten, welche
sich durch ihre in ihrer Bahnebene gemessenen Lagewinkel
unterscheiden.
Der Winkel [mm] \phi [/mm] entspricht übrigens dem Winkel [mm] \gamma
[/mm]
zwischen dem Bahnnormalenvektor [mm] \vec{n} [/mm] und der z-Achse.
Diesen Normaleneinheitsvektor könnte man durch zwei
aufeinanderfolgende Drehungen aus dem Vektor [mm] \vec{e}_z=\vektor{0\\0\\1}
[/mm]
erzeugen:
Erste Drehung mit Drehwinkel [mm] \phi [/mm] um die x-Achse (oder
ev. um die y-Achse, eigentlich einerlei)
Zweite Drehung mit Winkel [mm] \theta [/mm] um die z-Achse.
Ich denke dass die zentrale Aufgabe schon die ist,
die ich schon angegeben habe: Wenn einmal [mm] \vec{n}
[/mm]
und der Winkel gegeben ist, der die Position des
Satelliten auf seinem Umlaufkreis bestimmt, die
Koordinaten x,y,z des Satelliten zu berechnen.
(Die 24 verschiedenen Satelliten unterscheiden
sich dann nur durch unterschiedliche Parameter-
werte)
Durch die beschriebenen Drehungen ergibt sich
auch schon ein Lösungsansatz:
Wir denken uns zuerst einen Satelliten, der in der
Äquatorebene umläuft. Sein Inklinationswinkel ist
[mm] \phi=0, [/mm] der zugehörige Normalenvektor ist gerade
[mm] \vec{e}_z [/mm] , und seine Umlaufbahn lässt sich sehr leicht
parametrisieren.
Und nun kann man gewissermaßen dieses gesamte
System mitsamt dem in seiner Ebene umlaufenden
Satelliten kippen und drehen, also genau den beiden
Drehungen unterwerfen, die oben schon beschrieben
sind. So erhält man die Parametrisierung für einen
Satelliten in einer gegenüber der Äquatorebene um
den Winkel [mm] \phi [/mm] inklinierten (geneigten) Umlaufbahn
mit einem beliebigen "Äquatorversatz" [mm] \theta.
[/mm]
LG Al-Chwarizmi
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:36 Mo 15.06.2009 | Autor: | max789 |
Hallo!
Hab es jetzt letzten Endes wie folgt gelöst.
1. Einen Vektor [mm] \vec{a} [/mm] auf der Äquatorebene berechnen indem man um die Z-Achse mit
dem Winkel [mm] \alpha [/mm] + [mm] \theta [/mm] (startend bei X-Achse) rotiert:
[mm] \vec{a} [/mm] = [mm] \vektor{x \\ y} [/mm] = [mm] \vektor{cos(\alpha) \* cos(\theta) - sin(\alpha) \* sin(\theta) \\ sin(\alpha) \* cos(\theta) + cos(\alpha) \* sin(\theta)} [/mm]
2. Einen Vektor [mm] \vec{b} [/mm] berechnen, indem man [mm] \vec{a} [/mm] um weitere 90° weiter dreht und
somit [mm] \vec{a} [/mm] auf [mm] \vec{b} [/mm] senkrecht steht. [mm] (\vec{b} [/mm] dient spaeter als Rotationsachse
"aus der Ebene raus in den Raum" (Inklination)):
R * [mm] \vec{a} [/mm] = [mm] \vec{b} [/mm] mit R = [mm] \pmat{ cos(90°) & -sin(90°) \\ sin(90°) & cos(90°) }
[/mm]
3. [mm] \vec{b} [/mm] noch schnell auf bekannte Weise in Einheitsvektor umrechnen.
4. Rotation von [mm] \vec{a} [/mm] um [mm] \vec{b} [/mm] mit Inklination [mm] \phi:
[/mm]
R * [mm] \vec{a} [/mm] = [mm] \vec{r} [/mm] mit R = [Dateianhang nicht öffentlich]
wobei [mm] \alpha=\phi [/mm] und [mm] \vec{v}= \vec{b}
[/mm]
5. [mm] \vec{r} [/mm] noch mit Radius multiplizieren. --> [mm] \vec{r} [/mm] zeigt vom Uhrsprung zum Satellit
Ich denke das ist jetzt richtig so.
Vielen Dank für deine Beiträge. Hat mir auf jeden Fall geholfen.
Grüße, Max
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
|
Guten Tag Max,
> Hallo!
>
> Hab es jetzt letzten Endes wie folgt gelöst.
>
> 1. Einen Vektor [mm]\vec{a}[/mm] auf der Äquatorebene berechnen
> indem man um die Z-Achse mit
> dem Winkel [mm]\alpha[/mm] + [mm]\theta[/mm] (startend bei X-Achse) rotiert:
>
> [mm]\vec{a}[/mm] = [mm]\vektor{x \\ y}[/mm] = [mm]\vektor{cos(\alpha) \* cos(\theta) - sin(\alpha) \* sin(\theta) \\ sin(\alpha) \* cos(\theta) + cos(\alpha) \* sin(\theta)}[/mm]
Das wäre also ein Einheitsvektor in der x-y-Ebene mit
dem Winkel [mm] \alpha+\theta [/mm] zur x-Achse.
> 2. Einen Vektor [mm]\vec{b}[/mm] berechnen, indem man [mm]\vec{a}[/mm] um
> weitere 90° weiter dreht und
> somit [mm]\vec{a}[/mm] auf [mm]\vec{b}[/mm] senkrecht steht. [mm](\vec{b}[/mm] dient
> spaeter als Rotationsachse
> "aus der Ebene raus in den Raum" (Inklination)):
>
> R * [mm]\vec{a}[/mm] = [mm]\vec{b}[/mm] mit R = [mm]\pmat{ cos(90°) & -sin(90°) \\ sin(90°) & cos(90°) }[/mm]
Dies ergibt mit anderen Worten den Vektor [mm] \vektor{cos(\alpha+\theta+90°)\\sin(\alpha+\theta+90°)}
[/mm]
> 3. [mm]\vec{b}[/mm] noch schnell auf bekannte Weise in
> Einheitsvektor umrechnen.
Überflüssig, da auch [mm] \vec{b} [/mm] schon ein Einheitsvektor ist.
> 4. Rotation von [mm]\vec{a}[/mm] um [mm]\vec{b}[/mm] mit Inklination [mm]\phi:[/mm]
Wenn du [mm] \vec{a} [/mm] um [mm] \vec{b} [/mm] um den Winkel [mm] \phi [/mm] drehst, so ist das
Ergebnis stets ein Vektor mit der z-Koordinate [mm] z=sin(\phi). [/mm]
Ich denke nicht dass dies wirklich ist, was du wolltest...
> R * [mm]\vec{a}[/mm] = [mm]\vec{r}[/mm] mit R = [Dateianhang nicht öffentlich]
> wobei [mm]\alpha=\phi[/mm] und [mm]\vec{v}= \vec{b}[/mm]
(Variablenkollision mit dem ursprünglichen [mm] \alpha [/mm] vermeiden !)
Ich habe die Matrix nicht überprüft ...
> 5. [mm]\vec{r}[/mm] noch mit Radius multiplizieren. --> [mm]\vec{r}[/mm]
> zeigt vom Uhrsprung zum Satellit
Ursprung (...wie Urknall)
> Ich denke das ist jetzt richtig so.
Leider wohl doch noch nicht :-(
> Vielen Dank für deine Beiträge. Hat mir auf jeden Fall
> geholfen.
>
> Grüße, Max
LG Al-Chwarizmi
|
|
|
|
|
Hallo Max,
ich werde ev. eine solche Animation ebenfalls
programmieren und würde mir das so zurechtlegen:
Wir betrachten zuerst 4 Satelliten, die auf einer
kreisförmigen Bahn [mm] k_b [/mm] mit Radius 1 in der Äquator-
ebene mit der Winkelgeschwindigkeit [mm] \omega [/mm] umlaufen.
Zum Zeitpunkt t=0 starten sie in den Schnittpunkten
der Bahn mit den Koordinatenachsen. Satellit Nummer s
mit [mm] s\in\{0,1,2,3\} [/mm] hat zum Zeitpunkt t den Positionsvektor
[mm] \vec{p}_s(t)=\vektor{cos(\omega*t+s*\bruch{\pi}{2})\\sin(\omega*t+s*\bruch{\pi}{2})\\0}
[/mm]
Mit um einen Winkel [mm] \varphi_b [/mm] versetzten Startpunkten:
[mm] \vec{p}_s(t)=\vektor{cos(\omega*t+s*\bruch{\pi}{2}+\varphi_b)\\sin(\omega*t+s*\bruch{\pi}{2}+\varphi_b)\\0}
[/mm]
Nun wird dieses Karussell um den Inklinationswinkel [mm] \Phi_b
[/mm]
um die x-Achse gekippt. Die zugehörige Drehmatrix ist
[mm] K_{\Phi_b}=\pmat{1&0&0\\0&cos\,\Phi_b&-sin\,\Phi_b\\0&sin\,\Phi_b&cos\,\Phi_b}
[/mm]
Dann die Drehung um den Versatzwinkel [mm] \Theta_b [/mm] um die z-Achse:
[mm] D_{\Theta_b}=\pmat{cos\,\Theta_b&-sin\,\Theta_b&0\\sin\,\Theta_b&cos\,\Theta_b&0\\0&0&1}
[/mm]
Damit ergibt sich für den Satelliten Nr. s in der Bahn
Nr. b zum Zeitpunkt t die Position:
[mm] r*D_{\Theta_b}*K_{\Phi_b}*\vektor{cos(\omega*t+s*\bruch{\pi}{2}+\varphi_b)\\sin(\omega*t+s*\bruch{\pi}{2}+\varphi_b)\\0}
[/mm]
LG Al-Chwarizmi
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:28 Mo 15.06.2009 | Autor: | max789 |
OK langsam geb ich's auf. Bin einfach eine Null in Mathe....
Das was du machst sieht gut aus, aber ich bin mir einfach nicht sicher ob das noch richtig ist wenn man 2 Rotationen hintereinander ausführt. Nach der ersten Rotation hat man ja quasi ein neues Koordinatensystem....
Hab heute keine Zeit mich damit zu beschäftigen. Morgen wieder.
Im Anhang ein File zum Thema Rotation. Vielleicht hilft das.
P.S.: Ich weiß eigentlich wie man Ursprung schreibt, auch wenn ich´s jetzt schon zweimal falsch hatte
Datei-Anhang
Dateianhänge: Anhang Nr. 1 (Typ: doc) [nicht öffentlich]
|
|
|
|
|
> Das was du machst sieht gut aus, aber ich bin mir einfach
> nicht sicher ob das noch richtig ist wenn man 2 Rotationen
> hintereinander ausführt. Nach der ersten Rotation hat man
> ja quasi ein neues Koordinatensystem....
Hallo Max,
keine Sorge, diese Zusammensetzung von Rotationen
ist genau das, was du brauchst. Übrigens findest du
genau dasselbe - sogar mit den gleichen Bezeichnungen
für die Drehwinkel - in Abschnitt 6 des Textes, den du
angehängt hast. Probier dir das ganze anschaulich vor-
zustellen: Zuerst vier Satelliten auf einer Kreisbahn in
der Aequatorebene. Dann wird diese Kreisbahn mitsamt
den darauf laufenden Satelliten um die x-Achse (also z.B.
um die Ost-West-Achse) gekippt. Jetzt gehen die Satelliten
von der (als sehr klein gedachten) Erde aus gesehen
genau im Westen auf, kulminieren im Süden und gehen
im Osten unter. Jetzt wird das ganze noch um die z-Achse
(=Polachse der Erde) gedreht, so dass dann z.B. die
Satelliten in der Himmelsrichtung SSW aufgehen, in
OSO ihren höchsten Punkt durchlaufen und in NNO
untergehen.
> Im Anhang ein File zum Thema Rotation. Vielleicht hilft
> das: Datei-Anhang
Gruß Al-Chw.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:40 Di 16.06.2009 | Autor: | max789 |
Hallo mal wieder!
> Wir betrachten zuerst 4 Satelliten, die auf einer
> kreisförmigen Bahn [mm]k_b[/mm] mit Radius 1 in der Äquator-
> ebene mit der Winkelgeschwindigkeit [mm]\omega[/mm] umlaufen.
> Zum Zeitpunkt t=0 starten sie in den Schnittpunkten
> der Bahn mit den Koordinatenachsen. Satellit Nummer s
> mit [mm]s\in\{0,1,2,3\}[/mm] hat zum Zeitpunkt t den Positionsvektor
> [mm]\vec{p}_s(t)=\vektor{cos(\omega*t+s*\bruch{\pi}{2})\\sin(\omega*t+s*\bruch{\pi}{2})\\0}[/mm]
Hier solltest du noch die Umlaufdauer T beachten. Denke das würde sonst nicht funktionieren wenn ein Satellit bereits mehr als eine Runde gedreht hat. Also etwa so:
[mm]\vec{p}_s(t)=\vektor{cos(\omega*(t \mod T)+s*\bruch{\pi}{2})\\sin(\omega*(t \mod T)+s*\bruch{\pi}{2})\\0}[/mm]
Ansonsten probier ich das dann mal aus was du hier unten geschrieben hast. Danke nochmal!
> Damit ergibt sich für den Satelliten Nr. s in der Bahn
> Nr. b zum Zeitpunkt t die Position:
>
> [mm]r*D_{\Theta_b}*K_{\Phi_b}*\vektor{cos(\omega*t+s*\bruch{\pi}{2}+\varphi_b)\\sin(\omega*t+s*\bruch{\pi}{2}+\varphi_b)\\0}[/mm]
Hoffe nur du bist dir sicher das die Reihenfolge der Matrizen hier stimmt.
Die Matrix Multiplikation ist ja nicht kommutativ und ich hab das mit der Reihenfolge der Rotationen trotz der Anmerkung im Word-Dokument nicht ganz verstanden.
Gruß
Max
|
|
|
|