Transformações 2D

O processo da computação gráfica determina os seguintes passos:

  1. Modelação:
    1. Definição de cada objeto gráfico no respetivo espaço do objeto;
    2. Definição do modelo, no espaço do mundo, juntando os vários objetos gráficos do ponto anterior num único grafo de cena;
  2. Construção (Rendering): No espaço do dispositivo, com base no modelo do ponto anterior e das definições da vista;

A construção assenta num conjunto de operações (por exemplo, clipping) que, normalmente, são automaticamente tratadas pelo sistema gráfico em que se está a trabalhar.

Sobre a modelação falta esclarecer:

  • Como cada objeto gráfico é definido no seu espaço;
  • Como esse objeto é «transportado» para o espaço do mundo;

As Transformações são as principais ferramentas nestes passos. Neste capítulo vamos ilustrar o papel que desempenham.

Transformações: Representação Matricial e Casos Especiais

Uma transformação é uma função que aplica pontos em pontos:

Os tipos principais de transformações são:

  • Translação: resulta de mover segundo uma certa direção;

  • Rotação: resulta de rodar um certo ângulo em torno da origem;p_0 =

  • Escala: resulta de aumentar ou reduzir por um certo fator;

  • Composição: resulta de aplicar a uma sequência de transformações;


Adicionalmente ainda podem ser usadas reflexões (em relação a um certo eixo ou ponto) e deslizamentos (numa certa direção).

A escolha destes quatro tipos de transformações principais assenta nas seguintes razões:

  • são suficientemente expressivos para a maior parte das necessidades da computação gráfica;
  • são intuitivamente acessíveis;
  • são numericamente eficientes;

A eficiência numérica assenta na forma como os cálculos são efetuados: as coordenadas transformadas resultam de multiplicar as coordenadas originais por uma matriz de transformação:

Os valores concretos dos parâmetros a,b,c,d,e,f dependem da transformação concreta que se pretende aplicar às coordenadas originais.

Nas páginas seguintes vamos ver como esses valores também dependem do tipo de transformação.

Translações

Exemplo de uma Translação
Exemplo de uma translação

Uma translação consiste em mover as coordenadas originais segundo um certo vetor de forma que

Isto é, as coordenadas transformadas são obtidas por

A matriz de translação é

e temos

Rotações

Exemplo de uma Rotação
Exemplo de uma rotação

Uma rotação consiste em rodar as coordenadas originais segundo um certo ângulo em torno da origem .

A matriz de rotação é

e temos

Escalas

Exemplo de uma Escala
Exemplo de uma escala

Uma escala consiste em encolher ou esticar as coordenadas originais segundo um certo fator .

A matriz de escala é

e temos

Composição

Nem sempre as transformações básicas são suficientes para construir os objetos gráficos pretendidos.

Nesse caso é necessário compor as transformações básicas de forma a obter-se o efeito pretendido.

Motivação da composição

Exemplo de uma Composição
Exemplo de uma composicao

Supondo que se pretende escalar e rodar um certo objeto gráfico, sem o deslocar da posição em que está. O problema está na rotação, quo o feita em torno da origem do referencial, e não em torno do «centro do objeto».

A solução consiste em compor várias transformações de forma a obter-se o efeito pretendido. Geometricamente:

  1. Colocamos o referencial no «centro» do objeto, com uma translação.
  2. Com o referencial no «centro» do objeto, fazemos as operações de escala e de rotação.
  3. Repomos o referencial na posição em que estava inicialmente, de novo com uma translação.

Explore transformações com o seguinte código SVG:

Transformações
Transformações