globales und lokales KS < Lineare Algebra < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:30 Mi 05.01.2005 | Autor: | Schlomi |
Hallo...folgende Problemstellung:
Ich habe ein globales Koordinatensystem gegeben! In diesem befindet sich ein lokales koordinatensystem,welches um den Winkel alpha geneigt sei und in dem ein punkt P(lok) (x/y) eingetragen ist. Gesucht sind die koordinaten P(global) (x/y) des punktes P(lok) (x/y). wie geh ich bei der berechnung vor?
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:07 Mi 05.01.2005 | Autor: | Molaf |
Hallo
ist dir der Begriff der Drehmatrix bekannt? Die beiden Koordinatensysteme sind durch den Winkel [mm] \alpha [/mm] gedreht. Also ist auch jeder Punkt aus [mm] P_{lokal} [/mm] bzgl [mm] P_{global} [/mm] um den Winkel [mm] \alpha [/mm] gedreht.
Es gilt somit:
[mm] P_{global} [/mm] = R * [mm] P_{lokal}
[/mm]
mit:
Ursprungsvektor
[mm] P_{lokal} [/mm] = [mm] \vektor{x \\ y}
[/mm]
Drehmatrix
R = [mm] \pmat{ cos(\alpha) & -sin(\alpha)\\ sin(\alpha) & cos(\alpha) }
[/mm]
Ich hoffe, die Vorzeichen beim Sinus sind richtig. Dies zeigt auch nur die Drehrichtung an. (Das kann ich mir nie merken )
Also gilt (Spezialfälle zum Verständnis; 90°-Drehung, bzw. keine Drehung):
[mm] R(\alpha= \pm90°) [/mm] = [mm] \pmat{ cos( \pm90°) & -sin( \pm90°)\\ sin( \pm90°) & cos( \pm90°) } [/mm] = [mm] \pmat{ 0 & \bruch{-}{+}1\\ \pm1 & 0 } [/mm]
[mm] R(\alpha=0°) [/mm] = [mm] \pmat{ cos(0°) & -sin(0°)\\ sin(0°) & cos(0°) } [/mm] = [mm] \pmat{ 1 & 0\\ 0 & 1 } [/mm]
Hilft dir das?
Gruss
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 09:13 Do 06.01.2005 | Autor: | Schlomi |
danke für die antwort! das war genau das was ich gesucht habe!
hab nur noch eine kleine frage: die gleichung ist allgemeingültig richtig? das heißt es ist egal wo der Ursprung des lokalen koordinatensystem im globalen koordinatensystem liegt. denn liegt der koordinatenursprung des lokalen KS beispielsweise im punkt 2 / 2 dann bekomme ich ja in dem sinne nur heraus in wie weit sich die koordinaten ändern wenn ich das lokales KS um den winkel alpha drehe! ich brauche aber eine sogenannte koordinatentransformation, ich hoffe das ist fachlich richtig ausgesprochen.
und wie löse ich diese gleichung?! bei matrix-rechnung hab ich in der schule wahrscheinlich gepennt;o)
jetzt muß ich die formel nur noch irgendwie programmiertechnisch umsetzen, bin zur zeit azubi als fachinformatiker, aber das nur nebenbei zur info
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:15 Fr 07.01.2005 | Autor: | wluut |
> hab nur noch eine kleine frage: die gleichung ist
> allgemeingültig richtig? das heißt es ist egal wo der
> Ursprung des lokalen koordinatensystem im globalen
> koordinatensystem liegt. denn liegt der
> koordinatenursprung des lokalen KS beispielsweise im punkt
> 2 / 2 dann bekomme ich ja in dem sinne nur heraus in wie
> weit sich die koordinaten ändern wenn ich das lokales KS um
> den winkel alpha drehe! ich brauche aber eine sogenannte
> koordinatentransformation, ich hoffe das ist fachlich
> richtig ausgesprochen.
Stimmt, wenn der Ursprung z.B. in (2,2) liegt, reicht die Drehung alleine nicht. Dann musst Du hinterher den Punkt noch um (2,2) verschieben.
Beispiel:
[mm] P_{lok}=\vektor{0\\ -\wurzel{2}}, [/mm]
lokales Koordinatensystem mit Ursprung in [mm] \vektor{2\\2}, [/mm] gedreht um [mm] \alpha=45°.
[/mm]
1. Möglichkeit:
Drehen mit Rotationsmatrix R, dann verschieben um (2,2):
[mm] P_{global}=R*\vektor{0\\ -\wurzel{2}} [/mm] + [mm] \vektor{2\\2} \gdw
[/mm]
[mm] P_{global}=\pmat{cos\alpha & -\sin\alpha \\ sin\alpha & cos\alpha}*\vektor{0\\ -\wurzel{2}} [/mm] + [mm] \vektor{2\\2} \gdw
[/mm]
[mm] P_{global}=\pmat{ \bruch{ \wurzel{2}}{2} & -\bruch{ \wurzel{2}}{2} \\ \bruch{ \wurzel{2}}{2} & \bruch{ \wurzel{2}}{2} }*\vektor{0\\ -\wurzel{2}} [/mm] + [mm] \vektor{2\\2} \gdw
[/mm]
[mm] P_{global}=\vektor{1\\-1}+\vektor{2\\2}=\vektor{3\\1}.
[/mm]
2. Möglichkeit:
man kann auch alles in einer einzigen Matrix schreiben, dazu muss man aber sogenannte homogene Matrizen benutzen. Das heißt, man hängt an jeden Punkt noch eine Hilfskoordinate 1 an, dann kann man die Drehung und die Verschiebung in eine [mm] (3\times3)-Matrix [/mm] schreiben:
[mm] P_{global}=\pmat{cos\alpha & -\sin\alpha & x\\ sin\alpha & cos\alpha & y \\ 0 & 0 & 1}*\vektor{0\\-\wurzel{2}\\1},
[/mm]
wobei x und y die Verschiebe-Koordinaten sind, also (2,2).
wenn man das ausrechnet, bekommt man:
[mm] P_{global}=\vektor{1+x\\-1+y\\1}=\vektor{3\\1\\1}.
[/mm]
Dabei sind nur die ersten beiden Koordinaten wichtig, die dritte sollte immer 1 bleiben (zumindest wenn man nur dreht und verschiebt).
> und wie löse ich diese gleichung?! bei matrix-rechnung hab
> ich in der schule wahrscheinlich gepennt;o)
chrr...püüüh...
Ich könnte jetzt eine Formel hinschreiben, aber ich versuchs erstmal am Beispiel zu erklären:
Von der Matrix, die links steht, nimmst du jeweils die Zeilen, von der, die rechts steht, jeweils die Spalten (ein Vektor ist quasi auch ein Matrix, die nur eine Spalte hat). Dann nimmst du jeweils das erste Element der Zeile/Spalte und multiplizierst sie. Dazu addierst du das Produkt der jeweils zweiten Elemente usw.
Beispiel:
[mm] \pmat{a & b \\ c &d \\ e&f}*\vektor{x \\y} [/mm] = [mm] \vektor{a*x+b*y\\c*x+d*y\\e*x+f*y}
[/mm]
oder:
[mm] \pmat{a & b\\c & d}*\pmat{w & x\\y & z}=\pmat{a*w+b*y & a*x+b*z\\c*w+d*y&c*x+d*z}
[/mm]
Und jetzt die Formel:
A hat n Zeilen und m Spalten, B hat m Zeilen und l Spalten. A*B=C hat dann n Zeilen und l Spalten.
(Es ist wichtig, dass die Anzahl Spalten von A und Zeilen von B gleich sind, sonst funktioniert das nicht.
[mm] a_{ij} [/mm] ist der Eintrag in Zeile i und Spalte j von Matrix A. [mm] b_{ij} [/mm] und [mm] c_{ij} [/mm] entsprechend.
A*B=C [mm] \Rightarrow c_{ij}= \summe_{k=1}^{m}a_{ik}*b_{kj}, [/mm] i=1..n, j=1..l
> jetzt muß ich die formel nur noch irgendwie
> programmiertechnisch umsetzen,
Wie wär's mit drei geschachtelten for-Schleifen?
for i=1..n
for j=1..l
for k=1..m
Aber pass mit den Indizes auf! Wahrscheinlich musst du überall bei null anfangen und dann nur bis n-1...
...oder benutz MATLAB, wenn du kannst, da tippst du ein: A*x und gut.
ich will nicht mehr ohne...
> bin zur zeit azubi als
> fachinformatiker, aber das nur nebenbei zur info
macht ja nix ;-p
LG
wluut
|
|
|
|