8 Stimmen

Wie lautet die 3 × 3 Matrix für eine Drehung um 180 Grad?

Ich möchte QuickTime Move nicht um 180 Grad drehen.

Die Matrix (tkhd) meiner Datei lautet nun

1 0 0

0 1 0

0 0 1

Ich habe diese Matrixform Müllcontainer .

Wie lautet die 3 × 3 Matrix für eine Drehung um 180 Grad?

0 Stimmen

Hängt davon ab, um welche Achse Sie drehen wollen, 3x3 ist für 3-Dim-Drehungen. de.wikipedia.org/wiki/Drehung_matrix

3 Stimmen

@IdoWeinstein Eine 3x3-Matrix ist für 2D-Transformationen mit "homogenen Koordinaten" denkbar. de.wikipedia.org/wiki/Homogene_Koordinaten

19voto

Adam Rosenfield Punkte 373807

Angenommen, Sie wollen eine homogene 3x3-Matrix für eine 2D-Drehung um die Z-Achse, dann ist die Matrix, die Sie wollen:

\-1  0  0
 0 -1  0
 0  0  1

Wenn Sie sich um eine andere Achse drehen wollen, wird die Matrix anders aussehen.

0 Stimmen

Meiner Erfahrung nach müssen Sie eine Übersetzung hinzufügen, damit sich das transformierte Bild im Ansichtsfenster befindet.

2voto

Negieren Sie die beiden Vektoren, die nicht die Achse sind, um die Sie drehen wollen.

Also: Man kann eine ID-Matrix nehmen, die 1 für die beiden Achsen, die betroffen sein sollen, negieren und diejenige, um die man sich drehen will, unberührt lassen, dann kann man die beiden multiplizieren.

Oder wenn Sie Zugriff auf die Achsen einzeln haben (sagen wir, Sie verwenden eine API, die das bietet), verwenden Sie einfach etwas wie myMtx.xAxis.NegateInPlace(); myMtx.zAxis.NegateInPlace() für eine Drehung um Y, und so weiter.

2voto

zed111 Punkte 200

Bei einer 3D-Drehung um eine Achse e ist zu beachten, dass bei einer Drehung um 180 Grad um eine Achse e die Komponente eines beliebigen Vektors x entlang der Achse e gleich bleibt und der senkrechten Komponente ein negatives Vorzeichen verliehen wird. x' sei der gedrehte Vektor. Dann:

enter image description here

-5voto

user416584 Punkte 37
-1  0  0
 0 -1  0
 0  0 -1

das sollte die richtige Matrix sein

1 Stimmen

Das ist eine vollständige Negation, die die Händigkeit der Matrix ändert. Nur zwei Achsen müssen negiert werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X