Transformaciones
3.1 Transformaciones
Sección titulada «3.1 Transformaciones»En la pipeline gráfica se describen varios espacios de trabajo:
- El Local Space es el sistema de coordenadas locales de los objetos con relación a su origen local.
- El World Space es el sistema de coordenadas de escena o de mundo de los objetos con relación al origen general.
- La Model Matrix transforma las coordenadas locales de la escena, trasladando, rotando y escalando los objetos hasta colocarlos en su posición final.
Las transformaciones geométricas se usan para trasladar, escalar y rotar los objetos y la cámara de la escena.

En la pipeline fija (Opengl 1.2) el paso de coordenadas locales a coordenadas de la escena se corresponde con el paso transformación geométrica.

En el retained mode (Opengl 3.3) el paso de coordenadas locales a coordenadas de escena se realiza mediante el Vertex Shader.

3.1.1 Traslación
Sección titulada «3.1.1 Traslación»Llamamos traslación a mover un objeto (todos sus vértices) de un lugar a otro. Si queremos trasladar un punto a una nueva posición , usamos la ecuación:
En Opengl 1.2 glTranslatef(Tx, Ty, Tz)

3.1.2 Rotación respecto al Origen
Sección titulada «3.1.2 Rotación respecto al Origen»Llamemos rotación respecto al origen a desplazar un ángulo un objeto (todos sus vértices) respecto al origen. Para rotar un punto usamos relaciones trigonométricas:
En Opengl 1.2 glRotatef(θ, x, y,z) donde está en grados y el giro se realiza alrededor del eje que pasa por (0,0,0) y (x,y,z) en sentido contrario a las agujas del reloj.

3.1.3 Rotación General
Sección titulada «3.1.3 Rotación General»Para desplazar un ángulo un objeto (todos sus vertices) respecto un punto cualquiera :
- Traslación al origen.
- Rotación respecto al origen
- Traslación a

3.1.4 Ángulos de Euler
Sección titulada «3.1.4 Ángulos de Euler»Dados dos sistemas de coordenadas e con un mismo origen, es posible determinar la posición de uno en términos del otro usando tres ángulos .
Esto sirve para representar los ejes de un objeto respecto a un sistema de referencia general.
Los giros son acumulativos y los ángulos se encuentran ya girados.
Para usar ángulos de Euler en glRotatef(θ, x, y,z) se pondría .
3.1.5 Escalado respecto al origen
Sección titulada «3.1.5 Escalado respecto al origen»Llamamos escalado a cambiar el tamaño de un objeto (todos sus vértices). No es una transformación de cuerpo rígido ya que la geometría varía. Para escalar multiplicamos por los coeficientes de escalado, que serán la razón entre las coordenadas nuevas y viejas:
- Si se realiza un escalado uniforme
- se realiza un escalado no uniforme
Para escalar un punto multiplicamos sus coordenadas por los coeficientes de escalado:
En openGl(1.2) glScale(Sx, Sy, Sz)
3.1.6 Escalado General
Sección titulada «3.1.6 Escalado General»Para escalar un objeto (todos sus vértices) cuando el origen de coordenadas no está en su interior sin producir un desplazamiento:
- Traslación al origen
- Escalado respecto al origen
- Traslación al punto inicial
3.2 Coordenadas Homogéneas
Sección titulada «3.2 Coordenadas Homogéneas»Para poder realizar todas las transformaciones mediante multiplicación de matrices hay que cambiar la forma en la que se realiza la traslación. Para esto utilizaremos las coordenadas homogéneas, que añaden un nuevo elemento que será la última columna de las matrices de transformación, la cual se usará para colocar los factores de translación.
- En los puntos
- En los vectores
- No existe ni el (0,0,0) ni el (0,0,0,1).
3.2.1 Transformaciones en 2D
Sección titulada «3.2.1 Transformaciones en 2D»3.2.2 Transformaciones en 3D
Sección titulada «3.2.2 Transformaciones en 3D»Traslación
Escalado
S(s_x, s_y, s_z) = \begin{bmatrix} s_x & 0 & 0 & 0 \\ 0 & s_y & 0 & 0 \\ 0 & 0 & s_z & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} $$ **Rotación alrededor del eje Z** $$ R_z(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 & 0 \\ \sin\theta & \cos\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} $$ **Rotación alrededor del eje X**R_x(\theta) =\begin{bmatrix}1 & 0 & 0 & 0 \\0 & \cos\theta & -\sin\theta & 0 \\0 & \sin\theta & \cos\theta & 0 \\0 & 0 & 0 & 1\end{bmatrix}$$Rotación alrededor del eje Y
Notación en columna Por ejemplo, los valores de traslación estarán en .
3.2.3 Zonas de una matriz
Sección titulada «3.2.3 Zonas de una matriz»La zona azul serían transformaciones lineales, la verde traslaciones y la rosa ceros.