Scher Matrix als eine Kombination der grundlegenden transformation?
Ich weiß, werden die Transformationsmatrizen für die rotation, Skalierung, übersetzung etc. Ich kenne auch die matrix für die Scherung transformation. Nun, ich muss die scher-matrix--
[1 Sx 0]
[0 1 0]
[0 0 1]
in der form einer Kombination der anderen, oben erwähnten Transformationen. Habe versucht, die Suche, versucht, brainstorming, aber nicht in der Lage zu schlagen! Danke!
- Translation und Skalierung haben keine Auswirkung auf abscheren, da Sie auf verschiedene Elemente der matrix. Eine rotation besteht aus 3 Scheren, aber ich habe nicht gehört, tut es die andere Weise herum. Können Sie formulieren die Frage, vielleicht? Warum brauchen Sie diese matrix, um aus den anderen Transformationen? Auch, wenn Sie verfassen die endgültige matrix, Sie haben keine Möglichkeit zu wissen, wie Sie ursprünglich komponiert, wie viele verschiedene Kombinationen können dazu führen, dass das Ergebnis, also das, was der Fall ist-wo brauchen Sie diese?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den x-scher-Betrieb scher-Winkel
theta
reduziert sich auf Rotationen und Skalierungen alsfolgt:
(a) Drehen durch
theta/2
gegen den Uhrzeigersinn.(b) - Skala mit
x-scaling factor = sin(theta/2)
undy-scaling factor = cos(theta/2)
.(c) Drehen von
45 degree
im Uhrzeigersinn.(d) - Skala mit
x-scaling factor = sqrt(2)/sin(theta)
, undy-scaling factor= sqrt(2)
.Yup, es kann getan werden, eine Drehung gefolgt von non-uniform scaling-und reverse-Drehung. Sie können finden die details hier in der Dritten Frage http://www.cs.cmu.edu/~djames/15-462/Fall03/assts ist/15-462-Fall03-wrAssign1-Antwort.pdf. Sie können versuchen, die folgenden openGL-code. Dreht man ein Rechteck von 45 Grad dann Skalierungen auf der x-Achse. und dann dreht sich bei -26 Grad also atan(0.5). 0.5 kommt von der Suche nach dem Winkel zwischen x-Achse und eine Seite nach der Skalierung in x-Richtung.
glRotatef(-26.0, 0.0, 0.0, 1.0);
glScalef(2,1,1);
glRotatef(45.0, 0.0, 0.0, 1.0);
glRectf(0, 0, 25.0, 25.0);
Scheren sind eine Elementare matrix-operation, also, während Sie kann Ausdrücken, die Sie als "eine Kombination von anderen matrix-Operationen", dabei ist wirklich seltsam. Schere nehmen, die zwei Formen:
In der Erwägung, dass eine rotation matrix ist viel mehr beteiligt; die Idee, der Ausdruck einer Scherung mit Rotationen schlägt vor, haben Sie nicht wirklich geschrieben, diese Dinge noch zu sehen, was Sie brauchen, also schauen wir uns das an. Eine drehmatrix hat die form:
Werden kann, setzt sich wie eine Abfolge von drei bestimmten scher Matrizen, R = Sx x Sy x Sx:
Nun, wir können tun einige triviale matrix-manipulation, um zu bekommen, Sy. Die erste Links-Multiplikation:
Und dann von rechts multiplizieren:
Als trivial-rewrite, eine Schere ist jetzt zwei Scheren und eine rotation.
Aber die viel wichtigere Frage ist: warum tun Sie, um auszudrücken, dass die scher-matrix als etwas anderes? Es ist bereits eine Elementare matrix-form, was bizare-computing-Umgebung sind Sie in oder was verrückt, was wollen Sie tun, dass erfordert, dass Sie ausdrücklich eine Elementare Transformation als einen Weg, komplexer Weg langsamer, was zu berechnen? =)
In 3D-Grafiken, die wir verwenden Häufig eine
4
x4
Matrix mit 16 nützliche Elemente. Die Identität4
x4
Matrix ist wie folgt:Zwischen diesen sechzehn Elementen gibt es 6 verschiedene scher-Koeffizienten:
In Scher-Matrix-Sie sind als followings:
Weil es gibt keine
Rotation coefficients
überhaupt in dieser Matrix, sechsShear coefficients
zusammen mit dreiScale coefficients
ermöglichen, drehen Sie 3D-Objekte überX
,Y
, undZ
Achse mit magischen Trigonometrie (sin
undcos
).Hier ist ein Beispiel, wie drehen, 3D-Objekt (CCW) über seine
Z
Achse mit Scherung und Skalierung von Elementen:Blick auf 3 verschiedenen Rotations-Muster mit Hilfe der Scherung und Skalierung von Elementen: