31
DIM102 Transformações 35T56 – Sala 3E1 Bruno Motta de Carvalho DIMAp – Sala 15 – Ramal 227

Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

Embed Size (px)

Citation preview

Page 1: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM102 1  

Transformações

35T56 – Sala 3E1Bruno Motta de CarvalhoDIMAp – Sala 15 – Ramal 227

Page 2: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM1022

Transformações

Porquê usar transformações?Criar objetos em sistemas de 

coordenadas convenientes Reusar formas básicas várias vezesModelagem hierárquicaIndependem do sistema utilizado

T

Page 3: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM1023

Transformações 2D

Translação• Adição dos componentes dos 

vetores v’ = v + t  onde 

ex’ = x + dx    y’ = y + dy

• Movendo polígonos: translação de vértices (vetores) e redesenho de linhas

• Preserva comprimentos (isométrico)

• Preserva ânguloss (conformal)• Não é uma combinação linear

dx = 2dy = 3

Y

X 0

 1

 1

 2

 2

 3  4  5  6  7  8  9  10

 3

 4

 5

 6

12

44

=

=

=

dydx

tyx

vyx

v ,''

',

TranslaçãoT

Page 4: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM1024

Transformações 2D

Scaling• Multiplicação dos componentes 

dos vetores por um escalar • v’ = Sv  onde 

     and

• Não preserva comprimentos • Não preserva ângulos (exceto 

quando o scaling é uniforme)

Y

X 0

 1

 1

 2

 2

 3  4  5  6  7  8  9  10

 3

 4

 5

 6

12

13

26

29

23

==

y

x

ss

=

=

''

',yx

vyx

v

=

y

x

ss

S0

0

Page 5: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM1025

Transformações 2D

Rotação• Rodar um ponto P=(x,y) de um 

ângulo   relativamente à origem θsignifica encontrar outro ponto Q=(x´,y´) sobre uma circunferência centrada na origem que passa pelos dois pontos.

=

=

''',

yxv

yxv

Page 6: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM1026

Transformações 2D

=

=

''',

yxv

yxv

Rotação• Rodar um ponto P=(x,y) de um 

ângulo   relativamente à origem θsignifica encontrar outro ponto Q=(x´,y´) sobre uma circunferência centrada na origem que passa pelos dois pontos.

Page 7: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM1027

Transformações 2D

Rotação• Rotação dos vetores por um 

ângulo θ v’ = Rθ v  where 

        e  x’ = x cos θ – y sin θ

  y’ = x sin θ + y cos θ• Preserva comprimentos e ângulos• Prova usa fórmulas de soma de 

ângulos  • cos(α+β)= cosα cosβ ­ sinα sinβ     sin(α+β)= sinα cosβ + sinβ cosα 

6πθ =

Y

X 0

 1

 1

 2

 2

 3  4  5  6  7  8  9  10

 3

 4

 5

 6

θ

=

=

''

',yx

vyx

v

−=

θθθθ

θ cossinsincos

R

Page 8: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM1028

Transformações 2D

Shear• Pega e um objeto e 

entorta para o lado 

• Quadrados se tornam paralelogramas – coordenadas x entortam para a direita, enquanto coordenadas y permanecem as mesmas

=

101 xsh

ShearθY

X 0

 1

 1

 2

 2

 3  4  5  6  7  8  9  10

 3

 4

 5

 6

θ

4πθ =

Page 9: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM1029

Coordenadas Homogêneas Matriz 2x2 não pode ser usada para composição porque 

translação não é expressa como multiplicação de matrizes  Coordenadas homogêneas permitem que as três 

operações sejam expressas de maneira homogênea, permitindo a composição de operações usando­se multiplicação de matrizes 3x3

=

≠≠→

wy

wxPyxP

wwyxPwwwywxPyxP

dd

h

hd

','),(

0),,','(0),,,(),(

22

2

Page 10: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10210

Coordenadas Homogêneas

• P2d é a interseção da linha determinada por Ph com o plano w = 1

• Logo, um número infinito de pontos correspondem a (x, y, 1): eles constituem a linha (tx, ty, tw)

P2d (x/w,y/w,1)

Ph (x,y,w)

Y

X

W

1

Page 11: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10211

Coordenadas Homogêneas Para pontos escritos em coordenadas homogêneas          

[x y 1]T , translação, scaling and rotação relativas a origem são representadas por:

Page 12: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10212

Coordenadas Homogêneas

Considere a matriz de rotação

  As colunas e linhas da submatriz 2X2:

São vetores unitários (comprimento=1) São perpendiculares (produto interno=0)

Estas propriedades das linhas e colunas preservam comprimentos e ângulos da geometria original. Deste modo, essa matriz é chamada de transformação de corpo rígido (rigid­body)

−=

1000cossin0sincos

)( φφφφ

φR

Page 13: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10213

Composição de Transformações 2D Como fazer quando um objeto não está centralizado na 

origem? Translação para a origem, seguida de rotação e/ou 

scaling, e translação inversa Logo, é mais eficente a composição de várias 

transformações Translação, scaling e rotação são representados por:

translation:

scale:

rotation:

v’ = v + t

v’ = Sv

v’ = Rv

Page 14: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10214

Composição de Transformações 2D

Com a matriz T, pode­se evitar translações indesejáveis introduzidas quando nós usamos scaling ou rotacionamos um objeto não centrado na origem. Solução: translação do objeto para a origem, seguida de scaling ou rotação, e translação inversa

HdydxTRdydxTHdydxTRHdydxTHHouse ),()(),(),()(),()( θθ −−

Page 15: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10215

Composição de Transformações 2D Exemplo: Translação + Rotação + 

Translação

−−+−−

=

−−

100sin)cos1(cossinsin)cos1(sincos

1001001

1000cossin0sincos

1001001

11

11

1

1

1

1

θθθθθθθθ

θθθθ

xyyx

yx

yx

Page 16: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10216

Transformação Janela­para­Viewport

+−−−

−−

+−−−

−−

=

−−

−−

−−

100)()(

)()(0

)()(0

)()(

1001001

100

0)()(0

00)()(

1001001

minminmax

minmaxmin

minmax

minmax

minminmax

minmaxmin

minmax

minmax

min

min

minmax

minmax

minmax

minmax

min

min

vyyvvy

yyvv

uxxuux

xxuu

vu

yyvv

xxuu

vu

Page 17: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10217

Transformações 3D• Sistema de coordenadas destro 

(right­handed)• Rotações positivas são 

definidas tais que, quanto olhando de um eixo positivo para a origem, uma rotação de 90º  transforma um eixo positivo em outro

• Eixo    Direção de rot. Pos.x                y para zy                z para xz                 x para y

x

y

z

Page 18: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10218

Transformações 3D

1000100

1001

dzdyshdxsh

y

x

1000000000000

z

y

x

ss

s

Shear SHXY

Scaling

1000100010001

dzdydx

Translação

10000cossin00sincos00001

θθθθ

−10000cos0sin00100sin0cos

θθ

θθ

1000010000cossin00sincos

θθθθ

Rotação – x (yaw)

Rotação – y (pitch)

Rotação – z (roll)

Page 19: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10219

Quatérnios Motivação:

Page 20: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10220

Quatérnios Motivação:

Dificuldade de usar rotação com a notação de Euler. Dificuldade de fazer uma interpolação entre as rotações

A utilização de quatérnios para implementação de rotações  Garante uma rotação direta e firme entre duas 

orientações Define movimentos que são independentes de 

qualquer sistemas de coordenadas  A combinação de quatérnios é mais eficiente que 

multiplicação de matrizes 

Page 21: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10221

Quatérnios William Hamilton, em 1843 Eles representam uma orientação por um ângulo de 

rotação antihorário (θ) ao redor de um vetor (V) arbitrário Fazem parte da classe de números hipercomplexos

Page 22: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10222

Quatérnios

• Podem ser pensados como pontos em uma esfera 4D ou vetores 3D com uma rotação associada

• Algumas vezes é representado por s (rotação) e v (eixo de rotação)

=

=vs

qqqq

q

4

3

2

111222

−=−===

kjikji

Page 23: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10223

Quatérnios

• Adição e subtração funcionam com em números complexos 

• Multiplicação de quatérnios é associativa mas não é comutativa

• Complexo conjugado de um quatérnio

Page 24: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10224

Quatérnios

Page 25: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10225

Quatérnios

• Produto quatérnio­conjugado

• Norma• Inversa multiplicativa

23

22

21

2* vvvsqq +++=⋅

*23

22

21

2||)(norma qqvvvsqq ⋅=+++==

Page 26: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10226

Quatérnios

• Rotação (sistema destro/right­handed)

oantihorárisentido,

horáriosentido,*

'

*'

qvqv

qvqv

q

q

⋅⋅=

⋅⋅=

qvq /)2/sin()2/cos( θθ +=

Page 27: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10227

Quatérnios Vantagens:

Não exibe singularidades na sua parametrização  Interpolação consistente e suave de orientações Composição simples e eficiente de rotações

Desvantagens: Cada orientação é representada por dois quatérnios Representa orientações e não rotações (0º ao redor de 

V é o mesmo quatérnio que 360º ao redor de V) Implementa somente rotações. Matrizes são utilizadas 

para implementar as outras transformações

Page 28: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10228

Grafos de Cena Cenas 3D são armazenadas em uma grafo direcionado 

acíclico (DAG) chamado de grafo de cena (scene graph) Open Inventor (TGS) Open Scene Graph Java3D™ (Sun) X3D ™ (VRML ™) WorldToolKit ™ (Sense8)

• Formatos típicos de grafos de cena (existem centenas de pacotes!)

– Objetos (cubos, esferas, cones, poliédros, etc.) com valores padrão (por exmplo, localizados na origem com volume pré­definido) armazenados como nós do grafo

– Atributos (cor, mapa de textura, etc.) e transformações também são nós grafos de cena

Page 29: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10229

Grafos de CenaROBOT

upper body lower body

head trunk arm

stanchion base

2. We transform them

3. To make sub­groups

4. Transform subgroups

5. To get final scene

Page 30: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10230

Grafos de Cena Geralmente os nós de transformação contém 

pelo menos uma matriz que faz a transformação; adicionalmente eles podem conter parâmetros de transformação individuais

Para se determinar a matriz de transformação composta (CTM) final para um nó objeto deve­se compor todas as transformações dos pais dos nós durante travessias do grafo Como isso é feito varia de pacote a pacote!

Page 31: Transformações - dimap.ufrn.brdimap.ufrn.br/~motta/dim102/transformacoes.pdf · translação não é expressa como multiplicação de matrizes Coordenadas homogêneas permitem que

DIM10231

Grafos de Cena• Um examplo:     ­ Para o1, CTM = m1

­ Para o2, CTM = m2* m3­ Para o3, CTM = m2* m4* m5­ Para um vértice v em o3, sua posição no sistema de coordenadas do mundo (raiz do grafo) é:CTM v  = (m2*m4*m5)v

m1 m2

m3 m4

o1

o2

o3

g1

g2

g: nós de grupo 

m: nós de matrizes de transformação

o: nós objeto