Wie entferne ich Achsen aus einer Rotationsmatrix?

8

Ich habe eine OpenGL willkürliche Rotationsmatrix und möchte die X & amp; Y-Achse, so dass nur die Z-Achse übrig bleibt?

Ist das möglich? Irgendwelche Hinweise, wie es geht?

    
Paul S 21.04.2011, 08:47
quelle

2 Antworten

5

Wenn Sie hier nur laut nachdenken, können Sie die Matrix nicht dazu verwenden, einen Vektor wie (1,0,0) zu rotieren, dann tun Sie atan2 (y, x), um zu sehen, wie stark sie rotiert, und dann eine neue Matrix zu erstellen um die Z-Achse um so viel zu drehen?

    
aib 21.04.2011, 10:34
quelle
3

Bei einer Rotation, die nur um die z-Achse verläuft, sollte die z-Achse unverändert bleiben. Die obige Empfehlung ist also genau das Gegenteil von dem, was Sie wollen.

Nehmen wir an, Sie haben eine beliebige OpenGL-Matrix:

%Vor%

Wo die t_i Elemente Übersetzungen sind und die r_jk Elemente Komponenten der Rotation sind. Sie möchten eine Matrix, die so aussieht:

%Vor%

Wenn die Matrix keine Skalierungsfaktoren hat oder in der Nähe einer Singularität liegt, sollten Sie dies erreichen können, indem Sie einfach die z-Teile der Matrix auf Null setzen und dann die Spalten neu normalisieren. Da eine OpenGL-Matrix eine Spaltenhauptreihenfolge ist:

%Vor%     
JCooper 22.04.2011 14:48
quelle

Tags und Links