Sei sulla pagina 1di 24

COMPUTAO

GRFICA
Transformaes Geomtricas no Plano e
no Espao

Definio

Transformaes geomtricas so
operaes que podem ser utilizadas
visando a alterao de algumas
caractersticas como posio,
orientao, forma ou tamanho do objeto
a ser desenhado.

Matrizes

Para executar uma transformao podemos usar


operaes algbricas.
Operaes algbricas so caras
computacionalmente
Por isso o uso de matrizes mais interessante
para esse objetivo
As matrizes podem fazer as transformaes e
combin-las de forma mais eficiente.
Elas tambm so mais eficientes na
armazenagem de figuras presentes num sistema
de coordenadas

Pontos, vetores e matrizes

Nos espaos bidimensionais, duas


coordenadas caracterizam um ponto.
Nos espaos tridimensionais, trs
coordenadas caracterizam um ponto.

A = [2, 3]: ponto em duas dimenses.


B = [20,2,0]: ponto em trs dimenses.

Uma matriz quadrada de trs


dimenses pode ser usada para
descrever pontos no espao

Aritmtica de vetores e
matrizes

Soma e subtrao: os dois operandos devem


ter a mesma dimenso
Multiplicao por escalar.
Transposta de uma matriz

[2,3]T = 2
3

Multiplicao de matrizes

O nmero de linhas da primeira deve ser igual ao


nmero de colunas da segunda

Transformaes lineares

So transformaes aplicadas aos


objetos ou ao universo como um todo.
Podem ser

Translao
Escala
Rotao
Refleco
Cisalhamento

Translao

Significa movimentar o objeto


Todos os pontos do objeto devem ser movidos
para a nova posio.

Um ponto p(x,y) movido para a posio p(x,y).


Para isso somamos Tx e Ty s coordenadas de cada
ponto a ser transladado.
x = x + Tx
y = y + Ty
Ou usando um vetor T de deslocamento.
P = P + T [x y] = [x y] + [Tx Ty]

Translao

(11,9)

(4,5)

(7,5)

(3,-4)
(14,5)

(7,1)

(10,1)

Translao

No espao

(x, y, z) (x, y, z)
x = x + Tx
y = y + Ty
z = z + Tz
[x y z] = [x y z]+[Tx Ty Tz]

Transladar todos os pontos ou somente


pontos chave da figura

Escala

Mudar as dimenses do Objeto


Multiplicar os valores das coordenadas por
um valor de escala.
Isso deve afetar todos os pontos de uma
dimenso do objeto na mesma proporo.
Em 2D:
Sx 0
ou [x y]
x = x.Sx
y = y.Sy

Em 3D

x = x.Sx
y = y.Sy
z = z.Sz

Sy
Sx 0 0

ou

[x y z]

Sy 0

0 Sz

= [xSx ySy zSz]

Escala
*Obs: se o objeto escalonado no estiver
definido com relao a origem ocorrer,
tambm, uma translao
[3,1/2]
(1,2)

(3,1)
(1,1)

(2,1)
(3,0.5)

(6,0.5)

Rotao

Girar o objeto em um ngulo em torno


de um ponto.
x = xcos()-ysen()
y = ycos()+xsen()
cos sen

[x y] = [x y]
-sen

cos

*Obs: se o objeto no estiver definido na


origem do sistema de coordenadas
ocorrer tambm uma translao

Rotao em torno de um
eixo

ngulos de Euler
Regra da mo direita

Dedo esticado no sentido do eixo (eixo x)


Dedo indicador apontando para segundo
eixo (eixo y)
Feixe a mo e veja se ela aponta no sentido
do terceiro eixo, se isto acontecer significa
que as trs direes formam um sistema de
eixos positivos

Rotao em 3D
cos() sen() 0

Eixo z =>
[x y z] = [x y-sen()
z] cos() 0
1
[xcos()ysen() xsen()+ycos() 0z ] 0
Eixo x =>
[x y z] = [x y1 z] 0
0 cos()
[x ycos()-zsen() ysen()+zcos()
]

0
sen()

0 -sen() cos()
cos() 0 -sen()

Eixo y =>
[x y z] = [x y0 z]
[xcos()+zsen() y -sen()+zcos()
]
sen()

0 cos()

Reflexo

A reflexo em torno de um eixo (flip) faz


com que um objeto seja reproduzido
como se ele fosse visto dentro de um
espelho.
y

[x y] = [x y]

1 0
0 -1

Reflexo

Em 3D a reflexo pode ser em torno de


um dos planos. Ex. Reflexo em torno de
x e y:
-1 0 0
0 -1 0
0 0 1

Transformaes com
OpenGL

Translao

Escala

glTranslatef(float x,float y,float z);


glScalef(float x,float y,float z);

Rotao

Angulos de Euler em torno de um dos eixos


glRotatef(float anglo, float x,float y,float z);
Ex: glRotatef(30.0,1.0,0.0,0.0);

glMatrixMode()

ModelView matriz de transformao para


aplicao sobre os objetos ou cena
Projection
ViewPoint

glLoadIdentity()

Faz com que a matriz de transformao


corrente seja inicializada com a matriz
identidade, ou seja, sem nenhuma
transformao

Escopo de Transformaes

A restrio do escopo de transformaes


feita atravs de uma pilha de matrizes
de transformao
glPushMatrix();

Guarda a matriz de transformao corrente


na pilha

glPopMatrix();

Recupera a matriz de transformao do topo


da pilha fazendo com que esta passe a ser a
corrente

Coordenadas Homogneas

Reflexo, rotao e escala podem ser


executadas com o uso de matrizes, a
transformao de translao no.
Para solucionar esse e outros problemas
recomendado o uso de coordenadas
homogneas para todas as operaes.

Coordenadas Homogneas

O sistema de coordenadas homogneas (SCH)


utiliza quatro valores para representar um ponto
P no espao, que ser descrito por (x, y, z, M).
A transformao do SCH para o cartesiano se d
pela relao (x, y, z) = (x/M, y/M, z/M)
Os pontos onde M=0 esto fora do espao
dimensional.
O uso de coordenadas homogneas importante
para permitir a representao de reais por
inteiros
Quando M=1 a representao a mesma do
espao cartesiano.

Matrizes e coordenadas
homogneas

Matriz de rotao
[x y 1]. cos sen
-sen cos
0
0
0
0
0

0 0
0 0
1
0

Escala
[x y 1 ]. Sx
0
0
0

Sy
0
0

0
1
0

0
0
1

[x y z ] .

Sx 0
0 Sy
0
0
0
0

0
0
Sz
0

0
0
0
1

Translao

Pode ser representada por operaes


com matrizes quando usamos
coordenadas homogneas,
uniformizando as transformaes
geomtricas
[x y z 1]. 1
0
0
Tx

0
1
0
Ty

0
0
1
Tz

0
0
0
1

Matriz de Transformao

Transformaes geomtricas correspondem a


operaes matemticas de soma e
multiplicao nas coordenadas que compem o
objeto
Para evitar que diversas operaes
matemticas sejam feitas individualmente em
cada vrtice criada uma matriz de
transformao com coordenadas homogneas
a qual aplicada todas as transformaes
Esta matriz denominada matriz de
transformao corrente e utilizada para
transformao de todos os objetos

Potrebbero piacerti anche