5.4: Composición de las transformaciones
- Page ID
- 82388
A menudo vamos a querer realizar varias operaciones sobre un objeto antes de mostrar el resultado. Por ejemplo, supongamos que queremos rotar\(\frac{\pi}{3}\) y reducir al\(\frac{1}{2}\) tamaño en cada dimensión:
\[\mathrm{G}_{1}=\mathrm{R}\left(\frac{\pi}{3}\right) \mathrm{G} \nonumber \]
\[\mathrm{G}_{\text {new }}=\mathrm{S}\left(\frac{1}{2}, \frac{1}{2}\right) \mathrm{G}_{1} \nonumber \]
Si hay\(n\) puntos en la matriz\(G\), se requerirán\(4n\) multiplicaciones para realizar cada una de estas operaciones, para un total de\(8n\) multiplicaciones. Sin embargo, podemos guardar algunas multiplicaciones al señalar que
\[\mathrm{G}_{\text {new }}=\mathrm{S}\left(\frac{1}{2}, \frac{1}{2}\right)\left[\mathrm{R}\left(\frac{\pi}{3}\right) \mathrm{G}\right]=\mathrm{AG} \nonumber \]
donde
\ [\ begin {align}
\ mathrm {A} &=\ mathrm {S}\ izquierda (\ frac {1} {2},\ frac {1} {2}\ derecha)\ mathrm {R}\ izquierda (\ frac {\ pi} {3}\ derecha)\ nonumber\\
&=\ left [\ begin {array} {ll}
\ frac {1} 2}\ cos\ izquierda (\ frac {\ pi} {3}\ derecha) & -\ frac {1} {2}\ sin\ izquierda (\ frac {\ pi} {3}\ derecha)\\
\ frac {1} {2}\ sin\ izquierda (\ frac {\ pi} {3}\ derecha) &\ frac {1} {2}\ cos\ izquierda (\ frac {\ pi} {3}\ derecha)
\ end {array}\ derecha]
\ end {align}\ nonumber\]
Es decir, aprovechamos el hecho de que la multiplicación matricial es asociativa para combinar\(S\) y\(R\) en una sola operación\(A\), lo que requiere sólo 8 multiplicaciones. Entonces operamos\(G\) con\(A\), lo que requiere\(4n\) multiplicaciones. Al “componer” las dos operaciones, hemos reducido el total de\(8n\) a\(4n+8\) multiplicaciones. Además, ahora podemos construir operadores con acciones complejas combinando acciones simples.
Podemos construir un operador que estire objetos a lo largo de una línea diagonal componiendo escala y rotación. Debemos
- rotar la línea diagonal al eje x con R\((−\theta)\);
- escala con S\((s,1)\); y
- girar de nuevo a la orientación original con R (\(\theta\))
La Figura 1 muestra un cuadrado que se estira a lo largo de una\(45^{\circ}\) línea. El operador compuesto que realiza este estiramiento direccional es
\ [\ begin {align}
\ mathrm {A} (\ theta, s) &=\ nombreoperador {R} (\ theta)\ mathrm {S} (s, 1)\ mathrm {R} (-\ theta)\ nonumber\\
&=\ left [\ begin {array} {cc}
\ cos\ theta & -\ sin\ theta\
\ sin theta\ eta &\ cos\ theta
\ end {array}\ derecha]\ izquierda [\ begin {array} {ll}
s & 0\\
0 & 1
\ end {array}\ right]\ left [\ begin {array} {ll}
\ cos\ theta &\ sin\ theta\
-\ sin\ theta &\ cos\ theta
\ end {array}\ right]\ nonumber\\
&=\ left [\ begin {array} {ll }
s\ cos ^ {2}\ theta+\ sin ^ {2}\ theta & (s-1)\ sin\ theta\ cos\ theta\\
(s-1)\ sin\ theta\ cos\ theta &\ cos ^ {2}\ theta+s\ sin ^ {2}\ theta
\ end {array}\ derecho].
\ end {align}\ nonumber\]
Tenga en cuenta que el operador más a la derecha en un producto de operadores se aplica primero.
