Grundlagen der Grafik – Zweidimensionale Transformation

Einfache 2D-Transformation

  • Modelltransformation

  • Skalierungsmatrix

    Gleiche Skalierung:
    [ x ′ ​​​​y ′ ] = [ s 0 0 s ] [ x y ] = [ s x s y ] \begin{bmatrix} x^\prime \\ y ^\prime \end{bmatrix} = \begin{bmatrix} s & 0 \\ 0 & s \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} sx \\ sy \end{bmatrix} [X'Und]=[S00s][Xy]=[sxsy]
    Nichtproportionale Skalierung:
    [ x ′ ​​​​y ′ ] = [ s x 0 0 s y ] [ x y ] = [ s x x s y y ] \ begin{bmatrix} x^\prime \\ y^\prime \end{bmatrix} = \begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix} \begin{bmatrix} x \\ y \ end{bmatrix} = \begin{bmatrix} s_xx \\ s_yy \end{bmatrix} [X'Und]=[Sx00Sy][Xy]=[SxXSyy]

  • Symmetrische Matrix

  • anasho x x x轴对称
    [ x ′ ​​y ′ ] = [ − 1 0 0 1 ] [ x y ] = [ − x y ] \begin {bmatrix} x\prime \\ y^\prime \end{bmatrix} = \begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} -x \\ y \end{bmatrix} [xUnd]=[1001][Xy]=[xy]

  • falsch geschnittene Matrix

    Fehlschnitt bedeutet, dass bei unveränderter vertikaler Koordinate die horizontale Koordinate entsprechend der vertikalen Koordinate unterschiedlich verschoben wird, d. h. wenn die Höhe eines Quadrats unverändert bleibt, wird es zu einem Parallelogramm gestreckt < a i=1> [ x ′ ​​​​y ′ ] = [ 1 a 0 1 ] [ x y ] = [ x + a y y ] \begin{bmatrix} x^\prime \\ y^\prime \end{bmatrix} = \ begin {bmatrix} 1 & a \\ 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} x+ay \\ y \end{bmatrix} < /span>
    [X'Und]=[10A1][Xy]=[X+ayy]

  • Rotationsmatrix

    Unter normalen Umständen und sofern keine anderen Bestimmungen vorliegen, wird unsere Standarddrehung mit dem Koordinatenursprung als Mittelpunkt R θ = = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] R_\theta= = \begin{bmatrix} \cos \ theta & -\ sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} , was einen großen Einfluss auf nachfolgende Berechnungen hat. Die Rotationsmatrix ist wie folgt:Drehung gegen den Uhrzeigersinn
    Rθ==[cosichSündeθSündeichcosθ]
    Wenn eine Transformation geschrieben werden kann als [ x ′ ​​​​y ′ ] = [ a b c d ] [ x y ] \begin{bmatrix }x^\ prime\\y^\prime\end{bmatrix}=\begin{bmatrix}a&b\\c&d\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix} < /span>[X'Und]=[AcBd][Xy],即 x ′ = M x \mathbf{x^\prime}=\mathbf{Mx} X'=Wenn Mx, nennen wir diese Transformation eine lineare Transformation.

  • Übersetzungstransformation

    Die Übersetzungstransformation ist etwas ganz Besonderes. Sie kann nicht in einer ähnlichen Form wie die obige lineare Transformation geschrieben werden. Sie kann nur wie folgt ausgedrückt werden x ′ = x + t x y ′ = y + t y x^\prime=x +t_x \\y^\prime=y+t_y X'=X+TxUnd'=Und+Ty [ x ′ ​​y ′ ] = [ a b c d ] [ x y ] + [ t x t y ] \begin{bmatrix}x^\prime\\y^\prime\end{ bmatrix}=\begin{bmatrix}a&b\\c&d\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}+\begin{bmatrix}t_x\\t_y\end{bmatrix} [X'Und]=[AcBd][Xy]+[TxTy]. Um den Ausdruck der Transformation zu vereinheitlichen, führen wir daher das Konzept der homogenen Koordinaten ein.

  • Homogene Koordinaten

    Wir fügen dem zweidimensionalen Punkt oder Vektor eine Dimension hinzu
    Punkt ( x , y , 1 ) T (x,y,\ color {red}1\color{back})^T (x,y,1)T向量 ( x , y , 0 ) T (x,y,\color{red}0\color{back}) ^T (x,y,0)T
    In diesem Fall können wir die Übersetzungstransformation in der folgenden Form schreiben:
    [ x ′ ​​​​x ′ w ′ ] = [ 1 0 t x 0 1 t y 0 0 1 ] ⋅ [ x y 1 ] = [ x + t x y + t y 1 ] \begin{bmatrix} x^\prime \\ x^\prime \\ w^\prime\end{bmatrix }=\ begin{bmatrix}1&0&t_x\\0&1&t_y\\0&0&1\end{bmatrix}\cdot\begin{bmatrix}x\\y\\1\end{bmatrix} =\begin {bmatrix}x+t_x\\y+t_y\\1\end{bmatrix} X'X'In=100010TxTy1XUnd1=X+TxUnd+Ty1
    Warum ist der Punkt plus 1 und der Vektor plus 0? Da der Vektor eine Translationsinvarianz aufweist, ist das Ergebnis nach der Transformation des Vektors durch Translation immer noch der ursprüngliche Vektor, d. h.
    [ x ′ ​​​​x ′ w ′ ] = [ 1 0 t x 0 1 t y 0 0 1 ] ⋅ [ x y 0 ] = [ x y 0 ] \begin{bmatrix} x^\prime \\ x^\prime \ \ w^ \prime\end{bmatrix}=\begin{bmatrix}1&0&t_x\\0&1&t_y\\0&0&1\end{bmatrix}\cdot\begin{bmatrix}x\\ y\\ 0\end{bmatrix}=\begin{bmatrix}x\\y\\0\end{bmatrix} X'X'In=100010TxTy1XUnd0=XUnd0
    Ein tieferes Verständnis ist:
    Wenn zwei Vektoren addiert werden, ist das Ergebnis immer noch ein Vektor: Vektor + Vektor = Vektor < a i=3> Subtrahiere Punkte von Punkten und das Endergebnis ist ein Vektor vom Startpunkt zum Endpunkt: Punkt - Punkt = Vektor Punkt Plus-Vektor, tatsächlich ist es so Bewegen Sie diesen Punkt in die Richtung des Vektors, und das Ergebnis ist immer noch ein Punkt: Punkt + Vektor = Punkt Das Der letzte Punkt plus ein Punkt bedeutet eigentlich eine Linie, die zwei Punkte verbindet. Der Mittelpunkt von , wenn wir einen beliebigen Punkt betrachten ( x , y , w ) T (x,y,w)^T


    (x,y,w)( x / w , y / w , 1 ) T , w ≠ 0 (x/w, y/w,1)^T,w\neq0 (x/w,y/w,1)T,In=0, dann ist das Endergebnis von Punkt + Punkt der Mittelpunkt der beiden Punkte in homogenen Koordinaten.
    Dann können alle oben genannten Änderungen (wir nennen sie affine Transformationen) in der folgenden Form in homogenen Koordinaten geschrieben werden: [ x ′ ​​​​y ′ 1 ] = [ a b t x c d t y 0 0 1 ] [ x y 1 ] \begin{bmatrix}x^\prime\\y^\prime\\1\end{bmatrix}=\begin{bmatrix}a&b&t_x\\c& ; d&t_y\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix} X'Und'1=AC0BD0TxTy1XUnd1
    Standard: S ( s x , s y ) = [ s x 0 0 0 s y 0 0 0 1 ] \mathbf{S}(s_x,s_y) = \begin{bmatrix } s_x & 0 &0\\ 0 & s_y &0\\0&0&1\end{bmatrix} S(sx,Sy)=Sx000Sy0001
    Definition: R ( α ) = [ cos ⁡ α − sin ⁡ α 0 sin ⁡ α cos ⁡ α 0 0 0 1 ] \mathbf{R}(\alpha ) = \begin{bmatrix} \cos\alpha& -\sin\earl&0\\ \sin\earl &\cos\earl &0\\0&0&1\end{bmatrix} R(α)=cosASündeA0SündeAcosA0001
    Definition: T ( t x , t y ) = [ 1 0 t x 0 1 t y 0 0 1 ] \mathbf{T}(t_x,t_y) = \begin{bmatrix } 1 & 0 &t_x\\ 0 & 1 &t_y\\0&0&1\end{bmatrix} T(tx,Ty)=100010TxTy1
    Bei der affinen Transformation ist die letzte Zeile der Matrix ( 0 , 0 , 1 ) (0,0,1) (0,0,1), aber in anderen Fällen ist die letzte Zeile sinnvoll, also beachten Sie dies bitte.

  • Inverse Transformation

    Die inverse Transformation besteht darin, die Transformation in umgekehrter Reihenfolge durchzuführen. In der linearen Algebra besteht die inverse Transformation darin, die inverse Matrix der Transformation zu multiplizieren.

  • Die Reihenfolge der Translations- und Rotationstransformationen

    Bei der Durchführung komplexer Transformationen führen wir zuerst eine Rotationstransformation und dann eine Translationstransformation durch, andernfalls sind die Ergebnisse unterschiedlich. Durch die Matrixmultiplikation können wir erkennen, dass die Matrixmultiplikation das Kommutativgesetz nicht erfüllt. Wenn also die Reihenfolge der Transformation unterschiedlich ist, sind die Ergebnisse unterschiedlich. Denn beim Drehen verwenden wir standardmäßig den Ursprung als Mittelpunkt des Kreises. Wenn wir ihn zuerst verschieben, unterscheidet er sich vom ursprünglichen Ursprung der Drehung und das Ergebnis ist falsch.
    Wenn wir daher einen Punkt oder Vektor entsprechend einem Nicht-Ursprungspunkt drehen müssen, können wir zuerst den Punkt oder Vektor zum Ursprung verschieben, ihn dann drehen und dann den gedrehten Punkt drehen oder Vektor Führt die umgekehrte Transformation der vorherigen Übersetzung durch.
    Die Matrixform kann geschrieben werden als
    T ( c ) ⋅ R ( α ) ⋅ T ( − c ) \mathbf{T(c)}\cdot \mathbf{ R(\alpha)}\cdot\mathbf{T(-c)} T(c)R(α)T(c)
    Beachten Sie, dass die Matrix in Form einer Linksmultiplikation berechnet wird. Daher besteht die Operation hier darin, zuerst den Vektor zu verschieben − c -c c zum Ursprung, dann drehen und schließlich verschieben c c c Abstand zur ursprünglichen Position.

Guess you like

Origin blog.csdn.net/bjygn/article/details/125101989