Graficacion 2D



La computación gráfica 2D es la generación de imágenes digitales por computadora - sobre todo de modelos bidimensionales (como modelos geométricos, texto y imágenes digitales 2D) y por técnicas específicas para ellos. La palabra puede referirse a la rama de las ciencias de la computación que comprende dichas técnicas, o a los propios modelos. Los gráficos 2D por computadora se han iniciado en la década de 1950, basándose en dispositivos de gráficos vectoriales. Éstos fueron suplantados en gran parte por dispositivos basados en gráficos raster en las décadas siguientes. El lenguaje PostScript y el protocolo de sistema de ventanas X fueron piezas claves en la evolución histórica del campo.

APLICACIONES

La computación gráfica 2D es utilizada principalmente en aplicaciones que fueron desarrolladas de un principio sobre tecnologías de impresión y dibujo tradicionales, tales como tipografía, cartografía, dibujo técnico, publicidad, entre otras. En estas aplicaciones, la imagen bidimensional no es sólo una representación de un objeto del mundo real, sino un artefacto independiente con valor semántico añadido; los modelos unidimensionales son preferidos porque dan un control más directo de la imagen que los gráficos 3D por computadora (cuyo enfoque se asemeja más a la fotografía que a la tipografía). En muchos dominios, como la autoedición, ingeniería y negocios, una descripción de un documento basado en las técnicas de computación 2D pueden ser mucho más pequeñas que la correspondiente imagen digital. Como también esta representación es más flexible ya que puede ser renderizada en diferentes resoluciones para adaptarse a los diferentes dispositivos de salida existentes. Por estas razones documentos e ilustraciones son a menudo almacenados o transmitidos como archivos gráficos en 2D para facilitar su uso. Los gráficos 2D por computadora se han iniciado en la década de 1950, basándose en dispositivos de gráficos vectoriales. Éstos fueron suplantados en gran parte por dispositivos basados en gráficos raster en las décadas siguientes. El lenguaje PostScript y el protocolo de sistema de ventanas X fueron piezas claves en la evolución histórica del campo.
características

Los gráficos 2D por computadora se han iniciado en la década de 1950, basándose en dispositivos de gráficos vectoriales.1 Éstos fueron suplantados en gran parte por dispositivos basados en gráficos raster en las décadas siguientes. El lenguaje PostScript y el protocolo de sistema de ventanas X fueron piezas claves en la evolución histórica del campo.



Representación de Puntos / Objetos

Un punto p en 2D se representa como un par de números: p = ( x , y ) donde x es la coordenada x del punto p y y es la coordenada y de p . Objetos 2D se representan a menudo como un conjunto de puntos (vértices), {p 1 , p 2 , ..., p n }, y un conjunto asociado de bordes {e 1 , e 2 , ..., e m }. Un borde se define como un par de puntos de e = {p i , p j }. ¿Cuáles son los puntos y los bordes del triángulo de abajo?
También podemos escribir puntos en notación vectorial / matriz,

traducciones

Suponga que se le da un punto en (x, y) = (2,1). ¿Dónde va a ser el punto si se mueve 3 unidades a la derecha y 1 unidad hacia arriba? Respuesta: (x ', y') = (5,2). ¿Cómo se ha obtenido? - (X ', y') = (x + 3, y + 1). Es decir, para mover un punto en alguna cantidad dx a la derecha y dy arriba , debe agregar dx a la coordenada x y añadir dy a la coordenada y.
¿Cuál fue la transformación requerida para mover el triángulo verde al triángulo de color rojo? Aquí el triángulo verde está representado por 3 puntos
triángulo = {p1 = (1,0), p2 = (2,0), p3 = (1.5,2)}
¿Cuáles son los puntos y bordes en la imagen de una casa? ¿Qué se requiere la transformación de mover esta casa de modo que la parte superior del techo está en el origen? Lo que se requiere para mover la casa como se muestra en la animación?
Representación de la matriz / vector de Traducciones
Una traducción también puede ser representado por un par de números, t = (t x , t Y ) donde t x es el cambio en la coordenada x y t y es el cambio en la coordenada y. Para traducir el punto p por T, pero se añaden para obtener la nueva (traducido) punto q = p + t.
q = p + t = =

Escalada

Supongamos que queremos duplicar el tamaño de un objeto 2-D. ¿Qué entendemos por doble? El doble de tamaño, anchura, sólo, solamente altura, a lo largo de la línea sólo algunos? Cuando hablamos acerca de la expansión nos referimos casi siempre una cierta cantidad de escala a lo largo de cada dimensión. Es decir, tenemos que especificar la cantidad para cambiar el tamaño a lo largo de cada dimensión. A continuación vemos un triángulo y una casa que se han duplicado en tanto la anchura y la altura (nota, la zona es más del doble).
 
La escala para la dimensión x no tiene que ser la misma que la dimensión y. Si éstos son diferentes, entonces el objeto está distorsionada. ¿Cuál es la escala en cada dimensión de las fotos de abajo?
 
Y si duplicamos el tamaño, ¿dónde está el objeto resultante? En las fotos de arriba, el objeto escalado siempre se desplaza hacia la derecha. Esto es porque se escala con respecto al origen . Es decir, el punto en el origen se deja fija. Por lo tanto la ampliación en más de un 1 se mueve el objeto lejos del origen y de escala inferior a 1 se mueve el objeto hacia el origen. Esto se puede ver en la animación debajo.
Esto es debido a la forma en la escala básica que se hace. Los objetos anteriores se han reducido simplemente multiplicando cada uno de sus extremos por el factor de escala apropiado. Por ejemplo, el punto P = ( 1,5 , 2 ) ha sido reducido por 2 a lo largo de x y 0,5 a lo largo de y. Por lo tanto, es el nuevo punto
q = ( 2 * 1.5 , 0.5 * 2 ) = (3,1).
Representación de la matriz / vector de Traducciones
transformaciones de escala están representados por matrices. Por ejemplo, la escala por encima de 2 y 0.5 se representa como una matriz:
matriz de escala: s = = 
un nuevo punto: q = s * p =  
La ampliación de un particular, el punto
¿Qué hacemos si queremos escalar los objetos sobre su centro, como se muestra a continuación? Responder
 

Rotación

A continuación, vemos los objetos que han sido rotar 25 grados.
 
Una vez más, vemos que las rotaciones son básicos con respecto al origen:
Representación de la matriz / vector de Traducciones
antihorario de rotación de unos grados =

Cortar

Representación de la matriz / vector de Traducciones
cizalla lo largo del eje x = 
cizalladura a lo largo del eje y = 

La combinación de Transformaciones

Vimos que la escala básica y transformaciones de rotación son siempre con respecto al origen. Para escalar o girar alrededor de un punto en particular (punto fijo) debemos traducir en primer lugar el objeto de tal manera que el punto fijo está en el origen. A continuación, realizar la escala o la rotación y la inversa de la traducción original para mover el punto fijo de nuevo a su posición original. Por ejemplo, si queremos escalar el triángulo por 2 en cada dirección alrededor del punto de fp = (1.5,1), lo primero que traducir todos los puntos del triángulo por T = (-1,5, -1) , la escala por 2 ( S ) y, a continuación, volver a traducir por -T = (1.5,1) . Matemáticamente esto se parece
q =  = 

El orden es importante!

Observe el orden en el que se llevan a cabo estas transformaciones. La primera transformación (a la derecha) es T y el último (más a la izquierda) es -T . Si se aplican estas transformaciones en un orden diferente, entonces obtendrá resultados muy diferentes. Por ejemplo, lo que sucede cuando se aplica antes T seguido por -T seguido de S ? Aquí T y -T se anulan entre sí y que se dejan simplemente con S
.Sometimes (Pero tenga cuidado) orden no es importante, por ejemplo, si se aplican varias rotaciones 2D, el orden no hace ninguna diferencia:
1 R 2 = R 2 R 1
Pero esto no será necesariamente cierto en 3D !!

Coordenadas homogéneas

En general, cuando se desea realizar una transformación compleja, por lo general lo hace mediante la combinación de una serie de transformaciones básicas. La ecuación anterior para q , sin embargo, es difícil de leer porque de escala se realiza mediante la multiplicación de la matriz y la traducción se realiza mediante la suma de vectores. Con el fin de representar a todas las transformaciones de la misma forma, los informáticos han ideado lo que se llama coordenadas homogéneas. No trate de aplicar cualquier interpretación exótica para ellos. Se trata simplemente de un truco matemático para hacer que la representación sea más consistente y más fácil de usar.

coordenadas homogéneas (HC) añaden una dimensión virtual adicional. Por lo tanto 2D HC son en realidad 3D y 3D son HC 4D. Considere un punto 2D P = (x, y). En HC, representamos p como p = (x, y, 1). Un extra de coordenadas se añade cuyo valor es siempre 1. Esto puede parecer extraño, pero nos permite ahora representamos traducciones como la multiplicación de matrices en lugar de como la suma de vectores. Una traducción (dx, dy), que normalmente se lleva a cabo como q = (x, y) + (dx, dy) ahora se escribe como
q = T = p  =
Ahora, podemos escribir el escalado alrededor de un punto fijo como una simple multiplicación de matrices:
q = (-T) ST p = A p,
donde A = (-T) ST
La matriz A puede calcularse una vez y luego se aplica a todos los puntos en el objeto. Esto es mucho más eficiente que nuestra representación anterior. También es más fácil identificar las transformaciones y su orden cuando todo está en la forma de la multiplicación de matrices.
La matriz para la ampliación de HC es
S = 
y la matriz de rotación es
R = 


































Biografía:
https://es.wikipedia.org/wiki/Computaci%C3%B3n_gr%C3%A1fica_2D
http://www.willamette.edu/~gorr/classes/GeneralGraphics/Transforms/transforms2d.html
https://www.ecured.cu/Computaci%C3%B3n_Gr%C3%A1fica_2D