Você está na página 1de 9

Engenharia de Computao Computao Grfica Prof. Adelino P.

Silva
Bacharelado em Engenharia Bacharelado em Engenharia
de Computa de Computa o o
Computa Computa o Gr o Gr fica fica
Transforma Transforma es geom es geom tricas tricas
Adelino P. Silva Adelino P. Silva
adelino@decom.cefetmg.br adelino@decom.cefetmg.br
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Transforma Transforma es Geom es Geom tricas tricas
So operaes que podem alterar algumas caractersticas
do objeto a ser desenhado;
Transformaes geomtricas podem ser representadas por
equaes;
Permitem representar um objeto em diversas posies no
espao;
Importante em diversas aplicaes de computao grfica
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Uma transformao T no plano uma funo que associa
a cada ponto p do plano euclidiano um ponto p em
.
Conveniente introduzir um sistema de coordenadas.

p p
p p
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Referencial no plano
(O, e
1
, e
2
), onde O um ponto escolhido como
origem e (e
1
, e
2
) forma uma base do R
2
.
OP = xe
1
+ ye
2
x e y so as coordenadas de p
no referencial (O, e
1
, e
2
).
Coordenadas da origem O: (0,0).
O O
e e
1 1
e e
2 2
p p
Transforma Transforma es Geom es Geom tricas (2D) tricas (2D)
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Um referencial estabelece uma correspondncia entre o
plano euclidiano e R
2
= {(x,y) | x, y R}.
Permite estudar transformaes do plano a partir de
transformaes em R
2
.
Ponto de partida: estrutura de espao vetorial do R
2
(logo,
do plano).
Transforma Transforma es Geom es Geom tricas (2D) tricas (2D)
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Uma transforma Uma transforma o o L L: :R R
2 2
R R
2 2
dita dita linear linear quando quando
L L( ( p p
1 1
+ + p p
2 2
) )= = L L( (p p
1 1
) )+ + L L( (p p
2 2
) ), ,
onde onde p p
1 1
, , p p
2 2
R R
2 2
e e , , R R. .
Obs: Obs: L L( (0 0, , 0 0) = ( ) = (0 0, , 0 0) )
(ou seja, (ou seja, a origem O do referencial a origem O do referencial mantida fixa mantida fixa
por uma transforma por uma transforma o linear o linear). ).
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Uma transforma Uma transforma o linear o linear L L: :R R
2 2
R R
2 2
fica completamente fica completamente
determinada quando se conhecem determinada quando se conhecem L L( (e e
1 1
) ) e e L L( (e e
2 2
) ), , onde onde
( (e e
1 1
, , e e
2 2
) ) formam uma base do formam uma base do R R
2 2
. .
L L( (e e
1 1
) = ) = ae ae
1 1
+ + be be
2 2
, , L L( (e e
2 2
) = ) = ce ce
1 1
+ + de de
2 2
p p = = xe xe
1 1
+ + ye ye
2 2
L L( (p p) = ) = xL xL( (e e
1 1
)+ )+yL yL(e (e
2 2
) ) = =
= x = x( (ae ae
1 1
+be +be
2 2
) )+y(ce +y(ce
1 1
+de +de
2 2
) = ) = ( (ax ax+ +cy cy) )e e
1 1
+ ( + (bx bx+ +dy dy) )e e
2 2
Matriz da Matriz da
transforma transforma o o
L(e L(e
1 1
) ) L(e L(e
2 2
) )
(

=
(

y
x
d b
c a
y
x
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Dentre as principais transformaes geomtricas esto:
Translao
Escala
Rotao
Reflexo
Cisalhamento
As operaes de translao e rotao so chamadas de
transformaes de corpo rgido, uma vez que alteram a
posio sem alterar o corpo do objeto.
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Translao
Significa movimentar o objeto, alterar sua
posio;
Simplesmente acrescenta Tx unidades s
coordenadas em relao ao eixo X e Ty
unidades em relao ao eixo Y.
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Frmula
x = x + Tx
y = y + Ty
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Escala
Redimensiona o objeto
Os valores das coordenadas de cada ponto
modificado por fatores de escala;
No uma alterao de corpo rgido;
Se o objeto no estiver definido em relao origem
ocorrer tambm uma translao.
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Escala
De acordo com os valores atribudos a Ex e Ey
podem ocorrer as seguintes situaes:
Se Ex, Ey > 1 objeto ser ampliado;
Se Ex, Ey < 1 objeto ser reduzido;
Se Ex = Ey objeto manter propores relativas em x e y;
Se Ex <> Ey objeto ser deformado;
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Escala
Frmula
x = x * Ex
y = y * Ey
Escala em x e em y
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Escala
Transforma Transforma es Geom es Geom tricas tricas
x x
y y
c c
b b
|
|

\
|
=
y
x
a
|
|

\
|

=
y
x
a
|
|

\
|
(

=
|
|

\
|

=
|
|

\
|
y
x
s
s
y s
x s
y
x
y
x
y
x
0
0
'
'
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Rotao
Gira o objeto em torno da origem;
Se o objeto no estiver definido na origem,
ocorrer tambm uma translao.
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Rotao
Rotao em 45
cos 45 = 0,70
sen 45 = 0,70
Frmula
x = x*cos() - y*sen()
y = y*cos() + x*sen()
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Rotao
Passos:
1. Transladar ponto a origem (Tx, Ty);
2. Rotacionar com o ngulo;
3. Transladar ponto a posio inicial (-Tx,-Ty).
Frmula
x = x*cos() - y*sen()
y = y*cos() + x*sen()
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Reflexo
Tambm conhecida como espelhamento (flip);
Produz um novo objeto espelhado;
Pode ser considerado sobre o eixo vertical ou horizontal, ou ainda,
em torno de ambos os eixos;
possvel atravs da inverso das coordenadas.
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Reflexo
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Reflexo
|
|

\
|
(

=
|
|

\
|
=
|
|

\
|

y
x
y
x
y
x
1 0
0 1
x x = = - -1.x 1.x
y y = y = y
x x
y y
|
|

\
|
=
y
x
p
|
|

\
|

=
y
x
p
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Cisalhamento
Cisalhamento (Shearing ou Skew) uma
transformao que distorce o formato do
objeto;
Deforma o objeto linearmente, ao longo do eixo
X, do eixo Y ou de ambos.
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Frmula
x = x + S
x
y
y = y + S
y
x
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
x x
y y
x x
y y

|
|

\
|
(

=
|
|

\
| +
=
|
|

\
|
y
x
y
y x
y
x
1 0
tan 1 tan
'
'
Transforma Transforma es Geom es Geom tricas tricas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Podemos tratar todas as transforma Podemos tratar todas as transforma es de es de
forma unificada se representarmos os pontos forma unificada se representarmos os pontos
do espa do espa o em o em coordenadas homogneas coordenadas homogneas. .
Em coordenadas homogneas, um ponto do Em coordenadas homogneas, um ponto do
plano plano representado por uma tripla representado por uma tripla [ [x x, ,y y, ,w w] ] ao ao
inv inv s de um par s de um par ( (x x, ,y y) ). .
Duas coordenadas homogneas Duas coordenadas homogneas [ [x x, ,y y, ,w w] e ] e [ [x x , ,y y , ,w w ] ]
representam o mesmo ponto se uma representam o mesmo ponto se uma um um
m m ltiplo da outra ltiplo da outra. .
Coordenadas Homogneas Coordenadas Homogneas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Se Se w w 0 0 podemos podemos dividir as coordenadas dividir as coordenadas
homogneas por homogneas por w w. .
( (x x, ,y y, ,w w) ) representa o mesmo ponto que representa o mesmo ponto que
( (x/w x/w, ,y/w y/w, ,1 1) ). .
Se Se w w= =0 0, , ento ento ( (x x, ,y y, ,w w) ) um um ponto no infinito ponto no infinito e e
representa uma representa uma dire dire o o do plano (mais sobre do plano (mais sobre
isto depois...) isto depois...)
Coordenadas Homogneas Coordenadas Homogneas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
O uso de coordenadas O uso de coordenadas
homogneas consiste em homogneas consiste em
representar um espa representar um espa o o
2D imerso em um espa 2D imerso em um espa o o
3D 3D. .
Se tomarmos todas as triplas Se tomarmos todas as triplas
( (tx tx, ,ty ty, ,tw tw), ), w w 0 0, que , que
representam um mesmo representam um mesmo
ponto, temos uma reta no ponto, temos uma reta no
espa espa o 3D. o 3D.
y y
x x
w w
( (t tx, x,ty ty,tw ,tw) )
( (x,y,w x,y,w) )
Coordenadas Homogneas Coordenadas Homogneas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Os pontos da Os pontos da
forma [ forma [x x, , y y, , 1 1] ]
formam um formam um
plano com plano com
coordenadas coordenadas
w w= =1 1 no espa no espa o o
( (x x, ,y y, ,w w) ). .
( (x,y,w x,y,w) )
y y
x x
w w
w=1 w=1
( (x/w,y/w,1 x/w,y/w,1) )
Coordenadas Homogneas Coordenadas Homogneas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Pontos so representados em coordenadas Pontos so representados em coordenadas
homogneas por vetores de 3 componentes. homogneas por vetores de 3 componentes.
Logo, as matrizes de transforma Logo, as matrizes de transforma o devem ser o devem ser
representadas por representadas por matrizes 3x3 matrizes 3x3. .
|
|

\
|
+
|
|

\
|
(

=
|
|

\
|

f
e
y
x
d b
c a
y
x
(
(
(

(
(
(

=
(
(
(

1 1 0 0 1
y
x
f d b
e c a
y
x
Coordenadas Homogneas Coordenadas Homogneas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
y y
x x
w w
w=1 w=1
t t
|
|
|

\
|
|
|
|

\
|
=
|
|
|

\
|

=
|
|

\
|

=
1 1 0 0
1 0
0 1
1
y
x
t
t
y
x
y
x
p
y
x
Coordenadas Homogneas Coordenadas Homogneas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Escala Escala
Rota Rota o o
Cisalhamento Cisalhamento
|
|
|

\
|
|
|
|

\
|
=
1 1 0 0
0 0
0 0
. y
x
s
s
x S
y
x
|
|
|

\
|
|
|
|

\
|
=
1 1 0 0
0 cos sin
0 sin cos
. y
x
x R

|
|
|

\
|
|
|
|

\
|
=
1 1 0 0
0 1 tan
0 tan 1
. y
x
x C

Coordenadas Homogneas Coordenadas Homogneas


Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
x x
y y
x x
0 0
y y
0 0

x x
y y
x x
y y

x x
y y
x x
0 0
y y
0 0
1 0
0 1
0 0 1
0
0

(
(
(
x
y
1 0
0 1
0 0 1
0
0
x
y

(
(
(
cos sin
sin cos


(
(
(
0
0
0 0 1

(
(
(

(
(
(


(
(
(

1 1 0 0
1 0
0 1
1 0 0
0 cos sin
0 sin cos
1 0 0
1 0
0 1
1
'
'
0
0
0
0
y
x
y
x
y
x
y
x


Coordenadas Homogneas Coordenadas Homogneas
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Transla Transla o em o em OpenGL OpenGL
Translate {f,d} ( Tx, Ty, Tz ), onde:
Tx: translao do objeto em relao ao eixo X
Ty: translao do objeto em relao ao eixo Y
Tz: translao do objeto em relao ao eixo Z
glTranslatef(xf, yf, zf);
glBegin(GL_POLYGON);
glVertex2f( xf, yf);
glVertex2f( xf, yf);
glVertex2f( xf, yf);
glEnd();
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Rota Rota o em o em OpenGL OpenGL
Rotate {f,d} (Angulo, x, y, z ), onde:
Angulo -> o angulo de rotao
x,y,z -> definem o eixo onde o objeto ser rotacionado
exemplo:
glRotatef(45.0f,0.0f,0.0f,1.0f);
// roda 45 graus no eixo z
glBegin(GL_POLYGON);
glVertex2f( xf, yf);
glVertex2f( xf, yf);
glVertex2f( xf, yf);
glEnd();
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Escala em Escala em OpenGL OpenGL
Scale {f,d} ( Sx, Sy,Sz ), onde:
Sx: o fator de escala em relao a X.
Sy: o fator de escala em relao a Y.
Sz: o fator de escala em relao a Z.
glScalef(1.0f,1.3f,1.0f);
//aumenta escala de 1.3 em relao a Y
glBegin(GL_POLYGON);
glVertex2f( xf, yf);
glVertex2f(xf, yf);
glVertex2f(xf, yf);
glEnd();
Engenharia de Computao Computao Grfica Prof. Adelino P. Silva
Exerc Exerc cio cio
Para as seguintes figuras:
1) Cubo centrado na origem de tamanho 3;
2) Triangulo issceles (2;2), (4;2), (3;6);
3) Pentgono regular (1,54; 1,12), (0,59; 1,81), (-0,36;
1,12), (0;0) e (1.18; 0).
Operar separadamente e desenhar o resultado para:
- Translao de (2,-1);
- Rotao em 60;
- Cisalhamento com = 30;
- Escalonamento em X = 1,05 e Y = 0,95.