Hallo!
Für ein kleines Projekt, daß ich auf der Arbeit nebenher verfolge habe ich folgendes Problem:
Ich habe eine Unzahl von Punkten, die in mehreren Koordinatensystemen definiert sind und jetzt alle in ein gemeinsames Basiskoordinatensystem transformiert werden müssen. Alle diese lokalen Systeme sind diesem gemeinsamen Basissystem (oder globalen System) definiert.
Dies ist das (kanonische?) System mit dem Ursprung (0/0/0) und den Richtungsvektoren (1/0/0), (0/1/0) und (0/0/1) die die entsprechenden Einheitsvektoren E1,E2 und E3 repräsentieren.
Nach intensivem Rumkramen in meinen alten Mathe-Skripten habe ich mir folgendes Vorgehen überlegt:
Im Prinzip müsste das eine Translation mit einer Rotation sein, wenn die Punkte in einem lokalen kartesischen Koo-System definiert sind. Also muß ich eine Translationsmatrix T und eine Rotationsmatrix R bestimmen. Um also die Koordinaten(x,y,z)im globalen System aus den Koordinaten (x’,y’,z’) (im lokalen System) zu bestimmen lautet die Vorschrift:
(x,y,z)=T(invers)*(x’,y’,z’)+R(invers)*(x’,y’,z’)
Soweit alles richtig überlegt? Oder habe ich hier schon einen Gedankenfehler?
Punkt in einem lokalen kartesischem System:
Das System ist durch 3 Punkte A,B,C im globalen System (im R3) definiert, also berechne ich zunächst die neuen Einheitsvektoren dieses lokalen Systems E1’,E2’ und E3’
Laut Handbuch definieren die 3 Punkte das System wie folgt:
A definiert den Ursprung des neuen Koo-Systems, also:
A=Ursprung (immerhin: es geht recht simpel los)
Der Vektor von A nach B definiert die Richtung der z’-Achse
Vektor(AB)=B-A => z’-Richtung.
Normieren ergibt den Einheitsvektor E3’
Die Vektoren AB und AC definieren zusammen die x’-z’-Ebene des Systems
(Vektor(AB) x Vektor(AC))=y’-Richtung (x=Kreuzprodukt)
Normieren dieses Vektors ergibt E2’
Da in einem Rechtsystem gilt: (E1 x E2)=E3
Ist E1’=(E2’ x E3’) (oder bin ich hier in der Reihenfolge schon falsch?)
Ich habe dann also die drei neuen Einheitsvektoren berechnet.
Dann bestimme ich die einzelnen Winkel zwischen den Einheitsvektoren Ei und Ei’ für die Drehmatrix:
alpha(1)=Winkel zw. E1’ und E1
alpha(2)=Winkel zw. E2’ und E1
alpha(3)=Winkel zw. E3’ und E1
beta(1)= Winkel zw. E1’ und E2
… usw…
gamma(3)=Winkel zw. E3’ und E3
Damit erstelle ich die Rotationsmatrix mit den Richtungscosinussen:
R=
cos(alpha(1)) cos(beta(1)) cos(gamma(1))
cos(alpha(2)) cos(beta(2)) cos(gamma(2))
cos(alpha(3)) cos(beta(3)) cos(gamma(3))
(diese kommt mir allerdings recht komisch vor, nur Cosinusse…
Ist evt. das Skript hier falsch?)
und invertiere diese:
R(invers)=1/Det®*
cos(alpha(1)) -cos(alpha(2)) -cos(alpha(1))
-cos(beta(1)) cos(beta(2)) -cos(beta(2))
-cos(gamma(1)) -cos(gamma(2)) cos(gamma(3))
Die Translationsmatrix ist ja nur eine Verschiebung um den Vektor A mit den Komponenten A1,A2,A3
Also sollten die Koordinaten im globalen System lauten:
x=A1+(cos(alpha(1))*x’ -cos(alpha(2))*y’ -cos(alpha(1))*z’)
y und z dann entsprechend.
Leider ist das Ergebnis gänzlich anders als erwartet. Da man hier eine Menge Fehler machen kann bin ich schon mehrere Tage dabei in der Mittagspause rumzuprokeln. Wer mag mir helfen?
Die 2. und 3. Aufgabe wäre dann die Koordinaten aus den sphärischen und zylindrischen Systemen ins globale kartesische System zu transformieren, aber solange ich das obige Problem noch nicht im Griff habe, traue ich mich da noch nicht ran.
In der stillen Hoffnung auf kompetente Hilfe…
Jürgen