102160-cg_ec_s01_2011_e03_v1_4pp

9
Engenharia de Computação – Computação Gráfica 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 [email protected] [email protected] Engenharia de Computação – Computação Gráfica Prof. Adelino P. Silva Transforma Transformaç ões Geom ões Geomé tricas tricas 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 Transforma Transformaç ões Geom ões Geomé tricas tricas 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 pem Π. Conveniente introduzir um sistema de coordenadas. Π p p’ Transforma Transformaç ões Geom ões Geomé tricas tricas

Upload: nilton-junior

Post on 21-Apr-2015

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 102160-CG_ec_S01_2011_E03_v1_4pp

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

Page 2: 102160-CG_ec_S01_2011_E03_v1_4pp

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

Page 3: 102160-CG_ec_S01_2011_E03_v1_4pp

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

Page 4: 102160-CG_ec_S01_2011_E03_v1_4pp

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

Page 5: 102160-CG_ec_S01_2011_E03_v1_4pp

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

Page 6: 102160-CG_ec_S01_2011_E03_v1_4pp

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

Page 7: 102160-CG_ec_S01_2011_E03_v1_4pp

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

Page 8: 102160-CG_ec_S01_2011_E03_v1_4pp

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

Page 9: 102160-CG_ec_S01_2011_E03_v1_4pp

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.