Hallo Chanelle,
Jede Drehung lässt sich über eine Drehmatrix realisieren. Fangen wir mal mit einer ganz einfachen Drehung um die Z-Achse um den Winkel φ an. Die zugehörige Rotationsmatrix Rz(φ) wäre
Rz(φ)=⎝⎛cosφsinφ0−sinφcosφ0001⎠⎞ Das bedeutet, dass ein Punkt A=(1;0;0)T, der um φ gedreht wird, zu A′ wird
A′=Rz⋅A In unserem Beispiel soll um 120° gedreht werden. Rz wird dann zu
Rz(120°)=⎝⎛−21213021−3−210001⎠⎞ und ein A′(120°) wäre dann
A′(120°)=Rz(120°)⋅A=⎝⎛−212130⎠⎞ Folgendes Bild zeigt den um z gedrehten Würfel mit den drei Punkten A, B und F. Der Punkt A′ befindet sich an den berechneten Koordinaten.
Jetzt soll aber um den Vektor durch F gedreht werden. Dazu bilde ich ein neues Koordinatensystem, dessen Z-Achse durch F geht und berechne die Koordinaten der Punkte in diesem System Q. Anschließend wende ich die Drehung um Z an - genau wie oben - und transformiere das Ergebnis wieder zurück. Eine Drehmatrix D um 120° um den Vektor (1;1;1)T wäre dann allgemein:
D=Q⋅Rz(120°)⋅Q−1 Die Z-Richtung von Q ist mit (1;1;1)T vorgegeben. Eine dazu senkrechte Richtung ist schnell gefunden: vertausche zwei Koordinaten und negiere eine davon - also z.B. (1;−1;0)T und den dritte (d.h. die Y-Richtung) Vektor bekommt man über das Kreuzprodukt der beiden:
Q≈⎝⎛1−1011−2111⎠⎞ Die Richtungen der Basisvektoren sind nun korrekt, jetzt müssen sie noch normiert werden, damit sie als Orthogonal-Basis taugen Q=⎝⎛212−210616616−316313313313⎠⎞ Folgendes Bild zeigt die Basisvektoren (klick auf das Bild):
Man kann sehen, dass die Z-Achse von Q auf F zeigt und das alle Vektoren senkrecht auf einander stehen. Jetzt ist Q eine Orthogonal Matrix. Die hat den Vorteil , das ihre Inverse identisch mit der transponierten ist: Q−1=QT. Das setze ich in obige Gleichung ein und bekomme eine recht einfache Matrix D
D=Q⋅Rz(120°)⋅Q−1=⎝⎛010001100⎠⎞
und wenn ich nun die drei Punkte A, B und F (stellvertretend für alle anderen) mit D multipliziere bekommt man:
[A′;B′;F′]=D⋅[A;B;F]=⎝⎛010011111⎠⎞ Gruß Werner