Transformações 2D
O processo da computação gráfica determina os seguintes passos:
- Modelação:
- Definição de cada objeto gráfico no respetivo espaço do objeto;
- Definição do modelo, no espaço do mundo, juntando os vários objetos gráficos do ponto anterior num único grafo de cena;
- 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 |
---|
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 |
---|
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 |
---|
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 |
---|
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:
- Colocamos o referencial no «centro» do objeto, com uma translação.
- Com o referencial no «centro» do objeto, fazemos as operações de escala e de rotação.
- 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 |
---|