Observaciones

La primera pregunta, que muchos iniciados se hacen, es "¿de verdad necesitamos hacer todo esto?". Aunque todos estos conceptos y la mecánica presentada parezcan más complicados de lo que deberían ser, nos servirán cuando pasemos a manipular y operar con objetos en tres dimensiones. Por ahora, todas estas operaciones nos servirán de base. Esto no significa que no deberíamos usar estas operaciones en dos dimensiones, especialmente cuando tenemos objetos complicados.

En la práctica, todas estas operaciones matriciales y vectoriales ya vienen implementadas en software como bibliotecas y API's gráficas y en hardware como instrucciones de la GPU (unidad de procesamiento gráfico) de las tarjetas aceleradoras gráficas. Tanto a nivel de hardware como de software, seguimos una arquitectura de procesamiento en serie y por etapas para generar una imagen a partir de su representación geométrica. Empezamos con la geometría de los objetos, que principalmente es el grupo de vértices. El procesamiento total de estos datos geométricos se puede repartir y distribuir por etapas o fases. En estos momentos, tenemos el siguiente esquema de distribución de tareas.

Figura 34 - Procesamiento geométrico
[IMAGEN]: Figura 34 - Procesamiento geométrico

Los vértices pasan a ser transformados, según la lógica de nuestra aplicación. Estos vértices transformados son convertidos a nuestra superficie de dibujo, que puede representar nuestra pantalla, impresora, o en memoria. Por último, convertiremos las unidades de nuestra superficie de dibujo a píxeles o puntos de impresión. Esto supone convertir nuestra escena vectorial o continua en nuestra imagen final y discreta en píxeles en la pantalla o como puntos de impresión.

Iremos agregando más etapas a nuestro procesamiento a medida que vayamos viendo más técnicas. Asimismo, cuando pasemos al modelado en tres dimensiones, agregaremos a nuestro procesamiento algunas etapas relacionadas con el modelado en tres dimensiones.

Referencia

Matrices de las Operaciones Fundamentales
Operación Matriz Inversa
Traslación: T(dx,dy)
    ( 1  0  0 )
T = ( 0  1  0 )
    ( dx dy 1 )
      (  1   0   0 )
T-1 = (  0   1   0 )
      ( -dx -dy  1 )
Cambio de escala: S(sx,sy)
    ( sx 0  0 )
S = ( 0  sy 0 )
    ( 0  0  1 )
      ( 1/sx 0    0 )
S-1 = ( 0    1/sy 0 )
      ( 0    0    1 )
Rotación: R(α)
    (  cos α  sen α  0 )
R = ( -sen α  cos α  0 )
    (  0      0      1 )
      (  cos α -sen α  0 )
R-1 = (  sen α  cos α  0 )
      (  0      0      1 )
Sesgado en la X: Hx(α)
     (    1     0  0 )
Hx = (  cotg α  1  0 )
     (    0     0  1 )
       (    1     0  0 )
Hx-1 = ( -cotg α  1  0 )
       (    0     0  1 )
Sesgado en la Y: Hy(α)
     (  1  cotg α  0 )
Hy = (  0    1     0 )
     (  0    0     1 )
       (  1 -cotg α  0 )
Hy-1 = (  0    1     0 )
       (  0    0     1 )

Ejercicios

Enlace al paquete de este capítulo.

  1. Implemente una biblioteca para representar los puntos, vectores, y matrices al igual que sus operaciones, como pueden ser:

    • suma
    • resta
    • producto escalar
    • producto vectorial
    • módulo, para calcular la magnitud (o distancia) de un vector
    • normalizar un vector
    • calcular el ángulo entre dos vectores
    • determinante
    • inversa
    • traspuesta

    Puede limitar la implementación de estas entidades y operaciones para representarlas y trabajar en coordenadas homogéneas.

  2. Implemente las transformaciones afines, en coordenadas homogéneas: traslación, cambio de escala, rotación, y sesgado. Estas operaciones realmente construyen las matrices que luego serán multiplicadas.

  3. Dibuje una figura compuesta que más le guste. Por ejemplo, puede modelar y dibujar la siguiente imagen de un velero, compuesto por un casco, un mástil, y dos velas.

    Ejercicio 3
    [IMAGEN]: Ejercicio 3 - Velero
  4. Redibuje el ejemplo presentado en el curso del molino moderno en la figura 28 para que use unas aspas antiguas. Por ejemplo,

    Ejercicio 4
    [IMAGEN]: Ejercicio 4 - Aspas de un molino

    Es una buena idea modelar un aspa y luego crear cuatro instancias para ser situadas en sus lugares correctos para crear las cuatro aspas del molino.