stringtranslate.com

gráficos por computadora en 2D

Los gráficos por computadora en 2D son la generación por computadora de imágenes digitales , principalmente a partir de modelos bidimensionales (como modelos geométricos en 2D , texto e imágenes digitales) y mediante técnicas específicas para ellos. Puede referirse a la rama de la informática que comprende dichas técnicas o a los propios modelos.

Sprites gráficos rasterizados (izquierda) y máscaras

Los gráficos por computadora 2D se utilizan principalmente en aplicaciones que se desarrollaron originalmente a partir de tecnologías tradicionales de impresión y dibujo , como tipografía , cartografía , dibujo técnico , publicidad , etc. En esas aplicaciones, la imagen bidimensional no es solo una representación de un mundo real. objeto del mundo, sino un artefacto independiente con valor semántico añadido; Por tanto, se prefieren los modelos bidimensionales, porque ofrecen un control más directo de la imagen que los gráficos por ordenador en 3D (cuyo enfoque se parece más a la fotografía que a la tipografía).

En muchos ámbitos, como la autoedición , la ingeniería y los negocios , una descripción de un documento basada en técnicas de gráficos por computadora 2D puede ser mucho más pequeña que la imagen digital correspondiente, a menudo en un factor de 1/1000 o más. Esta representación también es más flexible ya que se puede renderizar en diferentes resoluciones para adaptarse a diferentes dispositivos de salida . Por estos motivos, los documentos e ilustraciones suelen almacenarse o transmitirse como archivos gráficos 2D .

Los gráficos por ordenador en 2D comenzaron en la década de 1950, basándose en dispositivos de gráficos vectoriales . En las décadas siguientes, estos fueron reemplazados en gran medida por dispositivos basados ​​en ráster . El lenguaje PostScript y el protocolo X Window System fueron avances históricos en este campo.

Los modelos de gráficos 2D pueden combinar modelos geométricos (también llamados gráficos vectoriales ), imágenes digitales (también llamadas gráficos rasterizados ), texto a componer (definido por contenido, estilo y tamaño de fuente , color, posición y orientación), funciones y ecuaciones matemáticas . y más. Estos componentes se pueden modificar y manipular mediante transformaciones geométricas bidimensionales como traslación , rotación y escala . En los gráficos orientados a objetos , la imagen se describe indirectamente mediante un objeto dotado de un método de autorrepresentación , un procedimiento que asigna colores a los píxeles de la imagen mediante un algoritmo arbitrario. Se pueden construir modelos complejos combinando objetos más simples, en los paradigmas de la programación orientada a objetos .

Fondo (geometría)

Una traslación mueve cada punto de una figura o un espacio en la misma cantidad en una dirección determinada.

En la geometría euclidiana , una traslación (geometría) mueve cada punto una distancia constante en una dirección específica. Una traslación puede describirse como un movimiento rígido : otros movimientos rígidos incluyen rotaciones y reflexiones. Una traslación también se puede interpretar como la suma de un vector constante a cada punto, o como un desplazamiento del origen del sistema de coordenadas . Un operador de traducción es un operador tal que

Si v es un vector fijo, entonces la traducción T v funcionará como T v ( p ) = p + v .

Si T es una traslación, entonces la imagen de un subconjunto A bajo la función T es la traslación de A por T. La traducción de A por T v a menudo se escribe A + v .

En un espacio euclidiano , cualquier traslación es una isometría . El conjunto de todas las traslaciones forma el grupo de traducción T , que es isomorfo al espacio mismo, y un subgrupo normal del grupo euclidiano E ( n ). El grupo cociente de E ( n ) por T es isomorfo al grupo ortogonal O ( n ):

mi ( norte ) / TO ( norte ).

Traducción

Dado que una traslación es una transformación afín pero no una transformación lineal , normalmente se utilizan coordenadas homogéneas para representar el operador de traducción mediante una matriz y así hacerlo lineal. Así escribimos el vector tridimensional w = ( w x , w y , w z ) usando 4 coordenadas homogéneas como w = ( w x , w y , w z , 1). [1]

Para traducir un objeto por un vector v , cada vector homogéneo p (escrito en coordenadas homogéneas) debería multiplicarse por esta matriz de traducción :

Como se muestra a continuación, la multiplicación dará el resultado esperado:

La inversa de una matriz de traslación se puede obtener invirtiendo la dirección del vector:

De manera similar, el producto de matrices de traducción se obtiene sumando los vectores:

Debido a que la suma de vectores es conmutativa , la multiplicación de matrices de traducción también es conmutativa (a diferencia de la multiplicación de matrices arbitrarias).

Rotación

En álgebra lineal , una matriz de rotación es una matriz que se utiliza para realizar una rotación en el espacio euclidiano .

gira puntos en el plano cartesiano xy en sentido contrario a las agujas del reloj en un ángulo θ alrededor del origen del sistema de coordenadas cartesiano . Para realizar la rotación usando una matriz de rotación R , la posición de cada punto debe estar representada por un vector columna v , que contiene las coordenadas del punto. Un vector rotado se obtiene utilizando la multiplicación de matrices R v . Dado que la multiplicación de matrices no tiene ningún efecto sobre el vector cero (es decir, sobre las coordenadas del origen), las matrices de rotación sólo pueden usarse para describir rotaciones alrededor del origen del sistema de coordenadas.

Las matrices de rotación proporcionan una descripción algebraica simple de dichas rotaciones y se utilizan ampliamente para cálculos en geometría , física y gráficos por computadora . En un espacio bidimensional, una rotación puede describirse simplemente mediante un ángulo θ de rotación , pero también puede representarse mediante las 4 entradas de una matriz de rotación con 2 filas y 2 columnas. En el espacio tridimensional, cada rotación puede interpretarse como una rotación de un ángulo dado alrededor de un único eje de rotación fijo (ver el teorema de rotación de Euler ) y, por lo tanto, puede describirse simplemente mediante un ángulo y un vector con 3 entradas. Sin embargo, también se puede representar mediante las 9 entradas de una matriz de rotación con 3 filas y 3 columnas. La noción de rotación no se utiliza habitualmente en dimensiones superiores a 3; Existe una noción de desplazamiento rotacional , que puede representarse mediante una matriz, pero sin un eje o ángulo único asociado.

Las matrices de rotación son matrices cuadradas , con entradas reales . Más específicamente se pueden caracterizar como matrices ortogonales con determinante  1:

.

El conjunto de todas estas matrices de tamaño n forma un grupo , conocido como grupo ortogonal especial SO( n ) .

En dos dimensiones

Una rotación en sentido antihorario de un vector a través del ángulo θ . El vector está inicialmente alineado con el eje x.

En dos dimensiones cada matriz de rotación tiene la siguiente forma:

.

Esto rota los vectores de columna mediante la siguiente multiplicación de matrices :

.

Entonces las coordenadas (x',y') del punto (x,y) después de la rotación son:

,
.

La dirección de rotación del vector es en sentido antihorario si θ es positivo (por ejemplo, 90°) y en el sentido de las agujas del reloj si θ es negativo (por ejemplo, -90°).

.

Orientación no estándar del sistema de coordenadas.

Una rotación a través del ángulo θ con ejes no estándar

Si se utiliza un sistema de coordenadas cartesiano diestro estándar, con el eje x hacia la derecha y el eje y hacia arriba, la rotación R( θ ) es en sentido antihorario. Si se utiliza un sistema de coordenadas cartesiano para zurdos, con x dirigida hacia la derecha pero y dirigida hacia abajo, R( θ ) es en el sentido de las agujas del reloj. Estas orientaciones no estándar rara vez se utilizan en matemáticas, pero son comunes en los gráficos por computadora 2D, que a menudo tienen el origen en la esquina superior izquierda y el eje y hacia abajo de la pantalla o página. [2]

Consulte a continuación otras convenciones alternativas que pueden cambiar el sentido de la rotación producida por una matriz de rotación .

Rotaciones comunes

Particularmente útiles son las matrices para rotaciones de 90° y 180°:

(rotación de 90° en sentido antihorario)
(Rotación de 180° en cualquier dirección – media vuelta)
(Rotación de 270° en sentido contrario a las agujas del reloj, lo mismo que una rotación de 90° en el sentido de las agujas del reloj)

Escalada

En geometría euclidiana , el escalamiento uniforme ( escalamiento isotrópico , [3] dilatación homogénea , homotecia ) es una transformación lineal que agranda (aumenta) o encoge (disminuye) objetos por un factor de escala que es el mismo en todas las direcciones. El resultado del escalado uniforme es similar (en sentido geométrico) al original. Normalmente se permite un factor de escala de 1, de modo que las formas congruentes también se clasifican como similares. (Algunos libros de texto escolares excluyen específicamente esta posibilidad, del mismo modo que algunos excluyen que los cuadrados sean rectángulos o los círculos sean elipses).

Más general es el escalado con un factor de escala separado para cada dirección del eje. El escalamiento no uniforme ( escalamiento anisotrópico , dilatación no homogénea ) se obtiene cuando al menos uno de los factores de escala es diferente de los demás; un caso especial es el escalado o estiramiento direccional (en una dirección). El escalado no uniforme cambia la forma del objeto; por ejemplo, un cuadrado puede convertirse en un rectángulo o en un paralelogramo si los lados del cuadrado no son paralelos a los ejes de escala (los ángulos entre líneas paralelas a los ejes se conservan, pero no todos los ángulos).

Una escala se puede representar mediante una matriz de escala. Para escalar un objeto mediante un vector v = ( v x , v y , v z ), cada punto p = ( p x , p y , p z ) necesitaría multiplicarse por esta matriz de escala :

Como se muestra a continuación, la multiplicación dará el resultado esperado:

Tal escala cambia el diámetro de un objeto por un factor entre los factores de escala, el área por un factor entre el producto más pequeño y más grande de dos factores de escala y el volumen por el producto de los tres.

La escala es uniforme si y solo si los factores de escala son iguales ( v x = v y = v z ). Si todos los factores de escala excepto uno son iguales a 1, tenemos escala direccional.

En el caso donde v x = v y = v z = k , el escalado también se llama ampliación o dilatación por un factor k, aumentando el área por un factor de k 2 y el volumen por un factor de k 3 .

El escalado en el sentido más general es cualquier transformación afín con una matriz diagonalizable . Incluye el caso de que las tres direcciones de escala no sean perpendiculares. Incluye también el caso de que uno o más factores de escala sean iguales a cero ( proyección ), y el caso de uno o más factores de escala negativos. Esto último corresponde a una combinación de escala propiamente dicha y una especie de reflexión: a lo largo de líneas en una dirección determinada tomamos la reflexión en el punto de intersección con un plano que no tiene por qué ser perpendicular; por tanto, es más general que la reflexión ordinaria en el plano.

Usando coordenadas homogéneas

En la geometría proyectiva , utilizada a menudo en gráficos por ordenador , los puntos se representan mediante coordenadas homogéneas . Para escalar un objeto mediante un vector v = ( v x , v y , v z ), cada vector de coordenadas homogéneo p = ( p x , p y , p z , 1) necesitaría multiplicarse con esta matriz de transformación proyectiva :

Como se muestra a continuación, la multiplicación dará el resultado esperado:

Dado que el último componente de una coordenada homogénea puede verse como el denominador de los otros tres componentes, se puede lograr una escala uniforme mediante un factor común s (escala uniforme) utilizando esta matriz de escala:

Para cada vector p = ( p x , p y , p z , 1) tendríamos

que se homogeneizaría a

Técnicas

Pintura directa

Una manera conveniente de crear una imagen compleja es comenzar con un mapa rasterizado de "lienzo" en blanco (una matriz de píxeles , también conocido como mapa de bits ) relleno con un color de fondo uniforme y luego "dibujar", "pintar" o "pegar". Aplique simples manchas de color en el orden apropiado. En particular, el lienzo puede ser el buffer de cuadros para una pantalla de computadora .

Algunos programas configurarán los colores de los píxeles directamente, pero la mayoría dependerá de alguna biblioteca de gráficos 2D o de la tarjeta gráfica de la máquina , que normalmente implementan las siguientes operaciones:

Modelos de colores extendidos

El texto, las formas y las líneas se representan con un color especificado por el cliente. Muchas bibliotecas y tarjetas proporcionan degradados de color , que son útiles para generar fondos que varían suavemente, efectos de sombra, etc. (Ver también Sombreado Gouraud ). Los colores de los píxeles también se pueden tomar de una textura, por ejemplo, una imagen digital (emulando así los tonos de pantalla y la legendaria pintura a cuadros que solía estar disponible sólo en los dibujos animados ).

Pintar un píxel con un color determinado suele sustituir su color anterior. Sin embargo, muchos sistemas admiten pintar con colores transparentes y translúcidos , que sólo modifican los valores de píxeles anteriores. Los dos colores también se pueden combinar de formas más complejas, por ejemplo, calculando su exclusiva bit a bit o . Esta técnica se conoce como inversión de color o inversión de color y se utiliza a menudo en interfaces gráficas de usuario para resaltar, dibujar con banda elástica y otras pinturas volátiles, ya que volver a pintar las mismas formas con el mismo color restaurará los valores de píxeles originales.

Capas

Un personaje animado en 2D compuesto con fondos en 3D mediante capas.

Los modelos utilizados en gráficos por ordenador en 2D no suelen prever formas tridimensionales, ni fenómenos ópticos tridimensionales como iluminación, sombras , reflexión , refracción , etc. Sin embargo, normalmente pueden modelar múltiples capas (conceptualmente de tinta, papel, o película (opaca, translúcida o transparente ) apilada en un orden específico, que generalmente se define mediante un solo número (la profundidad de la capa o la distancia desde el espectador).

Los modelos en capas a veces se denominan "gráficos por computadora 2 12 -D". Permiten imitar técnicas tradicionales de dibujo e impresión basadas en película y papel, como cortar y pegar; y permitir al usuario editar cualquier capa sin afectar a las demás. Por estos motivos, se utilizan en la mayoría de editores gráficos . Los modelos en capas también permiten un mejor suavizado espacial de dibujos complejos y proporcionan un modelo sólido para ciertas técnicas como las juntas a inglete y la regla par-impar .

Los modelos en capas también se utilizan para permitir al usuario suprimir información no deseada al ver o imprimir un documento, por ejemplo, carreteras o vías férreas de un mapa , ciertas capas de proceso de un diagrama de circuito integrado o anotaciones manuales de una carta comercial.

En un modelo basado en capas, la imagen de destino se produce "pintando" o "pegando" cada capa, en orden de profundidad decreciente, en el lienzo virtual. Conceptualmente, cada capa se renderiza primero por sí sola, generando una imagen digital con la resolución deseada que luego se pinta sobre el lienzo, píxel a píxel. Por supuesto, no es necesario renderizar partes completamente transparentes de una capa. La representación y la pintura se pueden realizar en paralelo, es decir, cada píxel de capa se puede pintar sobre el lienzo tan pronto como se produce mediante el procedimiento de representación.

Las capas que constan de objetos geométricos complejos (como texto o polilíneas ) se pueden dividir en elementos más simples ( caracteres o segmentos de línea , respectivamente), que luego se pintan como capas separadas, en algún orden. Sin embargo, esta solución puede crear artefactos de aliasing no deseados siempre que dos elementos se superpongan al mismo píxel.

Consulte también Formato de documento portátil#Capas .

Hardware

Las pantallas de tarjetas gráficas de computadora modernas utilizan casi abrumadoramente técnicas de trama, dividiendo la pantalla en una cuadrícula rectangular de píxeles , debido al costo relativamente bajo del hardware de video basado en trama en comparación con el hardware de gráficos vectoriales. La mayoría del hardware gráfico tiene soporte interno para operaciones de blitting o dibujo de sprites . Un coprocesador dedicado al blitting se conoce como chip Blitter .

Los chips de gráficos 2D clásicos y las unidades de procesamiento de gráficos de finales de los años 1970 y 1980, utilizados en juegos arcade , consolas de videojuegos y computadoras domésticas de 8 bits a principios de 16 bits , incluyen:

Software

Muchas interfaces gráficas de usuario (GUI), incluidas macOS , Microsoft Windows o X Window System , se basan principalmente en conceptos gráficos 2D. Dicho software proporciona un entorno visual para interactuar con la computadora y comúnmente incluye algún tipo de administrador de ventanas para ayudar al usuario a distinguir conceptualmente entre diferentes aplicaciones. La interfaz de usuario dentro de las aplicaciones de software individuales también suele ser de naturaleza 2D, debido en parte al hecho de que los dispositivos de entrada más comunes , como el mouse , están restringidos a dos dimensiones de movimiento.

Los gráficos 2D son muy importantes en los periféricos de control como impresoras, trazadores, máquinas cortadoras de hojas, etc. También se utilizaron en la mayoría de los primeros videojuegos ; y todavía se utilizan para juegos de cartas y de mesa como solitario , ajedrez , mahjongg , etc.

Los editores de gráficos 2D o programas de dibujo son software a nivel de aplicación para la creación de imágenes, diagramas e ilustraciones mediante manipulación directa (a través del mouse, tableta gráfica o dispositivo similar) de primitivas de gráficos por computadora 2D. Estos editores generalmente proporcionan primitivas geométricas así como imágenes digitales ; y algunos incluso apoyan modelos procesales. La ilustración suele representarse internamente como un modelo en capas, a menudo con una estructura jerárquica para que la edición sea más cómoda. Estos editores generalmente generan archivos gráficos donde las capas y primitivas se conservan por separado en su forma original. MacDraw , introducido en 1984 con la línea de computadoras Macintosh , fue un ejemplo temprano de esta clase; ejemplos recientes son los productos comerciales Adobe Illustrator y CorelDRAW , y los editores gratuitos como xfig o Inkscape . También existen muchos editores de gráficos 2D especializados para cierto tipo de dibujos como diagramas eléctricos, electrónicos y VLSI, mapas topográficos, fuentes informáticas, etc.

Los editores de imágenes están especializados en la manipulación de imágenes digitales , principalmente mediante operaciones de dibujo/pintura a mano alzada y procesamiento de señales . Por lo general, utilizan un paradigma de pintura directa, donde el usuario controla bolígrafos, pinceles y otros instrumentos artísticos de mano libre para aplicar pintura a un lienzo virtual. Algunos editores de imágenes admiten un modelo de múltiples capas; sin embargo, para admitir operaciones de procesamiento de señales, como el desenfoque, cada capa normalmente se representa como una imagen digital. Por lo tanto, cualquier primitiva geométrica proporcionada por el editor se convierte inmediatamente en píxeles y se pinta en el lienzo. El nombre editor de gráficos rasterizados se utiliza a veces para contrastar este enfoque con el de los editores generales que también manejan gráficos vectoriales . Uno de los primeros editores de imágenes populares fue MacPaint de Apple , compañero de MacDraw . Ejemplos modernos son el editor gratuito GIMP y los productos comerciales Photoshop y Paint Shop Pro . Esta clase también incluye muchos editores especializados: en medicina, teledetección, fotografía digital , etc.

Animación del desarrollo

Con el resurgimiento [4] : 8  de la animación 2D, los paquetes de software gratuitos y propietarios están ampliamente disponibles para aficionados y animadores profesionales. Con software como RETAS UbiArt Framework y Adobe After Effects , se puede colorear y componer en menos tiempo. [ cita necesaria ]

Se han desarrollado varios enfoques [4] : ​​38  para ayudar y acelerar el proceso de animación digital 2D. Por ejemplo, al generar ilustraciones vectoriales en una herramienta como Adobe Flash, un artista puede emplear coloración e intercalación automáticas impulsadas por software .

Programas como Blender o Adobe Substance permiten al usuario realizar animaciones 3D, animaciones 2D o combinar ambas en su software, lo que permite experimentar con múltiples formas de animación. [5]

Ver también

Referencias

  1. ^ Richard Paul, 1981, Manipuladores de robots: matemáticas, programación y control: el control por computadora de manipuladores de robots, MIT Press, Cambridge, MA
  2. ^ Recomendación del W3C (2003), Gráficos vectoriales escalables: el sistema de coordenadas inicial{{citation}}: CS1 maint: numeric names: authors list (link)
  3. ^ Durand; Cuchillero. "Transformaciones" (PowerPoint) . Instituto de Tecnología de Massachusetts . Consultado el 12 de septiembre de 2008 .
  4. ^ ab Pile, John Jr. (mayo de 2013). Programación de gráficos 2D para juegos. Nueva York, Nueva York: CRC Press. ISBN 978-1466501898.
  5. ^ Fundación, Licuadora. "blender.org - Inicio del proyecto Blender - Software de creación 3D abierto y gratuito". blender.org . Consultado el 24 de abril de 2019 .