Animação por Computador CRAb – Grupo de Computação Gráfica Departamento de Computação UFC.

Post on 21-Apr-2015

120 views 4 download

Transcript of Animação por Computador CRAb – Grupo de Computação Gráfica Departamento de Computação UFC.

Animação por Computador

CRAb – Grupo de Computação Gráfica

Departamento de ComputaçãoUFC

2

Sumário do Capítulo 2

2.1 Espaços e Transformações2.2 Representação de orientação

2. Background técnico

4

2.1 Espaços e Transformações

• CG e Animação dependem de transformações de dados

• Espaço do objeto → Pipepline de transformações (display pipeline) → Espaço do dispositivo

• Dados do objeto → Transformados como função do tempo para produzir animação

5

2.1 Espaços e Transformações

• Sistemas de coordenadas

– Objetos e Cenários 3D sofrem

transformação de mudança de

sistemas de coordenadas

– Sistemas de coordenadas são

referências para posicionamento e

orientação de objetos no espaço

6

2.1 Espaços e Transformações

– Existem cinco espaços com seus sistemas de coordenadas próprios •Espaço do Modelo: Cada modelo tem seu

próprio sistema de coordenadas

xM

yM

zM

7

2.1 Espaços e Transformações

•Espaço do Mundo (World): Todos os objetos do cenário posicionados relativo a um sistema de coordenadas comum

xM

yM

zM

xM

yM

zM

xM

yM

zM

yw

zw

xw

8

2.1 Espaços e Transformações

•Espaço da Câmera: Todos os objetos do cenário posicionados relativo a um sistema de coordenadas fixo no modelo de câmera

xc

yc

zc

-zc

9

2.1 Espaços e Transformações

•Espaço de Clipping: Frustum transformado em um paralelepípedo 2 x 2 x 1

zc

yN

xN

zN2

1

NDC=(Normalized Device Coordinates)

10

2.1 Espaços e Transformações

•Espaço de Clipping: Frustum transformado em um paralelepípedo 2 x 2 x 1

yN

xN

zN2

1

yN

xN

zN

2

11

2.1 Espaços e Transformações

•Espaço do Dispositivo: xy em NDC é transformado para as dimensões em pixels na tela. z é prezervado para algoritmo de eliminação de superfícies ocultas

12

2.1 Espaços e Transformações

• Escalares, Pontos e Vetores– A visão geométrica

• Ponto– Não tem tamanho nem forma– Única propriedade é sua localização

• Escalares – Tensores de ordem zero (array de um

elemento) – Valor não muda com mudança de sistema

coordenadas– Obedecem conjunto de operações– Ex: massa de uma partícula

13

2.1 Espaços e Transformações

– A visão geométrica• Vetores

– Tensores de primeira ordem (array unidimensional com 31 componentes) – Têm módulo, direção e sentido– Não têm posição fixa no espaço

– Transformam do sistema de coordenadas e1 e2

e3 para e’1 e’2 e’3 de acordo com a lei

),'cos( onde '

''

jiee

eeee

eep

VpV

ji

jjii

14

2.1 Espaços e Transformações

– A visão geométrica• Vetores

C=0 Vetor nulo

A

B=-ABC

A

Adição vetorial

-BC

A

Subtração vetorial

15

2.1 Espaços e Transformações

• Adição Ponto-Vetor (Translação do Ponto)

P2 =P1 + V

V

P1

P2

16

2.1 Espaços e Transformações

• Subtração Ponto-Ponto – Determinação do vetor entre os pontos

V= P2 - P1

V

P1

P2

17

2.1 Espaços e Transformações

– Geometria livre de coordenadas

(1, 1)

(3, 3)

2

2

18

2.1 Espaços e Transformações

– Visão matemática: Espaços vetoriais e Espaços afins

•Escalares, Pontos e Vetores são

elementos de conjuntos especiais

– Escalares Campos Escalares

– Vetores Espaços Vetoriais

– Pontos + Vetores Espaços Afins

19

2.1 Espaços e Transformações

– Campo escalar, {S; +, .}• S: conjunto cujos elementos são escalares • Operações binárias: adição(+), multiplicação(.)• Propriedades

, S, + S e . S (Fechamento c.r.a. + e . ) + = + (Comutativa c.r.a. +) . = . (Comutativa c.r.a. . ) + ( + ) = ( + ) + (Associativa c.r.a. +) . ( . ) = ( . ) . (Associativa c.r.a. . ) . ( + ) = ( . ) + ( . ) (Distributiva . c.r.a. +) + 0 = 0 + = , S (Elemento neutro da +) . 1 = 1 . = , S (Elemento neutro da . ) + (- ) = 0 , S (Inverso aditivo) . -1 = 1 , S (Inverso multiplicativo)

20

– Espaço Vetorial, X sobre o Campo escalar,S• X conjunto de vetores• {X; +}: Grupo Abeliano

– Obedece às seguintes propriedades x e y X Se x + x = x x = 0 (vetor nulo)Se z X e x + y = x + z y = zSe z X e x + y = z + y x = zw X w + x = yz X x + z = yx + y = y + x

• X é um S-módulo, isto é( + )x = x + x(x + y) = x + y (x) = ( . )x1x = x

2.1 Espaços e Transformações

Propriedades de Um grupo

21

– Espaço Euclidiano•Espaço vetorial com uma medida de

tamanho ou distânciad(x,y) = Sqrt(x . y)

– Espaço Afim•Extensão do espaço vetorial, incluindo o

objeto Ponto• Inclui as operações

– Adição vetor-ponto– Subtração ponto-ponto

2.1 Espaços e Transformações

22

2.1 Espaços e Transformações

• A visão da ciência da computação– Tipos abstratos de dados

• vector u, v;• point p, q;• scalar a, b;

– Linguagens orientadas a objetos (C++)• Classes• Overloading de operadores

– q = p + a*v;

23

2.1 Espaços e Transformações

• Tipos Abstratos de Dados geométricos

– Escalares: conjunto dos números reais• Operações de adição e multiplicação

– Pontos: posições no espaço 3D– Vetores: segmentos de retas,

direcionaisv = P - Q

P = v + Qv

Q

P

u

vu+v

24

2.1 Espaços e Transformações

• Linhas– Lugar geométricos dos pontos

gerados por operações ponto-vetorP() = P0 + d (Forma paramétrica)

P0 é um ponto arbitrário

d é um vetor arbitrário é um escalar

– Se for > 0 P() é o raio que emana de P0 na direção d

25

2.1 Espaços e Transformações

• Somas afinsP = Q + v– Possível encontrar um ponto R tal

quev = R – Q– AssimP = Q + (R – Q)

= R + (1 – Q= R + Q

+ = 1

vQ

P()

R

26

2.1 Espaços e Transformações

• Convexidade– Segmento de linha é um objeto convexo– Convex hull (Fecho convexo) dos pontos

Pi, i = 1, 2, …, n

é o conjunto de pontos P definido pela soma afim dos n pontos

P = 1P1 + 2P2 + … + nPn

1+ 2+ … + n = 1

i > 0, i = 1, 2, …, n

27

2.1 Espaços e Transformações

• Dot product = Scalar product (a.b)

• Angle between two nonzero vectors

2

332211

For aaaba

ba

bababa

baba

baba

inequality Schwarz-Cauchy

0 ,cos

28

2.1 Espaços e Transformações

• Scalar multiplication satisfies

0a0aa

a0aa

cabacba

baba

abba

(ii)

(i)

tesemidefini positive istion multiplicaScalar [c4]

Law) ive(Distribut [c3]

scalar)( [c2]

Law) (Symmetric [c1]

kkk

29

2.1 Espaços e Transformações

• Scalar projection of a onto b: Pb(a)

• Illustration of Pb(a)

cos)( ab

ba

b

baab

P

Pb(a)

b

a

30

2.1 Espaços e Transformações

• Vector projection of a onto b: Pb(a)

• Illustration of Pb(a)

Pb (a)Pb (a)ub ab

b

b

b

ab b

b2

Pb(a)

b

a

31

2.1 Espaços e Transformações

• Vectors a and b are orthogonal if

k

PP

2

0coscos0cos

0)()(

ba

ba ab

Pb(a)b

a

Pa(b)

32

2.1 Espaços e Transformações

• Basis formed by three mutually orthogonal unit vectors, ei (i =1, 2,

3)

symbolKronecker thecalled -

if0

if1

ij

ijji ji

ji

ee

33

2.1 Espaços e Transformações

Theorem 1.4: Let e1, e2, e3 be an

orthonormal basis and let

a = a1e1 + a2e2 + a3e3

b = b1e1 + b2e2 + b3e3. Then

ii

iii

ii

a

aaaaa

baaaa

ea

aaa

ba

(iii)

(ii)

bb b (i)

3

1

23

22

21

3

1i332211

34

2.1 Espaços e Transformações

Let (u1, u2, u3) and (v1, v2, v3) be ordered

bases and let

Then (v1, v2, v3) has the same

orientation of (u1, u2, u3) if

Right-handed basis and opposite orientation Left-handed basis

3

1iiijj a uv

0 )det( ija

35

2.1 Espaços e Transformações

• Vector product = a x b

abe1 a1 b1

e2 a2 b2

e3 a3 b3

e1

a2 b2

a3 b3

e2

a1 b1

a3 b3

e2

a1 b1

a2 b2

ab a2b3 a3b2 e1 a3b1 a1b3 e2 a1b2 a2b1 e3

36

2.1 Espaços e Transformações

• Theorem 1.5

• Theorem 1.6

t tripletindependenlinearly

handed-right a is ,, then ,0 If b)

and a) )(

),( wheresin )(

bababa

bbaaba

bababa

ii

i

dependentlinearly are and ifonly and if ba0ba

37

2.1 Espaços e Transformações

• Vector products satisfies

E1 ab ba Anticommutative Law E2 a b c ab ac Distributive Law E3 ka bk ab k scalar E4 aa 0

Note : a bc ab c

38

2.1 Espaços e Transformações

• Triple scalar product: a·b×c

333

222

111

cbacbaabc

abccabbca

bacacbcba

cba

cba

cba

cbaa b

c

39

2.1 Espaços e Transformações

• Theorem 1.7: [abc]=0 if and only if a, b, and c are linearly dependent.

• Theorem 1.8:

a bc ac b ab cF1 ab cd ac bd ad bc F2 ab cd abd c abc d

40

2.1 Espaços e Transformações

• Planos– Extensão das linhas paramétricas– Três pontos não alinhados determinam um

plano únicoS() = (1- P0 + Q, 0 1T() = 1 S + R, 0 1T() = 1 S + R

= P0+1Q-P0+R-P0T() = P0 + ’u + ’v P0QR– Se P está no plano, então

P – P0 = ’u + ’vn . (P – P0 ) = (u x v) . (P – P0 ) = 0

S()P0

R

Q

T()

n

41

2.1 Espaços e Transformações

• Frame– É especificado por um ponto (origem) e um

conjunto de vetores LI (base)

– Todo vetor w e todo ponto P podem ser escritos comow = 1v1 + 2v2 + 3v3

P = P0 + 1v1 + 2v2 + 3v3

P0 v1

v2

v3

42

2.1 Espaços e Transformações

• Representações e n-tuplasSuponha que e1, e2, e3 formam uma

basev = 1e1 + 2e2 + 3e3

v = (1, 2, 3) (representação 3-tupla)

43

2.1 Espaços e Transformações

• Mudanças de sistemas de coordenadas

u1 11v1 12v2 13v3

u2 21v1 22v2 23v3

u3 31v1 32v2 33v3

u1

u2

u3

11 12 13

21 22 23

31 32 33

v1

v2

v3

M

v1

v2

v3

44

2.1 Espaços e Transformações

• Mudanças de sistemas de coordenadas

w 1v1 2v2 3v3

w 1u1 2u2 3u3

w1 2 3 v1

v2

v3

aT

v1

v2

v3

w 1 2 3 u1

u2

u3

bT

u1

u2

u3

bTM

v1

v2

v3

aT bTM a MTb

45

2.1 Espaços e Transformações

• Exemplo de mudança de representação

v1

v2

v3

u1

u2

u1

u2

u3

cos sin 0

sin cos 0

0 0 1

v1

v2

v3

w1v1 2v2 4v3 1 2 4 v1

v2

v3

w 1 2 4 cos sin 0

sin cos 0

0 0 1

u1

u2

u3

w cos 2sin u1 2cos sin u2 4u3

a MTb

1

2

4

cos sin 0

sin cos 0

0 0 1

1

2

3

1

2

3

cos sin 0

sin cos 0

0 0 1

1

2

4

46

2.1 Espaços e Transformações

• Coordenadas homogêneas– Ponto

– Vetor

0

3

2

1

3210

1

P

v

v

v

P

vvvPP

zyx

zyx

0

3

2

1

321 0

P

v

v

v

w

47

2.1 Espaços e Transformações

• Exemplo de mudança de frames

v1

v2

v3

u2 = v1 + v2

u3=v1 + v2 + v3

u1 = v1Q0

P0

A

A = P0 + 1 v1 + 1 v2 + 0 v3

A = Q0 + u1 + u2 + u3

Q0 = P0 + 1 v1 + 1 v2 + 0.5 v3

48

2.1 Espaços e Transformações

0

3

2

1

0

3

2

1

0

3

2

1

3

2

1

3

2

1

1011

1000

0111

0011

0001

015.011

111

011

001

P

v

v

v

A

P

v

v

v

P

v

v

v

A

v

v

v

u

u

u

49

2.1 Espaços e Transformações

0

5.0

5.0

0

0

1

0

1

1

0000

5.0100

5.0110

0.0011

1

0

1

1

0000

5.0100

1010

1001

1000

0100

0110

0011

0

01000

0100

0110

0111

1

5.0

1

1

1

0

1

1

50

2.1 Espaços e Transformações

• Trabalhando com representações– Considere a mudança de representação

do frame {i, j, k, P0} para o frame {u, v, w, Q0} através da transformação{a} = [C] {b}

• {b}: representação no frame {i, j, k, P0}

• {a}: representação no frame {u, v, w, Q0}

– Considere a mudança inversa{b} = [D] {a} =>[D] = [C]-1

51

2.1 Espaços e Transformações

– Assim

D

1

0

0

0

u

ui

u j

uk

0

D

0

1

0

0

v

v i

v j

vk

0

D

0

0

1

0

w

wi

w j

wk

0

D

0

0

0

1

Q0

qi

q j

qk

1

D

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

D

ui

u j

uk

0

v i

v j

vk

0

wi

w j

wk

0

qi

q j

qk

1

C D 1

ui

u j

uk

0

v i

v j

vk

0

wi

w j

wk

0

qi

q j

qk

1

1

52

2.1 Espaços e Transformações

– Aplicando ao exemplo anterior

1000

5.0100

5.0110

0011

1

5.0

1

1

0

1

1

1

0

0

1

1

0

0

0

11

1DC

53

2.1 Espaços e Transformações

• Frames e tipos abstratos de dados

point3 p, q;vector3 v;frame f;v = point_sub(p, q, f);

54

2.1 Espaços e Transformações

• Frames no OpenGL– Frame do Cenário (World Frame)– Frame da Câmera (Camera Frame)

• Default: coincide com o frame do cenário

-zc

xc=xw

yc=ywzc=zw

w

xw

yw

zw

c

zc

xc

ycCâmera

55

2.1 Espaços e Transformações

• Transformações Afins– Transformação de um ponto P em Q

Q = T(P)

– Transformação de um vetor u em vv = R(u)

– Em coordenadas homogêneas, vetores e pontos são representados como matrizes colunas 4DQ = f(P) e v = f(u) (mesma transformação)

56

2.1 Espaços e Transformações

• Restringir f a uma função linearf(p + q) = f(p) + f(q)– Importância

•Conhecendo a transformação de vértices•Obtém-se a transformação de

combinações lineares de vértices através de combinações lineares de transformações de vértices

– f pode ser representada por uma matriz 4x4, [A]

57

2.1 Espaços e Transformações

– Matriz de Transformação não-singular•Mudança de frame•Mudança do vértice dentro do mesmo

frame

– Matriz Vetor Ponto

1

0

10003

2

1

3

2

1

34333231

24232221

14131211

p

p

p

v

v

v

aaaa

aaaa

aaaa

PvA

58

2.1 Espaços e Transformações

– Transformação de vetores• Envolve apenas nove coeficientes da matriz• 9 graus de liberdade

– Transformação de pontos• Envolve 12 coeficientes da matriz• 12 graus de liberdade

– Transformações afins preservam linhas• Linha original: P() = P0 + d

• Transformação:A P() = A(P0 + d)= AP0 + Ad

• Linha final: P’() = P’0 + d’

59

2.1 Espaços e Transformações

• Translação– Operação ponto-vetor

P’ = P + tx’ = x + tx

y’ = y + ty

z’ = z + tz PP’t

60

• Translação – Somar o vetor de translação t = (tx, ty,

tz) aos vértices para reposicionar objetos

P’ = P + tx’ = x+ tx

y’ = y + ty

z’ = z + tz

x

y

2.1 Espaços e Transformações

t = ( tx, ty, tz)

P = (x, y, z)

P’=(x’, y’,z’)

61

2.1 Espaços e Transformações

• Rotaçãovértice P em coordenadas polares (r, ) irá para posição P’ = (r, )

> 0 : rotação em sentido anti-horário < 0 : rotação em sentido horário

ei

P = ( r, )

P’ = ( r, ) ej

rr

62

• Rotação em torno do eixo x– Coordenadas na forma polar:

y’ = r cos ( ) y = r cos z’ = r sen ( ) z = r sen

– Mas:cos ( ) = cos . cos - sen . sen sen ( ) = sen . cos + sen . cos

– Assim:y’ = r cos . cos - r sen . sen z’ = r sen . cos + r cos . sen y’ = y . cos - z . sen z’ = z . cos + y . sen

2.1 Espaços e Transformações

x y

zx

63

2.1 Espaços e Transformações

Rotação em torno do eixo x

z

y

x

sen

sen

z

y

x

xx

xx

cos0

cos0

001

'

'

'

64

2.1 Espaços e Transformações

• Rotação em torno do eixo y– Coordenadas na forma polar:

z’ = r cos ( ) z = r cos x’ = r sen ( ) x = r sen

– Mas:cos ( ) = cos . cos - sen . sen sen ( ) = sen . cos + sen . cos

– Assim:z’ = r cos . cos - r sen . sen x’ = r sen . cos + r cos . sen z’ = z . cos - x . sen x’ = x . cos + z . sen

y z

xy

65

2.1 Espaços e Transformações

Rotação em torno do eixo y

z

y

x

sen

sen

z

y

x

yy

yy

cos0

010

0cos

'

'

'

66

2.1 Espaços e Transformações

• Rotação em torno do eixo z– Coordenadas na forma polar:

x’ = r cos ( ) x = r cos y’ = r sen ( ) y = r sen

– Mas:cos ( ) = cos . cos - sen . sen sen ( ) = sen . cos + sen . cos

– Assim:x’ = r cos . cos - r sen . sen y’ = r sen . cos + r cos . sen x’ = x . cos - y . sen y’ = y . cos + x . sen

z x

yz

67

2.1 Espaços e Transformações

Rotação em torno do eixo z

z

y

x

sen

sen

z

y

x

zz

zz

100

0cos

0cos

'

'

'

68

2.1 Espaços e Transformações

• Rotação em torno de um eixo // z passando pelo pivô, (xR, yR)

vértice (x, y) irá para posição (x’, y’)

x

y

(xR, yR)

P = ( r, )

P’ = ( r, )

rr

69

2.1 Espaços e Transformações

• Rotação em torno do eixo //z pelo pivô, (xR,yR, zR)

Equivale a – Translação para a origem ( 0, 0, 0 )– Rotação em relação ao eixo z

– Translação de volta para (xR,yR, zR)

70

2.1 Espaços e Transformações

• Rotação em torno de eixo // z pelo pivô (xR, yR)

x’ = (x - xR) . cos - (y - yR) . sen + xR

y’ = (y - yR) . cos + (x - xR) . sen + yR

R

R

R

R

y

x

yy

xx

sen

sen

y

x

cos

cos

'

'

71

2.1 Espaços e Transformações

• Rotação para objetos definidos com curvas – transformações geométricas aplicadas

a coordenadas de definição– implementações adaptadas à

geometria do objeto• Exemplos

– Círculos • rotação ou translação: usar coordenadas

do centro, e •escala: amplificar os raios

72

P1

P2

P3 P4

2.1 Espaços e Transformações

• Rotação para objetos definidos com curvas– Segmentos de curvas – transformação: usar coordenadas de

definição da curva (Pontos de controle)

73

2.1 Espaços e Transformações

• Escala– É uma transformação afim que altera a

forma do objeto (non-rigid-body)– Multiplicar os valores das coordenadas

por fatores de escala sx, sy, sz

– Transformação básica de escala

– (x’, y’, z’) = (x.sx, y.sy, z.sz ), sx, sy, sz > 0

– Mudança uniforme de Escala quando sx = sy = sz

74x

y

2.1 Espaços e Transformações

• Efeito da transformação de escala– mudança do tamanho do objeto – deslocamento do objeto

– distorção se sx != sy

75

2.1 Espaços e Transformações

• Escala relativa a um ponto fixo, Pf

Pf = ( xf, yf )

– se ( xf, yf ) for centróide objeto não move

– senão deslocamento em relação a Pf

x

y

centróide

76

2.1 Espaços e Transformações

• Coordenadas do centróide

V

Vc

V

Vc

V

Vc

dV

zdV

zdV

ydA

ydV

xdV

x e ,

HBHB

HBH

HBH

y

HBHB

HBB

BHBB

x

c

c

21

21

21

22

111

21

)(

21

3)(

2

21

)(

21

3)(

2

B1

B2

HH/3

H/2

B1/2

B2/3

77

2.1 Espaços e Transformações

• Escala relativa a um ponto fixo, Pf

x’ = ( x xf ) . sx + xf

y’ = ( y yf ) . sy + yf

z’ = ( z zf ) . sz + zf

– Translação para a origem ( 0, 0, 0 )– Escala em relação à origem– Translação de volta para ( xf, yf )

(xf, yf) (xf, yf)

78

2.1 Espaços e Transformações

• Transformações em Coordenadas Homogêneas– Usando-se coordenadas homogêneas,

as transformações geométricas são escritas como

34

24

14

33

23

13

32

22

12

31

21

11

'

'

'

11

'

'

'

m

m

m

zm

zm

zm

ym

ym

ym

xm

xm

xm

z

y

x

z

y

x

z

y

x

M

79

2.1 Espaços e Transformações

• Translação– Matriz de Translação

– Forma inversa ( T-1) com -tx, -ty, -tz.

1000

100

010

001

ztytxt

T

80

2.1 Espaços e Transformações

• Escala– Matriz de Escala em relação a um ponto

fixo, F

– A escala é uniforme quando Sx = Sy = Sz

– Forma inversa S-1 com

1000

100

100

100

Fzz

Fyy

Fxx

zSS

ySS

xSS

S

zz

yy

xx S

SS

SS

S1

',1

',1

'

81

2.1 Espaços e Transformações

• Rotação– Em 3D, as rotações podem ser

sobre qualquer reta– As rotações mais simples são sobre

os eixos de coordenadas– Outras rotações são equivalentes a

combinações das rotações dos 3 eixos-coordenados (mais T e T’).

– Para todas as rotações 3D sobre eixos de coordenadas• > 0: rotação anti-horária (a partir da

origem) na regra da mão-direita

82

2.1 Espaços e Transformações

– Rotação em relação ao eixo-x

– Rotações sobre os outros dois eixos são obtidas com permutação cíclica

x y z x

1000

0cos0

0cos0

0001

xx

xxx sen

sen

R

z

x

y

x

83

2.1 Espaços e Transformações

– Rotação em relação ao eixo-y

1000

0cos0

0010

00cos

yy

yy

y sen

sen

R

z

x

y

y

84

2.1 Espaços e Transformações

– Rotação em relação ao eixo-z

1000

0100

00cos

00cos

zz

zz

z

sen

sen

R

z

x

y

z

85

2.1 Espaços e Transformações

– Obtém-se a inversa de Rx, Ry ou Rz com

- como •cos(-) = cos()•sen(-) = - sen(),

R-1 = RT – R são matrizes ortonormais

86

2.1 Espaços e Transformações

– Outras rotações são obtidas por composição de matrizes de transformação•Transformação do eixo de rotação em um

eixo de coordenada •Rotação especificada em torno do eixo

transformado•Transformação do eixo de rotação de volta

para a posição e orientação originais

87

• Cisalhamento (Shear)– Cisalhamento no plano xy na direção x

x’ = x+x = x + tg()y = x + shxy

y’ = yz’ = z

2.1 Espaços e Transformações

y

x

yp

xp

P

y

x

yp’

P’

xp x

x

88

– Cisalhamento no plano xy na direção x

2.1 Espaços e Transformações

1000

0100

0010

00sh1 x

x

xyS

89

– Cisalhamento no plano xy na direção yx’ = xy’ = y+y = y + tg()x = y + shyx

z’ = z

2.1 Espaços e Transformações

y

xxp

yp

P

x

y

xp’

P’

yp

y

y

90

– Cisalhamento no plano xy na direção y

2.1 Espaços e Transformações

1000

0100

001sh

0001

yy

xyS

91

– Cisalhamento no plano xz na direção x

2.1 Espaços e Transformações

1000

0100

0010

0sh01 x

x

xzS

92

– Cisalhamento no plano xz na direção z

2.1 Espaços e Transformações

1000

010sh

0010

0001

z

z

xzS

93

– Cisalhamento no plano yz na direção y

2.1 Espaços e Transformações

1000

0100

0sh10

0001

yy

yzS

94

– Cisalhamento no plano yz na direção z

2.1 Espaços e Transformações

1000

01sh0

0010

0001

z

z

yzS

95

2.1 Espaços e Transformações

• Outras Transformações– Reflexão: imagem de objeto em

relação a um plano– Espelho xz: y - y

•Equivale a sx = sz = 1, sy = -1

– Espelho yz: x - x•Equivale a sx = -1, sy = sy = 1

100

010

001

S

100

010

001

S

96

2.1 Espaços e Transformações

– Espelho xy: z - z•Equivale a sx = sy = 1, sz = -1

– Espelho cuja normal é n = (nx, ny, nz):

100

010

001

S

P i Pi 2(Pknk )ni ik 2nink Pk

Sn 1 2n1n1 2n1n2 2n1n3

2n2n1 1 2n2n2 2n2n3

2n3n1 2n3n2 1 2n3n3

P

P’ n

x

y

97

2.1 Espaços e Transformações

–Reflexão relativa à origem: x - x e y - y

•Equivale a sx = -1, sy = -1

98

2.1 Espaços e Transformações

Transformações entre sistemas de coordenadas

• Usado em– Transformações de Visualização– Transformações de Modelagem

• Transformação entre sitemas paralelos com origens distintas

• Transformações entre sistemas centrados na mesma origem com orientações distintas

99

2.1 Espaços e Transformações

• Transformação entre sistemas paralelos com origens distintas– Aplicar translação To’o aos pontos da cena

x’

x

O’

O

y’y

P’P

1

P

P

P

1000

O100

O010

O001

OO

z

y

x

z

y

x

P

PP

100

2.1 Espaços e Transformações

• Transformações entre sistemas centrados na mesma origem com orientações distintas– Construir matriz de transformação cujas linhas são vetores

unitários nas direções de x’ y’ e z’ representados por suas componentes no sistema x y z

i i xi yi z

j j xj yj z

k k xk yk z

P

i x i y i z 0

j x j y j z 0

k x k y k z 0

0 0 0 1

Px

Py

Pz

1

x’

x

y’y P

z

z’

101

2.1 Espaços e Transformações

• Assim

1

0

0

1

ix iy iz 0

jx jy jz 0

kx ky kz 0

0 0 0 1

ix

iy

iz

1

0

1

0

1

ix iy iz 0

jx jy jz 0

kx ky kz 0

0 0 0 1

jx

jy

jz

1

0

0

1

1

ix iy iz 0

jx jy jz 0

kx ky kz 0

0 0 0 1

kx

ky

kz

1

T é Ortonormal T-1 T P TP e PTT P

x’

x

y’ y P

zz’

102

2.1 Espaços e Transformações

• Rotação em torno de um ponto fixo– Utilizar concatenação de 3 operações

• Translação do ponto fixo para a origem– T(-PF)

• Rotação em torno do eixo passando pela origem– R()

• Translação de volta para a posição do ponto fixo– T(PF)

• P’ = [T(PF) R() T(-PF)] P

103

2.1 Espaços e Transformações

• Rotação geral– É possível expressar como

concatenação de rotações em torno de z, y e x• R = RxRyRz

104

2.1 Espaços e Transformações

• Transformação de instância– Usar um objeto protótipo – Gerar instância desse objeto – Aplicar transformações para a forma

desejada

105

2.1 Espaços e Transformações

• Rotação sobre um eixo arbitrário•Definir o eixo de rotação

– dois pontos sobre a reta ou– um ponto e um vetor-direção

•O segmento P1P2

(“segmento de reta orientado”) define um vetor V = (x2-x1, y2-y1, z2-z1)

•Determinar uma forma de rotação geral de matriz usando operações com vetores

y

zx

p1

p2

106

2.1 Espaços e Transformações

– Rotação sobre um eixo arbitrário

1. Translação do eixo de rotação para a

origem

2. Rotações para alinhar o eixo de rotação

com o eixo z (ou outro eixo)

3. Rotação sobre o eixo z

4. Inversão das rotações no passo 2

5. Inversão da translação do passo 1

107

2.1 Espaços e Transformações

– Rotação sobre um eixo arbitrário

y

z x

y

z x

y

z x

(5)

(2)y

z x

(1)

(4)y

z x

(3)

y

z x

Início

p1

p2

108

2.1 Espaços e Transformações

– Rotação sobre um eixo arbitrário•Coordenadas de p1 e p2 determinam o

vetor unitário û ao longo do eixo de rotação

||12,

||12,

||12

),,(||

)12,12,12(

VVV

VV

u

V

zzc

yyb

xxa

cba

zzyyxx

y

z x

p1

p2

109

2.1 Espaços e Transformações

– Rotação sobre um eixo arbitrárioPasso 1: Translação de p1 para a origem

1

100

010

001

0001

1

1

z

y

x

T

y

z xp1

p2

110

Passo 2.1: Posicionamento do eixo de rotação no plano xz•determinar ângulo x entre û’ e k

•girar de um ângulo x sobre o eixo x

2.1 Espaços e Transformações

(0, b, c) =

û a,0, b2 c2

û =(a, b, c)û’

x

y

z

x

111

2.1 Espaços e Transformações

– determinar ângulo x entre û’ e k

•Encontre o cos x

•Encontre o sen x

ˆ u 'k| ˆ u ' ||k |cosx cosxˆ u 'k| ˆ u '|1

cd

onde d| ˆ u '| b2c2

d

b

d

cd

d

cxsen

2

2221

112

2.1 Espaços e Transformações

– girar de um ângulo x sobre o eixo x

1000

00

01

0001

)(dcdb

dbdc

xx R

113

2.1 Espaços e Transformações

Passo 2.2: Alinhamento do eixo de rotação com o eixo z•determinar ângulo y entre û” e k

•girar û” de um ângulo -y sobre o eixo y

û a,0, b2 c2

û =(a, b, c)

x

y

z y

114

– determinar ângulo y entre û” e k

•Encontre o cos y

•Encontre o sen y

dycbada

da

dy

cos122222 mas

22|||''ˆ|''ˆcoskuku

2.1 Espaços e Transformações

aysenaysen

115

2.1 Espaços e Transformações

– girar de um ângulo – y sobre o eixo x

1000

00

0010

00

)(da

ad

yy R

116

2.1 Espaços e Transformações

Passo 3: Rotação de sobre o eixo z

1000

0100

00cossen

00sencos

)(

zR

117

2.1 Espaços e Transformações

– Passo 4: Inverso do passo 2.2, Ry(y)

– Passo 5: Inverso do passo 2.1, Rx(-x)

– Passo 6: Inverso do passo 1, T(P1)

– Assim a Rotação em torno do eixo P1P2

MT P1 Rx x Ry y Rz Ry y Rx x T P1

M

r11

r12

r13

0

r21

r22

r23

0

r31

r32

r33

0

0 0 0 1

118

2.1 Espaços e Transformações

– Rotação sobre um eixo arbitrárioManeira alternativa•Construir uma base ortogonal i’ j’ k’ tal

que k’ seja o vetor unitário na direção P1P2

•Transformar os pontos da cena para esse sistema de coordenadas

•Girar em torno de z’•Transformar os ponto para o

sistema original

y

z x

p1

p2

119

2.1 Espaços e Transformações

• Matrizes de Transformação no OpenGL

– A Matriz de transformação corrente• Aplicada aos vértices subseqüentes à

sua montagem• É uma matriz 4 x 4• Inicializada como a matriz identidade• Modificada por pós-multiplicação de

matrizes – C CT (Translação)– C CS (Escala)– C CR (Rotação)

120

2.1 Espaços e Transformações

– Definida diretamente com o comando glLoadMatrix{fd}(M); • C M• M é um array com 16 elementos de tipo

float ou double que compõem 4 a 4 as colunas de C

161284

151173

141062

13951

mmmm

mmmm

mmmm

mmmm

M

121

2.1 Espaços e Transformações

– Modificada com o comando glMultMatrix{fd}(M); • C CM• M é um array com 16 elementos de tipo

float ou double que compõem 4 a 4 as colunas da matriz

161284

151173

141062

13951

mmmm

mmmm

mmmm

mmmm

M

122

2.1 Espaços e Transformações

– Os vértices são transformados pela matriz corrente resultante de dois modos• GL_PROJECTION (modo de projeção)• GL_MODELVIEW (modo de modelagem e

visualização)• glMatrixMode(modo): Seleciona um dos

dois modos

• C CProjectionCModel_View

vértices CModel_View CProjection vértices

123

2.1 Espaços e Transformações

• Rotação, translação e escala– glRotatef(ângulo, vx, vy, vz);

• Ângulo em graus• (vx, vy, vz) vetor na direção da rotação

– glTranslatef(dx, dy, dz);• (dx, dy, dz) vetor de deslocamento

– glScalef(sx, sy, sz);• sx, sy, sz: fatores de escala

124

2.1 Espaços e Transformações

• Rotação em torno de um ponto fixo– Composição de transformações

glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslatef(Px, Py, Pz);glRotatef(ângulo, vx, vy, vz);glTranslatef(-Px, -Py, -Pz);

– v’ = T(Px, Py, Pz) R(, vx, vy, vz) T(-Px, -Py, -Pz) v

y

zx

P

Q

P

Q

1

2

3

125

2.1 Espaços e Transformações

• Ordem de transformações– Duas maneiras de ver a ordem de

transformações• C CMn

• C CMn-1

• …

• C CM2

• C CM1

Mn

Mn-1

M2

M1

v’ = MnMn-1…M2M1 v

C

Desempilhar

Pilha

126

2.1 Espaços e Transformações

• Loading, pushing, e popping de matrizes

– Loading matix M como matriz corrente• glLoadMatrixf(M);

– Salvando a matriz corrente na pilha• glPushMatrix()

– Retirando a matriz da pilha e tornando-a corrente• glPopMatrix()

127

2.1 Espaços e Transformações

• Rotações suaves– A partir dos key-frames indicados

• gerar aviões em posições intermediárias ao longo da rota, interpolando as orientações

128

2.1 Espaços e Transformações

– As orientações dos aviões nos key-frames são obtidas através de matrizes de rotação• R = Rx(x) Ry(y) Rz(z)

– E=(x, y, z): Ângulos de Euler

– Considere dois conjuntos de ângulos de Euler• Ei e Ei+1

• Calcular Ek = Interpolação(Ei, Ei+1)

• Animação não ficará suave

129

2.1 Espaços e Transformações

– Modificar a orientação interpolando entre os vetores vermelhos como no caso da trackball

130

2.1 Espaços e Transformações

• Rotações incrementais– Como no caso da trackball virtual

• Achar o círculo ao longo da superfície esférica que leva de uma orientação à outra

• Incrementar o ângulo de rotação ao longo do eixo de rotação v = (dx, dy, dz)

131

2.2 Representação de Orientação

• Como representar orientações de objetos– No instante t– No instante t + ∆t

• Interpolar as orientações entre os dois instantes de tempo

132

• Representação de Ângulo fixo– Eixos de rotação são fixos– Ângulos especificam rotação em torno

desses eixos de rotação– Exemplos

•X-Y-X: (45, 60, 30) ≡ Rx(30)Ry(60)Rx(45)

•X-Y-Z: (45, 90, 45) ≡ Rz(45)Ry(90)Rx(45)

2.2 Representação de Orientação

x

y

z

x

y

z

Θx= 45

x

y

z

Θz= 45

133

• Representação de Ângulo fixo– Eixos de rotação são fixos– Ângulos especificam rotação em torno

desses eixos de rotação– Exemplos

•X-Y-X: (45, 60, 30) ≡ Rx(30)Ry(60)Rx(45)

•X-Y-Z: (45, 90, 45) ≡ Rz(45)Ry(90)Rx(45)

2.2 Representação de Orientação

x

y

z

x

y

z

Θx= 45

x

y

z

Θz= 45

134

2.2 Representação de Orientação

• Quaternions– Quaternions are commonly used to

represent rotations– They were introduced by William

Hamilton (1805-1865) [1]– Quaternions were conceived as

Geometrical Operators– A Complete Calculus of Quaternions

was introduced by Hamilton [2]

135

Definition of Vector

– It is a line segment with orientation– It represents the relative position of

two points•Example: point N with respect to M

M

N

136

Hamilton’s Motivation for Quaternions

• Create a Mathematical Concept to represent

– RELATIONSHIP between two VECTORS

– Similar to the way a Vector represents

•RELATIONSHIP between two POINTS

137

Vector applied to Point

• Given – Point M and

– Vector V

• Application of V over M results in– Unique Point N

M

V

N

M V

138

Quaternion applied to Vector

• Hamilton wanted that given– Vector V and– Quaternion Q

• Application of Q over V results in – Unique VectorW

VQ

QV W

139

Quatenion Rationale

• Vector is completely defined by– Length– Orientation

• To define a vector in terms of another vector a Quaternion has to represent– Relative Length– Relative Orientation

140

Definition of Scalar

• Scale – RATIO between the lengths of two

PARALLEL vectors A and B

– RELATIVE LENGTH of vectors

AB

s = Scale

141

Scalar - Vector Operations

• S is the Quotient between

two PARALLEL vectors A and B

• A Scalar is an Operator that

– Changes the SCALE of the vector

– Keeps its orientation unchanged

B

AS

BBB

ABA sS

142

Definition of Versor

• Versor – QUOCIENT between two NON-

PARALLEL vectors A and B of EQUAL LENGTH

– RELATIVE ORIENTATION of vectors

A

B

143

Versor - Vector Operations

• V is the Geometric Quotient

between two NON-PARALLEL vectors of

EQUAL LENGTH A and B

• A Versor is an Operator that

– Changes the ORIENTATION of the vector

– Keeps its LENGTH unchanged

B

AV

BA V

144

Right Versors

• A Right Versor is a Versor that applies a 90o rotation

• Vector length is left unchanged as in any other Versor application

A

B

V

145

Composing Versors

• Versor composition is the consecutive application of two versors operators

A

BV2

V1

C

V3

123

312

1

2

VVV

VVV

V

V

CCA

CB

BA

146

Composing Right Versors

• (-1) is the INVERSION operator– Double application of a right versor

to a vector– Inverts the direction of a vector

A

B

V

- B

VV

VVV

V

1

BAB

BA

147

Definition of Quaternion

• Geometrical Quotient of two vectors A and B

• Operating on a vector, changes its– ORIENTATION – LENGTH

BAB

A QQ

148

Quaternion Characteristics

• Axis(Q) = Unit Vector perpendicular to the plane of rotation

• Angle(Q) = Angle between the vectors in the quotient

• Index(Q) = In a Right Quaternion is the Axis(Q) multiplied by the length ratio of the two

vectors in the quotient

149

Representation of Quaternions

• Quaternion = “A set of Four”• From

– the Latin Quaternio– the Greek

• The combined operation of Scalar and Versor requires 4 numbers:– 1 for Scale– 1 for Angle– 2 for Orientation (common plane)

• Quaternion = Scalar Versor

U

150

Opposite Quaternions

• The quaternion Q

• has an Opposite quaternion O (Q)B

AQ QQO

B

A

A- A

B

Q

O(Q)

151

Opposite Quaternion Properties

))(()(

))(()(

QOAxisQAxis

QOAngleQAngle

A

- A

B

Q

O(Q)

152

Reciprocal Quaternions

• The quaternion Q:

• Reciprocal of Q:• Composition

(1) is an Identity Operator

A

B

QR(Q)

BAB

A QQ

ABA

B 11)( QQQR

1QQR )(

153

Conjugate Quaternion

• Given – Vectors A and B and– Quotient Q=A/B

• Geometric reflection of vector B over vector A will be vector C

BAB

A QQC BA

QK(Q)

154

Conjugate Quaternion

• Conjugate Quaternion K(Q)=A/C

– Angle (K(Q)) = Angle (Q)

– Axis (K(Q)) = - Axis (Q)

CAC

A )()( QKQKC BA

QK(Q)

155

Norm of a Quaternion

• The Norm is the composition of a Quaternion with its Conjugate– The rotation of K(Q) compensates the

rotation of Q– Producing a parallel vector– N(Q) is a scalar operator

C

BA

QK(Q)

BBC

B

A

B

A

A

C

B

C

QQKQN

QN

)()(

)(

2

156

Square of a Quaternion

• Defined as applying Q twice

C

BA

QQQ2CCA

C

B

B

A

C

A

QQQ

Q

2

2

157

Composing Right Quaternions

• Succesive application of a Right Quaternion over a Vector– results in a Vector in the opposite

direction

A- A

B

QQ

AC

BQ

Q

158

Composing Right Quaternions

• The square of any right quaternion is a NEGATIVE scalar operator

A- A

B

QQ

AC

BQ

Q

)(

12

AA

A

A

A

B

QQ AC

A

B

A

B

A

C

2

22

Q

159

Versor of a Quaternion

• Versor of a Vector – Unit vector parallel to the vector

• Versor of a Quaternion – Quotient of the Versors of the vectors

• It is the part of the Quaternion that represents Relative Orientation

AA

AA ˆ)( U

B

A

B

A

B

ˆ

)(

)()(

U

UUQU

160

Tensor of a Quaternion

• Tensor of a Vector – Length of the vector

• Tensor of a Quaternion – Quotient of the Tensors of the

vectors

• It is the part of the Quaternion that represents Relative Scale

AA )(T

B

A

B

A

B

A

)(

)()(

T

TTQT

161

Tensor and Versor of a Quaternion

• Versor operator

– Applies VERSION to a vector

– Changes vector’s orientation

• Tensor operator

– Applies TENSION to a vector

– Stretches the vector and change its

length

162

Tensor and Versor of a Quaternion

• Vector decomposed in Versor and

Tensor parts

• Quaternion decomposed in Versor

and Tensor parts

AAAAA ˆ)()( UT

)(

)(

)(

)()()(

B

A

B

A

U

U

T

TQUQTQ

Fim da Aula 14

172

Elementary Versors

173

Index of Right Quaternions

• Is the Axis of the quaternion Scaled by the ratio of lengths

180

Multiplying a Right Versor by a Scalar

• Multiplication by a Scalar– Affects only Scalar part of the Right

Versor– Modifies the length ratio of the

vectors in the Quotient

181

Right Versor in terms of Orthogonal Right Versor

• If the Orthogonal Right Versors i, j, k are multiplied by Scalars x, y, z

• Their sum will be a Right Versor whose axis has (x, y, z) as components

187

Quaternions as Four Coefficients

• Let L be the Ratio of lengths

between vectors A and B

• Thus, the scalar factor S isB

AL

)cos(

)cos(

LS

S

B

A

B

BS

B

A

BS

BR

188

Quaternions as Four Coefficients

• Let L be the Ratio of lengths

between vectors A and B

• Thus, the Tensor of the Right partB

AL

)sin(

)sin(

LR

R

B

A

B

BR

B

A

BS

BR

189

Quaternions as Four Coefficients

• Then, the Quaternion Q can be written as

Q = x i +y j +z k +w

• w (real) is Scalar part• (x i +y j +z k) is the Right part

)sin(

)cos(

222

Lzyx

Lw

192

Representation by four coefficients

• Let the representation of P and Q be

• Their composition P Q is

193

Representation by four coefficients

• Let the representation of P and Q be

• Their composition P Q is

194

Rotating a Vector (Finally !!)

• A Quaternion q = (x, y, z, w) rotates a Vector v by using the product

v’ = q v q-1 = q (v q-1 )• Which can be reduced to a Matrix-

Vector multiplication L(q) R(q-1)v

w2 x2 - y2 - z2 2xy 2wz 2xz 2wy 0

2xy 2wz w2 x2 y2 - z2 2yz - 2wx 0

2xz 2wy 2yz 2wx w2 x2 y2 z2 0

0 0 0 w2 x2 y2 z2

195

Quaternion Algebra

• Consider quaternions

• Sum and Subtraction of quaternions

),(

),(

1111111

0000000

v

v

wkzjyixwQ

wkzjyixwQ

Q0 Q1 w0 w1 x0 x1 i y0 y1 j z0 z1 kQ0 Q1 w0 w1,v0 v1

196

Quaternion Algebra

• Multiplications of primitive elements

jikki

ikjjk

kjiij

kji

1222

197

Quaternion Algebra

• Multiplication of quaternions

Q0Q1 w0 x0i y0 j z0k w1 x1i y1 j z1k w0w1 x0x1 y0y1 z0z1 w0x1 x0w1 y0z1 z0y1 i w0y1 y0w1 z0x1 x0z1 j w0z1 z0w1 z0x1 x0z1 k

Q0Q1 w0w1 v0 v1 ,w0v1 w1v0 v0 v1

198

Quaternion Algebra

• Conjugate of quaternions

K(Q)Q* w xi yj zk *

w xi yj zk K(K(Q)) Q* * Q

K(Q1Q2) Q1Q2 * Q2*Q1

*

199

Quaternion Algebra

• Norm of quaternions

N(Q) N w xi yj zk w 2 x2 y2 z2

N(K(Q))N Q* N(Q)

N(Q1Q2)N(Q1)N(Q2)

200

Quaternion Algebra

• The multiplicative inverse, Q-1

QQ 1 Q 1Q1

Q 1 Q*

N(Q)

Q 1 1Q

Q1Q2 1 Q2 1Q1

1

201

Quaternion Algebra

• The Selection function, W(Q)

• Dot product of two quaternions

W (Q) W w xi yj zk w

W (Q) QQ* /2

Q0 Q1 w0w1 x0x1 y0y1 z0z1

W Q0Q1*

202

Quaternion Algebra

• Unit quaternion has N(Q)=1• Represented by

Q cos()usin()

u uxi uy j uzk

ux,uy,uz 1

uu 1 - Quaternion product

203

Quaternion Algebra

• Extension of Euler’s identity

Power of a unit quaternion

)sin()cos()exp( uu

)sin()cos(

)exp())sin()(cos(

ttQ

tQt

tt

u

uu

204

Fórmula de Euler

• Série de Taylor

205

Fórmula de Euler

• Série de Taylor

206

Quaternion Algebra

• Extension of Euler’s identity

Logarithm of a unit quaternion

• Non-commutativity of quaternion

multiplication disallows log and exp

identities

)sin()cos()exp( uu

uu

u

))log(exp()log(

))sin()log(cos()log(

Q

Q

207

Rotation around an axis

v// = Pu(v) = Pu(v)u = (v.u)uv = v - v// = v - (v.u)uuv = |v|u(Plano de u e v)

|v| = | uv | = |v’|v’ = |v’|cosuv +|v’|senuuv

= (v - (v.u)u) cos + uv sen

uz

y

xv

v’

uv

v

v’

v//

Plane perpendicular to the direction of u

208

• Decomposition of Rotated vector

Rotation around an axis

)sin()())cos(1)()(()cos(

)sin()()cos())(()(

'' //

vuuuvv

vuuuvvuuv

vvv

209

• Rotation using a unit quaternionQ=cos()+u sin()

• Vector v is rotated of 2about the axis defined by the unit vector u

Rotation around an axis

*)(' QQR vvv

210

• Conditions to prove– v’ is a 3D vector

W(v’) = 0– R is a length preserving operator

N(v’) = N(v)– R is a linear operator

R(v + w) = R(v) + R(w)– R(u) = u

Rotation around an axis

211

Rotation around an axis

• u, v, w are orthonormal 3D vectors

• Suppose v is rotated by with the

unit quaternion of axis u

v’=qvq* v.v’=cos()

u

v

w

212

)cos()sin()()sin()cos(

)sin()cos()sin(

)cos()sin()cos(

))sin()cos())(sin()cos((

))sin()(cos())sin()(cos(

)()()cos(

22

22

222

***

vuvu

vuvuv

uvv

vuvvuv

uvuv

vvvv

W

W

W

W

qqWqq

Rotation around an axis

213

Rotation around an axis

• Therefore = 2

uuwvvuv

wvu

)(

)2cos()sin()cos(

)cos()sin(2)sin()cos()cos(22

22

uW