102160-cg_ec_s01_2011_e03_v1_4pp
TRANSCRIPT
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Bacharelado em Engenharia Bacharelado em Engenharia de Computade Computaççãoão
ComputaComputaçção Grão Grááficafica
TransformaTransformaçções geomões geoméétricastricasAdelino P. Silva Adelino P. Silva
[email protected]@decom.cefetmg.br
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
TransformaTransformaçções Geomões Geoméétricastricas
São operações que podem alterar algumas características do objeto a ser desenhado;
Transformações geométricas podem ser representadas por equações;
Permitem representar um objeto em diversas posições no espaço;
Importante em diversas aplicações de computação gráfica
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Uma transformação T no plano é uma função que associa a cada ponto p do plano euclidiano Π um ponto p’ em Π.
Conveniente introduzir um sistema de coordenadas.
ΠΠ
pp pp’’
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Referencial no plano(O, e1, e2), onde O é um ponto escolhido como
origem e (e1, e2) forma uma base do R2.
OP = xe1 + ye2
x e y são as coordenadas de pno referencial (O, e1, e2).
Coordenadas da origem O: (0,0).
OO
ee11
ee22
pp
TransformaTransformaçções Geomões Geoméétricas (2D)tricas (2D)
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Um referencial estabelece uma correspondência entre o
plano euclidiano Π e R2 = {(x,y) | x, y ∈ R}.
Permite estudar transformações do plano a partir de transformações em R2.
Ponto de partida: estrutura de espaço vetorial do R2 (logo, do plano).
TransformaTransformaçções Geomões Geoméétricas (2D)tricas (2D)
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Uma transformaUma transformaçção ão LL::RR22→→RR22 éé dita dita linearlinear quandoquando
LL((ααpp11++ββpp22))==ααLL((pp11))++ββLL((pp22)),,
ondeonde pp11, , pp22∈∈RR22 ee αα,,ββ ∈∈RR..
Obs: Obs: LL((00, , 00) = () = (00, , 00) )
(ou seja, (ou seja, a origem O do referencial a origem O do referencial éé mantida fixa mantida fixa
por uma transformapor uma transformaçção linearão linear).).
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Uma transformaUma transformaçção linear ão linear LL::RR22→→RR22 fica completamente fica completamente determinada quando se conhecem determinada quando se conhecem LL((ee11)) e e LL((ee22)),, onde onde ((ee11, , ee22)) formam uma base do formam uma base do RR22..
LL((ee11) = ) = aeae11 + + bebe22, , LL((ee22) = ) = cece11 + + dede22
pp = = xexe11 + + yeye22 ⇒⇒ LL((pp) = ) = xLxL((ee11)+)+yLyL(e(e22) ) ==
= x= x((aeae11+be+be22))+y(ce+y(ce11+de+de22) = ) = ((axax++cycy))ee11 + (+ (bxbx++dydy))ee22
Matriz da Matriz da
transformatransformaççãoão
L(eL(e11)) L(eL(e22))
=
′
′
y
x
db
ca
y
x
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Dentre as principais transformações geométricas estão:� Translação
� Escala
� Rotação
� Reflexão
� Cisalhamento
As operações de translação e rotação são chamadas de transformações de corpo rígido, uma vez que alteram a posição sem alterar o corpo do objeto.
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Translação
Significa movimentar o objeto, alterar sua posição;
Simplesmente acrescenta Tx unidades às coordenadas em relação ao eixo X e Tyunidades em relação ao eixo Y.
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Fórmulax’ = x + Txy’ = y + Ty
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Escala
Redimensiona o objeto
Os valores das coordenadas de cada ponto émodificado por fatores de escala;
Não é uma alteração de corpo rígido;
Se o objeto não estiver definido em relação à origem ocorrerá também uma translação.
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
EscalaDe acordo com os valores atribuídos a Ex e Ey
podem ocorrer as seguintes situações:
Se Ex, Ey > 1 – objeto será ampliado;
Se Ex, Ey < 1 – objeto será reduzido;
Se Ex = Ey – objeto manterá proporções relativas em x e y;
Se Ex <> Ey – objeto será deformado;
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
EscalaFórmula
x’ = x * Exy’ = y * Ey
Escala ½ em x e ¼ em y
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Escala
TransformaTransformaçções Geomões Geoméétricastricas
xx
yy
cc
bb
=
y
xa
′
′=
y
xa
=
⋅
⋅=
y
x
s
s
ys
xs
y
x
y
x
y
x
0
0
'
'
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Rotação
Gira o objeto em torno da origem;
Se o objeto não estiver definido na origem, ocorrerá também uma translação.
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Rotação
Rotação em 45ºcos 45º = 0,70
sen 45º = 0,70
Fórmulax’ = x*cos(α) - y*sen(α)y’ = y*cos(α) + x*sen(α)
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Rotação
Passos:1. Transladar ponto a origem (Tx, Ty);2. Rotacionar com o ângulo;3. Transladar ponto a posição inicial (-Tx,-Ty).
Fórmulax’ = x*cos(α) - y*sen(α)
y’ = y*cos(α) + x*sen(α)
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Reflexão
Também 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;
É possível através da inversão das coordenadas.
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Reflexão
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Reflexão
−=
−=
′
′
y
x
y
x
y
x
10
01
xx´́ = = --1.x1.x
yy´́ = y= y
xx
yy
=
y
xp
′
′=′
y
xp
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
CisalhamentoCisalhamento (Shearing ou Skew) é uma
transformação que distorce o formato do objeto;
Deforma o objeto linearmente, ao longo do eixo X, do eixo Y ou de ambos.
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Fórmulax’ = x + Sxyy’ = y + Syx
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
xx
yy
xx
yy
γγ
=
+=
y
x
y
yx
y
x
10
tan1tan
'
' γγ
TransformaTransformaçções Geomões Geoméétricastricas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Podemos tratar todas as transformaPodemos tratar todas as transformaçções de ões de forma unificada se representarmos os pontos forma unificada se representarmos os pontos do espado espaçço em o em coordenadas homogêneascoordenadas homogêneas..
Em coordenadas homogêneas, um ponto do Em coordenadas homogêneas, um ponto do plano plano éé representado por uma tripla representado por uma tripla [[xx,,yy,,ww] ] ao ao invinvéés de um pars de um par ((xx,,yy))..
Duas coordenadas homogêneas Duas coordenadas homogêneas [[xx,,yy,,ww] e ] e [[xx’’,,yy’’,,ww’’]]representam o mesmo ponto se uma representam o mesmo ponto se uma éé um um mmúúltiplo da outraltiplo da outra..
Coordenadas HomogêneasCoordenadas Homogêneas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Se Se ww≠≠00 podemos podemos dividir as coordenadas dividir as coordenadas
homogêneas por homogêneas por ww..
((xx,,yy,,ww)) representa o mesmo ponto que representa o mesmo ponto que ((x/wx/w,,y/wy/w,,11))..
Se Se ww==00, , entãoentão ((xx,,yy,,ww)) éé um um ponto no infinitoponto no infinito e e representa uma representa uma diredireççãoão do plano (mais sobre do plano (mais sobre isto depois...)isto depois...)
Coordenadas HomogêneasCoordenadas Homogêneas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
O uso de coordenadas O uso de coordenadas homogêneas consiste em homogêneas consiste em representar um esparepresentar um espaçço o
2D imerso em um espa2D imerso em um espaçço o
3D3D..
Se tomarmos todas as triplas Se tomarmos todas as triplas ((txtx,,tyty,,twtw), ), ww≠≠00, que , que representam um mesmo representam um mesmo ponto, temos uma reta no ponto, temos uma reta no espaespaçço 3D.o 3D.
yy
xx
ww
((ttx,x,tyty,tw,tw))
((x,y,wx,y,w))
Coordenadas HomogêneasCoordenadas Homogêneas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Os pontos da Os pontos da forma [forma [xx, , yy, , 11] ] formam um formam um plano com plano com coordenadas coordenadas ww==11 no espano espaçço o ((xx,,yy,,ww))..
((x,y,wx,y,w))
yy
xx
ww
w=1w=1
((x/w,y/w,1x/w,y/w,1))
Coordenadas HomogêneasCoordenadas Homogêneas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
Pontos são representados em coordenadas Pontos são representados em coordenadas homogêneas por vetores de 3 componentes.homogêneas por vetores de 3 componentes.
Logo, as matrizes de transformaLogo, as matrizes de transformaçção devem ser ão devem ser representadas por representadas por matrizes 3x3matrizes 3x3..
+
=
′
′
f
e
y
x
db
ca
y
x
=
′
′
11001
y
x
fdb
eca
y
x
Coordenadas HomogêneasCoordenadas Homogêneas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
yy
xx
ww
w=1w=1
tt
=
′
′
=
′
′=
1100
10
01
1
y
x
t
t
y
x
y
xp y
x
Coordenadas HomogêneasCoordenadas Homogêneas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
EscalaEscala
RotaRotaççãoão
CisalhamentoCisalhamento
=
1100
00
00
. y
x
s
s
xS y
x
−
=
1100
0cossin
0sincos
. y
x
xR θθ
θθ
θ
=
1100
01tan
0tan1
. y
x
xC ψ
γ
Coordenadas HomogêneasCoordenadas Homogêneas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
xx
yy
xx00
yy00
αα
xx
yy
xx
yy
αα
xx
yy
xx00
yy00
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
−
−
−
=
1100
10
01
100
0cossin
0sincos
100
10
01
1
'
'
0
0
0
0
y
x
y
x
y
x
y
x
αα
αα
Coordenadas HomogêneasCoordenadas Homogêneas
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
TranslaTranslaçção em ão em OpenGLOpenGL
Translate {f,d} ( Tx, Ty, Tz ), onde:
Tx: translação do objeto em relação ao eixo X Ty: translação do objeto em relação ao eixo YTz: translação do objeto em relação ao eixo Z
glTranslatef(xf, yf, zf);
glBegin(GL_POLYGON);
glVertex2f( xf, yf);
glVertex2f( xf, yf);
glVertex2f( xf, yf);
glEnd();
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
RotaRotaçção em ão em OpenGLOpenGLRotate {f,d} (Angulo, x, y, z ), onde:
Angulo -> é o angulo de rotaçãox,y,z -> definem o eixo onde o objeto será rotacionadoexemplo:
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 Computação – Computação Gráfica Prof. Adelino P. Silva
Escala em Escala em OpenGLOpenGL
Scale {f,d} ( Sx, Sy,Sz ), onde:
Sx: é o fator de escala em relação a X.Sy: é o fator de escala em relação a Y.Sz: é o fator de escala em relação a Z.
glScalef(1.0f,1.3f,1.0f);
//aumenta escala de 1.3 em relação a Y
glBegin(GL_POLYGON);
glVertex2f( xf, yf);
glVertex2f(xf, yf);
glVertex2f(xf, yf);
glEnd();
Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva
ExercExercíício cio
Para as seguintes figuras: 1) Cubo centrado na origem de tamanho 3;2) Triangulo isósceles (2;2), (4;2), (3;6);3) Pentágono 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:- Translação de (2,-1);- Rotação em 60º;- Cisalhamento com ɣ = 30º;- Escalonamento em X = 1,05 e Y = 0,95.