Capítulo 6 - Modelado en 2D

Hasta este momento se ha visto varios ejemplos de programación gráfica implementando diferentes técnicas. A partir de ahora nos centraremos en generar nuestra imagen como un conjunto de objetos visuales. Crearemos un modelo para representar nuestra escena describiendo los objetos que la componen. Representaremos cada objeto en términos de su geometría y topología. La necesidad de colocar los objetos en la escena nos fuerza a describirlos según su posición. Nos basaremos en un sistema de coordenadas, como el plano cartesiano, para situar cada uno de estos objetos.

Para crear y manipular modelos para poder crear las escenas que compondrán nuestra imagen, necesitamos describir nuestros modelos y sus operaciones numérica y geométricamente. Esto supone usar las matemáticas para poder desarrollar las imágenes que nos interesan generar.

Conceptos

Para poder entender las operaciones y algoritmos que usaremos para modelar nuestros objetos y escenas, debemos comprender algunos conceptos matemáticos fundamentales.

Vamos a definir brevemente los conceptos acerca de tres tipos básicos de entidades para describir nuestros objetos y que nos proporcionarán ciertas propiedades importantes:

Escalares

Básicamente, se trata de números reales que tienen dos operaciones importantes: la suma y la multiplicación. También tienen las siguientes propiedades:

  • Conmutativa:
    a + b = b + a
    a * b = b * a
    
  • Asociativa:
    a + (b + c) = (a + b) + c
    a * (b * c) = (a * b) * c
    
  • Distributiva:
    a * (b + c) = (a * b) + (a * c)
    

Existen dos escalares especiales: el elemento neutro 0 para la suma y el 1 para la multiplicación. Esto es,

a + 0 = 0 + a = a
a * 1 = 1 * a = a

Además, existen las inversas de la suma, descrita como -a, y de la multiplicación, descrita como a-1. Esto es,

a + (-a) = 0
a * a-1 = 1

Puntos

Un punto no es nada más que una ubicación en un espacio sin siquiera tener tamaño. Los puntos existen irrelevantemente de un sistema de referencia o de coordenadas. Obviamente, sería inconveniente e impráctico describir cada punto existente sin usar un sistema de coordenadas.

Vectores

Geométricamente, un vector es un segmento orientado que tiene dirección, sentido (u orientación), y magnitud, representada como la longitud del segmento. Un vector no tiene posición, por lo que dos vectores son idénticos si tienen la misma dirección, orientación, y magnitud. Al igual que ocurre con los puntos, necesitaremos un sistema de coordenadas para referirnos a cualesquier vectores.

Nota: Sugerimos consultar el Apéndice 2 para profundizar en el tema de los vectores.

Espacios

Nos interesa hablar de ciertos espacios concretos, como son:

  • El espacio vectorial, o a veces llamado el espacio vectorial lineal, se compone de escalares y de vectores. Se definen varias operaciones con estas entidades y entre sí.

    Nota: Consulten el Apéndice 2 para más información acerca de estas operaciones.

  • El espacio afín amplía el espacio vectorial agregando el concepto de puntos. Con estas entidades, podemos crear un sistema de coordenadas, descrito como una base de vectores y el punto de origen.
  • El espacio euclidiano agrega al espacio afín la noción de distancia o la medida de tamaño. La nueva operación principal es el llamado producto interno que resulta en un escalar a partir de dos vectores. Por esta razón, se suele llamar producto escalar a esta operación.

Líneas

Una línea recta es un conjunto infinito de puntos que comparte una misma pendiente o dirección. Podemos describir cualquier punto en una línea con las entidades descritas anteriormente; esto es,

P(t) = P0 + t v

donde P0 es un punto arbitrario y conocido, t es un escalar, y v es un vector. P(t) describirá cualquier punto en la línea según el parámetro t.

Al ajustar un sistema de coordenadas, la fórmula de una línea recta, en dos dimensiones, se convierte en la siguiente:

(x(t),y(t)) = (x0,y0) + t (vx,vy)

Se puede convertir lo anterior en el siguiente sistema de ecuaciones:

x(t) = x0 + t vx
y(t) = y0 + t vy

Despejando el parámetro t de este sistema de ecuaciones, obtenemos la siguiente fórmula más familiar:

(y(x)-y0) = m (x-x0)

donde m es la pendiente que es igual a vy/vx. Esta ecuación termina siendo el siguiente polinomio,

y(x) = m x + b

Convexidad

Un polígono es convexo si cada segmento que une cada dos de sus vértices existe completamente en el interior de tal polígono. También podemos decir que un polígono es convexo si el ángulo formado por cada pareja contigua de aristas queda comprendida entre 0° y 180° (ambos incluidos).

Figuras 1 y 2 - Convexo y Cóncavo
[IMAGEN]: Figura 1 - Convexo] [IMAGEN]: Figura 2 - Cóncavo]

Ahora podemos continuar con otros conceptos que necesitamos para crear y controlar los modelos de los objetos gráficos. Los objetos que vamos a tratar por el momento serán compuestos por uno o varios polígonos convexos. Al manejar polígonos, podemos describirlos a través de un conjunto de vértices y aristas. Trabajar con polígonos, vértices, y aristas es más simple que manipular objetos más complejos basados en fórmulas y funciones matemáticas complicadas. Si usáramos objetos complejos, se nos complicaría bastante la generación de la imagen. En otros capítulos, veremos otras técnicas avanzadas para crear modelos más complicados pero más realistas. Por el momento, veremos las técnicas necesarias para generar y visualizar objetos basados en modelos que aproximen aquellos objetos más complicados.