Gráficos de computador 2D - 2D computer graphics

A computação gráfica 2D é a geração baseada em computador de imagens digitais - principalmente a partir de modelos bidimensionais (como modelos geométricos 2D , texto e imagens digitais) e por técnicas específicas para eles. Pode se referir ao ramo da ciência da computação que compreende tais técnicas ou aos próprios modelos.

Sprites gráficos raster (esquerda) e máscaras (direita)

A computação gráfica 2D é usada principalmente em aplicativos que foram originalmente desenvolvidos em tecnologias tradicionais de impressão e desenho , como tipografia , cartografia , desenho técnico , publicidade , etc. Nessas aplicações, a imagem bidimensional não é apenas uma representação de uma imagem real. objeto do mundo, mas um artefato independente com valor semântico agregado; os modelos bidimensionais são, portanto, preferidos, porque fornecem um controle mais direto da imagem do que a computação gráfica 3D (cuja abordagem é mais semelhante à fotografia do que à tipografia).

Em muitos domínios, como editoração eletrônica , engenharia e negócios , a descrição de um documento com base em técnicas de computação gráfica 2D pode ser muito menor do que a imagem digital correspondente - geralmente por um fator de 1/1000 ou mais. Essa representação também é mais flexível, pois pode ser renderizada em diferentes resoluções para se adequar a diferentes dispositivos de saída . Por esses motivos, os documentos e as ilustrações costumam ser armazenados ou transmitidos como arquivos gráficos 2D .

A computação gráfica 2D começou na década de 1950, com base em dispositivos gráficos vetoriais . Eles foram amplamente suplantados por dispositivos baseados em varredura nas décadas seguintes. A linguagem PostScript e o protocolo X Window System foram desenvolvimentos marcantes na área.

Técnicas

Os modelos gráficos 2D podem combinar modelos geométricos (também chamados de gráficos vetoriais ), imagens digitais (também chamados de gráficos raster ), texto a ser composto (definido pelo conteúdo, estilo e tamanho da fonte , cor, posição e orientação), funções matemáticas e equações , e mais. Esses componentes podem ser modificados e manipulados por transformações geométricas bidimensionais , como translação , rotação , escala . Em gráficos orientados a objetos , a imagem é descrita indiretamente por um objeto dotado de um método de auto- renderização - um procedimento que atribui cores aos pixels da imagem por um algoritmo arbitrário. Modelos complexos podem ser construídos combinando objetos mais simples, nos paradigmas da programação orientada a objetos .

Uma translação move todos os pontos de uma figura ou espaço na mesma proporção em uma determinada direção.
Uma reflexão contra um eixo seguida por uma reflexão contra um segundo eixo paralelo ao primeiro resulta em um movimento total que é uma translação.

Na geometria euclidiana , uma translação move cada ponto a uma distância constante em uma direção especificada. Uma translação pode ser descrita como um movimento rígido : outros movimentos rígidos incluem rotações e reflexos. Uma translação também pode ser interpretada como a adição de um vetor constante a cada ponto ou como deslocamento da origem do sistema de coordenadas . Um operador de tradução é um operador que

Se v for um vetor fixo, então a translação T v funcionará como T v ( p ) = p + v .

Se T é uma tradução, então a imagem de um subconjunto Um sob a função T é a tradução de uma por T . A tradução de A por T v é freqüentemente escrita A + v .

Em um espaço euclidiano , qualquer tradução é uma isometria . O conjunto de todas as traduções forma o grupo de tradução T , que é isomórfico ao próprio espaço, e um subgrupo normal do grupo euclidiano E ( n ). O grupo quociente de E ( n ) por T é isomórfico ao grupo ortogonal O ( n ):

E ( n ) / TO ( n ).

Tradução

Uma vez que uma tradução é uma transformação afim, mas não uma transformação linear , coordenadas homogêneas são normalmente usadas para representar o operador de tradução por uma matriz e, assim, torná-lo linear. Assim, escrevemos o vetor tridimensional w = ( w x , w y , w z ) usando 4 coordenadas homogêneas como w = ( w x , w y , w z , 1).

Para traduzir um objeto por um vetor v , cada vetor homogêneo p (escrito em coordenadas homogêneas) precisaria ser multiplicado por esta matriz de tradução :

Conforme mostrado abaixo, a multiplicação dará o resultado esperado:

O inverso de uma matriz de tradução pode ser obtido invertendo a direção do vetor:

Da mesma forma, o produto das matrizes de tradução é dado pela adição dos vetores:

Como a adição de vetores é comutativa , a multiplicação de matrizes de tradução também é comutativa (ao contrário da multiplicação de matrizes arbitrárias).

Rotação

Na álgebra linear , uma matriz de rotação é uma matriz que é usada para realizar uma rotação no espaço euclidiano .

gira pontos no plano xy - cartesiano no sentido anti-horário através de um ângulo θ sobre a origem do sistema de coordenadas cartesianas . Para realizar a rotação utilizando uma matriz de rotação R , a posição de cada ponto deve ser representada por um vetor coluna v , contendo as coordenadas do ponto. Um vetor girado é obtido usando a multiplicação da matriz R v . Como a multiplicação de matrizes não tem efeito no vetor zero (ou seja, nas coordenadas da origem), as matrizes de rotação só podem ser usadas para descrever rotações sobre a origem do sistema de coordenadas.

Matrizes de rotação fornecem uma descrição algébrica simples de tais rotações e são amplamente utilizadas para cálculos em geometria , física e computação gráfica . No espaço bidimensional, uma rotação pode ser simplesmente descrita por um ângulo θ de rotação , mas também pode ser representada pelas 4 entradas de uma matriz de rotação com 2 linhas e 2 colunas. No espaço tridimensional, cada rotação pode ser interpretada como uma rotação por um determinado ângulo em torno de um único eixo fixo de rotação (consulte o teorema da rotação de Euler ) e, portanto, pode ser simplesmente descrito por um ângulo e um vetor com 3 entradas. No entanto, também pode ser representado pelas 9 entradas de uma matriz de rotação com 3 linhas e 3 colunas. A noção de rotação não é comumente usada em dimensões superiores a 3; existe a noção de um deslocamento rotacional , que pode ser representado por uma matriz, mas nenhum eixo ou ângulo único associado.

Matrizes de rotação são matrizes quadradas , com entradas reais . Mais especificamente, eles podem ser caracterizados como matrizes ortogonais com determinante  1:

.

O conjunto de todas essas matrizes de tamanho n forma um grupo , conhecido como grupo ortogonal especial SO ( n ) .

Em duas dimensões

Uma rotação anti-horária de um vetor através do ângulo θ . O vetor é inicialmente alinhado com o eixo x.

Em duas dimensões, cada matriz de rotação tem a seguinte forma:

.

Isso gira os vetores da coluna por meio da seguinte multiplicação da matriz :

.

Portanto, as coordenadas (x ', y') do ponto (x, y) após a rotação são:

,
.

A direção da rotação do vetor é no sentido anti-horário se θ for positivo (por exemplo, 90 °), e no sentido horário se θ for negativo (por exemplo, -90 °).

.

Orientação não padrão do sistema de coordenadas

Uma rotação através do ângulo θ com eixos não padronizados.

Se um sistema de coordenadas cartesianas padrão para destros é usado, com o eixo x à direita e o eixo y para cima, a rotação R ( θ ) é no sentido anti-horário. Se um sistema de coordenadas cartesianas canhoto é usado, com x direcionado para a direita, mas y direcionado para baixo, R ( θ ) é no sentido horário. Essas orientações fora do padrão raramente são usadas em matemática, mas são comuns em computação gráfica 2D, que geralmente tem a origem no canto superior esquerdo e o eixo y abaixo da tela ou página.

Veja abaixo outras convenções alternativas que podem mudar o sentido da rotação produzida por uma matriz de rotação .

Rotações comuns

Particularmente úteis são as matrizes para rotações de 90 ° e 180 °:

(Rotação de 90 ° no sentido anti-horário)
(Rotação de 180 ° em qualquer direção - meia volta)
(Rotação de 270 ° no sentido anti-horário, o mesmo que rotação de 90 ° no sentido horário)

Na geometria euclidiana , escalonamento uniforme ( isotrópico escala , dilatação homogénea , homothety ) é uma transformação linear que alarga (aumenta ou diminui) (diminui) objetos por um factor de escala que é a mesma em todas as direcções. O resultado da escala uniforme é semelhante (no sentido geométrico) ao original. Um fator de escala de 1 é normalmente permitido, de modo que formas congruentes também sejam classificadas como semelhantes. (Alguns livros escolares excluem especificamente essa possibilidade, assim como alguns excluem os quadrados de serem retângulos ou os círculos de elipses.)

Mais geral é o dimensionamento com um fator de escala separado para cada direção do eixo. Escalonamento não uniforme ( anisotrópica de escala , a dilatação não homogéneo ) é obtido quando pelo menos um dos factores de escala é diferente dos outros; um caso especial é o dimensionamento ou alongamento direcional (em uma direção). A escala não uniforme altera a forma do objeto; por exemplo, um quadrado pode se transformar em um retângulo ou em um paralelogramo se os lados do quadrado não forem paralelos aos eixos de escala (os ângulos entre as linhas paralelas aos eixos são preservados, mas nem todos os ângulos).

Dimensionamento

Uma escala pode ser representada por uma matriz de escala. Para dimensionar um objeto por um vetor v = ( v x , v y , v z ), cada ponto p = ( p x , p y , p z ) precisaria ser multiplicado com esta matriz de dimensionamento :

Conforme mostrado abaixo, a multiplicação dará o resultado esperado:

Essa escala altera o diâmetro de um objeto por um fator entre os fatores de escala, a área por um fator entre o menor e o maior produto de dois fatores de escala e o volume pelo produto de todos os três.

A escala é uniforme se e somente se os fatores de escala forem iguais ( v x = v y = v z ). Se todos, exceto um dos fatores de escala forem iguais a 1, temos a escala direcional.

No caso em que v x = v y = v z = k , a escala também é chamada de aumento ou dilatação por um fator k, aumentando a área por um fator de k 2 e o volume por um fator de k 3 .

Escala no sentido mais geral é qualquer transformação afim com uma matriz diagonalizável . Inclui o caso em que as três direções da escala não são perpendiculares. Inclui também o caso de um ou mais fatores de escala serem iguais a zero ( projeção ) e o caso de um ou mais fatores de escala negativos. Este último corresponde a uma combinação de escala própria e um tipo de reflexão: ao longo de linhas em uma direção particular, tomamos a reflexão no ponto de intersecção com um plano que não precisa ser perpendicular; portanto, é mais geral do que a reflexão comum no plano.

Usando coordenadas homogêneas

Na geometria projetiva , freqüentemente usada em computação gráfica , os pontos são representados por meio de coordenadas homogêneas . Para dimensionar um objeto por um vetor v = ( v x , v y , v z ), cada vetor de coordenadas homogêneas p = ( p x , p y , p z , 1) precisaria ser multiplicado com esta matriz de transformação projetiva :

Conforme mostrado abaixo, a multiplicação dará o resultado esperado:

Uma vez que o último componente de uma coordenada homogênea pode ser visto como o denominador dos outros três componentes, uma escala uniforme por um fator comum s (escala uniforme) pode ser realizada usando esta matriz de escala:

Para cada vetor p = ( p x , p y , p z , 1), teríamos

que seria homogeneizado para

Pintura direta

Uma maneira conveniente de criar uma imagem complexa é começar com um mapa raster de "tela" em branco (uma matriz de pixels , também conhecido como bitmap ) preenchido com alguma cor de fundo uniforme e, em seguida, "desenhar", "pintar" ou "colar" manchas simples de cor nele, em uma ordem apropriada. Em particular, a tela pode ser o buffer de quadro para uma tela de computador .

Alguns programas definirão as cores de pixel diretamente, mas a maioria dependerá de alguma biblioteca de gráficos 2D ou da placa gráfica da máquina , que geralmente implementam as seguintes operações:

  • cole uma determinada imagem em um deslocamento especificado na tela;
  • escrever uma seqüência de caracteres com uma fonte especificada, em uma determinada posição e ângulo;
  • pinte uma forma geométrica simples , como um triângulo definido por três cantos ou um círculo com centro e raio dados;
  • desenhe um segmento de linha , arco ou curva simples com uma caneta virtual de determinada largura.

Modelos de cores estendidos

Texto, formas e linhas são renderizados com uma cor especificada pelo cliente. Muitas bibliotecas e cartões fornecem gradientes de cor , que são úteis para a geração de planos de fundo que variam suavemente, efeitos de sombra, etc. (Veja também Sombreamento de Gouraud ). As cores dos pixels também podem ser obtidas a partir de uma textura, por exemplo, uma imagem digital (emulando telas de rub-on e a lendária tinta quadriculada que costumava estar disponível apenas em desenhos animados ).

Pintar um pixel com uma determinada cor geralmente substitui sua cor anterior. No entanto, muitos sistemas suportam pintura com cores transparentes e translúcidas , que apenas modificam os valores de pixel anteriores. As duas cores também podem ser combinadas de maneiras mais complexas, por exemplo, calculando seu ou exclusivo bit a bit . Essa técnica é conhecida como inversão de cores ou inversão de cores e é frequentemente usada em interfaces gráficas de usuário para realce, desenho de elástico e outras pinturas voláteis - já que pintar novamente as mesmas formas com a mesma cor irá restaurar os valores de pixel originais.

Camadas

Um personagem animado 2D composto com fundos 3D usando camadas.

Os modelos usados ​​em computação gráfica 2D geralmente não fornecem formas tridimensionais ou fenômenos ópticos tridimensionais, como iluminação, sombras , reflexão , refração , etc. No entanto, eles geralmente podem modelar várias camadas (conceitualmente de tinta, papel, ou filme; opaco, translúcido ou transparente - empilhado em uma ordem específica. A ordem geralmente é definida por um único número (a profundidade da camada ou distância do visualizador).

Os modelos em camadas às vezes são chamados de " computação gráfica 2 12 -D". Eles possibilitam imitar as técnicas tradicionais de desenho e impressão baseadas em filme e papel, como recortar e colar; e permite que o usuário edite qualquer camada sem afetar as outras. Por essas razões, eles são usados ​​na maioria dos editores gráficos . Os modelos em camadas também permitem um melhor anti-aliasing espacial de desenhos complexos e fornecem um modelo de som para certas técnicas, como juntas de meia-esquadria e a regra de pares ímpares .

Modelos em camadas também são usados ​​para permitir que o usuário suprima informações indesejadas ao visualizar ou imprimir um documento, por exemplo, estradas ou ferrovias de um mapa , certas camadas de processo de um diagrama de circuito integrado ou anotações manuais de uma carta comercial.

Em um modelo baseado em camadas, a imagem alvo é produzida "pintando" ou "colando" cada camada, em ordem decrescente de profundidade, na tela virtual. Conceitualmente, cada camada é primeiro renderizada por conta própria, gerando uma imagem digital com a resolução desejada que é então pintada sobre a tela, pixel por pixel. As partes totalmente transparentes de uma camada não precisam ser renderizadas, é claro. A renderização e a pintura podem ser feitas em paralelo, ou seja, cada pixel da camada pode ser pintado na tela assim que for produzida pelo procedimento de renderização.

Camadas que consistem em objetos geométricos complexos (como texto ou polilinhas ) podem ser divididas em elementos mais simples ( caracteres ou segmentos de linha , respectivamente), que são pintados como camadas separadas, em alguma ordem. No entanto, esta solução pode criar artefatos de aliasing indesejáveis sempre que dois elementos se sobrepõem ao mesmo pixel.

Consulte também Camadas de Formato de Documento Portátil # .

Hardware

Os monitores modernos de placas gráficas de computador usam técnicas raster de maneira quase esmagadora, dividindo a tela em uma grade retangular de pixels , devido ao custo relativamente baixo do hardware de vídeo baseado em raster em comparação com o hardware de gráficos vetoriais. A maioria dos hardwares gráficos possui suporte interno para operações de blitting ou desenho de sprites . Um co-processador dedicado para blitting é conhecido como um blitter de chip .

Clássico 2D chips gráficos e unidades de processamento gráfico do final dos anos 1970 a 1980, usado em 8-bit para o início de 16-bit , jogos arcade , consoles de videogame e computadores domésticos , incluem:

Programas

Muitas interfaces gráficas de usuário (GUIs), incluindo macOS , Microsoft Windows ou o X Window System , são baseadas principalmente em conceitos gráficos 2D. Esse software fornece um ambiente visual para interagir com o computador e geralmente inclui alguma forma de gerenciador de janelas para ajudar o usuário a distinguir conceitualmente entre diferentes aplicativos. A interface do usuário em aplicativos de software individuais também é normalmente 2D por natureza, em parte devido ao fato de que os dispositivos de entrada mais comuns , como o mouse , são restritos a duas dimensões de movimento.

Os gráficos 2D são muito importantes nos periféricos de controle, como impressoras, plotters, máquinas de corte de folhas, etc. Eles também eram usados ​​na maioria dos primeiros videogames ; e ainda são usados ​​para jogos de cartas e tabuleiro, como paciência , xadrez , mahjongg , etc.

Editores de gráficos 2D ou programas de desenho são softwares de nível de aplicativo para a criação de imagens, diagramas e ilustrações por manipulação direta (por meio do mouse, mesa digitalizadora ou dispositivo semelhante) de primitivos gráficos de computador 2D. Esses editores geralmente fornecem primitivos geométricos , bem como imagens digitais ; e alguns até suportam modelos procedimentais. A ilustração geralmente é representada internamente como um modelo em camadas, geralmente com uma estrutura hierárquica para tornar a edição mais conveniente. Esses editores geralmente geram arquivos gráficos nos quais as camadas e primitivas são preservadas separadamente em sua forma original. MacDraw , lançado em 1984 com a linha de computadores Macintosh , foi um dos primeiros exemplos dessa classe; exemplos recentes são os produtos comerciais Adobe Illustrator e CorelDRAW , e os editores gratuitos, como xfig ou Inkscape . Existem também muitos editores gráficos 2D especializados para certos tipos de desenhos, como diagramas elétricos, eletrônicos e VLSI, mapas topográficos, fontes de computador, etc.

Os editores de imagem são especializados na manipulação de imagens digitais , principalmente por meio de desenho / pintura à mão livre e operações de processamento de sinal . Eles normalmente usam um paradigma de pintura direta, em que o usuário controla canetas virtuais, pincéis e outros instrumentos artísticos à mão livre para aplicar tinta em uma tela virtual. Alguns editores de imagem oferecem suporte a um modelo de múltiplas camadas; no entanto, para oferecer suporte a operações de processamento de sinal, como desfoque, cada camada é normalmente representada como uma imagem digital. Portanto, quaisquer primitivos geométricos fornecidos pelo editor são imediatamente convertidos em pixels e pintados na tela. O nome editor de gráficos raster às vezes é usado para contrastar essa abordagem com a de editores gerais que também lidam com gráficos vetoriais . Um dos primeiros editores de imagem populares foi o MacPaint da Apple , companheiro do MacDraw . Exemplos modernos são o editor GIMP gratuito e os produtos comerciais Photoshop e Paint Shop Pro . Esta classe também inclui muitos editores especializados - para medicina, sensoriamento remoto, fotografia digital , etc.

Animação de desenvolvimento

Com o ressurgimento da animação 2D, pacotes de software gratuitos e proprietários tornaram-se amplamente disponíveis para amadores e animadores profissionais. O principal problema com a animação 2D são os requisitos de mão de obra. Com softwares como RETAS UbiArt Framework e Adobe After Effects , a coloração e a composição podem ser feitas em menos tempo.

Várias abordagens foram desenvolvidas para auxiliar e acelerar o processo de animação digital 2D. Por exemplo, ao gerar arte vetorial em uma ferramenta como o Adobe Flash, um artista pode empregar cores e intermediários automáticos por software .

Programas como o Blender permitem ao usuário fazer animações 3D, animações 2D ou combinar ambas em seu software, permitindo a experimentação com múltiplas formas de animação.

Veja também

Referências