Wie stellt man eine 4x4 Matrix Rotation dar?

8

Wie stelle ich die gegebenen Definitionen für x, y, z-Rotationsmatrizen als eine vollständige Matrix dar? Multiplizieren Sie einfach x, y, & amp; Matrizen?

X Drehung:

%Vor%

Y-Drehung:

%Vor%

Z-Drehung:

%Vor%

Bearbeiten: Ich habe eine separate Rotationsklasse, die einen x, y, z Gleitkommawert enthält, den ich später in eine Matrix umwandele, um sie mit anderen Translationen / Skalen / Rotationen zu kombinieren.

Nach den Antworten hier kann ich davon ausgehen, dass wenn ich etwas mache wie:

Rotationsrotation; Rotation.SetX (45); Rotation.SetY (90); rotation.SetZ (180);

Dann ist es wirklich wichtig, in welcher Reihenfolge die Rotationen angewendet werden? Oder ist es sicher, die Annahme zu treffen, dass Sie bei Verwendung der Rotationsklasse akzeptieren, dass sie in x, y, z-Reihenfolge angewendet werden?

    
Mark Ingram 20.10.2010, 21:21
quelle

3 Antworten

6

Ja, die drei Matrizen wiederum multipliziert komponieren sie.

BEARBEITEN:

Die Reihenfolge, die Sie Multiplikation der Matrizen gilt die Reihenfolge der Drehungen auf den Punkt angewendet wird bestimmen.

%Vor%     
Ignacio Vazquez-Abrams 20.10.2010, 21:23
quelle
2

Es ist wirklich wichtig, in welcher Reihenfolge Sie Ihre Rotationen anwenden.

Die gewünschte Reihenfolge hängt davon ab, was die Rotationen tun sollen. Wenn Sie beispielsweise ein Flugzeug modellieren, möchten Sie vielleicht zunächst die Rolle (entlang der Längsachse des Körpers), dann die Neigung (entlang der anderen horizontalen Achse) und dann den Kurs (entlang der vertikalen Achse) drehen ). Dies wäre der Fall, weil, wenn Sie die Überschrift zuerst gemacht hätten, das Flugzeug nicht mehr entlang der anderen Achsen ausgerichtet wäre. Darüber hinaus müssen Sie mit Ihren Konventionen umgehen: Welche dieser Achsen entspricht X, Y und Z?

Im Allgemeinen möchten Sie nur eine bestimmte Rotationsreihenfolge für bestimmte Anwendungen auswählen. Es macht wenig Sinn, ein generisches "XYZrotation" -Objekt zu definieren; Normalerweise haben Sie generische Transformationen (dh Matrizen, die beliebige Verkettungen von Rotationen, Translationen usw. sein können) und verschiedene Möglichkeiten, diese zu erhalten (z. B. rotX, rotY, translate, scale ...) sowie die Möglichkeit, sich zu bewerben sie in einer bestimmten Reihenfolge (durch Matrixmultiplikation).

Wenn Sie etwas wollen, das nur Rotationen und nichts anderes darstellen kann, könnten Sie Quaternionen (wie andand) in Betracht ziehen. Sie müssen jedoch noch entscheiden, in welcher Reihenfolge Ihre Rotationen durchgeführt werden sollen, und auch hier macht es keinen Sinn, eine dafür erforderliche Reihenfolge fest zu verdrahten.

    
comingstorm 21.10.2010 17:00
quelle
1

Abgesehen davon, und wenn Sie in Ihren Entwicklungsaktivitäten hier früh genug sind, sollten Sie die Quaternion-Rotation . Es hat eine Reihe von komparativen Vorteilen zu matrixbasierten Ansätzen.

    
andand 20.10.2010 22:53
quelle

Tags und Links