animação por computador crab – grupo de computação gráfica departamento de computação ufc

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

Upload: internet

Post on 21-Apr-2015

118 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 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

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

2

Sumário do Capítulo 2

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

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

2. Background técnico

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

15

2.1 Espaços e Transformações

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

P2 =P1 + V

V

P1

P2

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

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

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

17

2.1 Espaços e Transformações

– Geometria livre de coordenadas

(1, 1)

(3, 3)

2

2

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

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

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

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)

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

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

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

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

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

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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);

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

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

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

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)

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

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]

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

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

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

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’

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

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

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

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’)

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

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

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

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

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

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

'

'

'

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

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

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

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

'

'

'

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

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

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

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

'

'

'

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

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

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

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)

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

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

'

'

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

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

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

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)

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

'

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

88

– Cisalhamento no plano xy na direção x

2.1 Espaços e Transformações

1000

0100

0010

00sh1 x

x

xyS

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

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

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

90

– Cisalhamento no plano xy na direção y

2.1 Espaços e Transformações

1000

0100

001sh

0001

yy

xyS

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

91

– Cisalhamento no plano xz na direção x

2.1 Espaços e Transformações

1000

0100

0010

0sh01 x

x

xzS

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

92

– Cisalhamento no plano xz na direção z

2.1 Espaços e Transformações

1000

010sh

0010

0001

z

z

xzS

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

93

– Cisalhamento no plano yz na direção y

2.1 Espaços e Transformações

1000

0100

0sh10

0001

yy

yzS

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

94

– Cisalhamento no plano yz na direção z

2.1 Espaços e Transformações

1000

01sh0

0010

0001

z

z

yzS

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

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

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

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

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

97

2.1 Espaços e Transformações

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

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

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

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

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

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

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

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’

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

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’

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

116

2.1 Espaços e Transformações

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

1000

0100

00cossen

00sencos

)(

zR

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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()

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

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

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

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

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

129

2.1 Espaços e Transformações

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

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

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)

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

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

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

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

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

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

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

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]

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

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

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

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

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

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

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

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

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

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

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

140

Definition of Scalar

• Scale – RATIO between the lengths of two

PARALLEL vectors A and B

– RELATIVE LENGTH of vectors

AB

s = Scale

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

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

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

142

Definition of Versor

• Versor – QUOCIENT between two NON-

PARALLEL vectors A and B of EQUAL LENGTH

– RELATIVE ORIENTATION of vectors

A

B

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

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

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

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

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

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

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

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

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

147

Definition of Quaternion

• Geometrical Quotient of two vectors A and B

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

BAB

A QQ

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

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

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

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

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

150

Opposite Quaternions

• The quaternion Q

• has an Opposite quaternion O (Q)B

AQ QQO

B

A

A- A

B

Q

O(Q)

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

151

Opposite Quaternion Properties

))(()(

))(()(

QOAxisQAxis

QOAngleQAngle

A

- A

B

Q

O(Q)

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

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 )(

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

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)

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

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)

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

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

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

156

Square of a Quaternion

• Defined as applying Q twice

C

BA

QQQ2CCA

C

B

B

A

C

A

QQQ

Q

2

2

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

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

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

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

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

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

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

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

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

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

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

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

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

Fim da Aula 14

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

172

Elementary Versors

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

173

Index of Right Quaternions

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

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

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

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

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

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

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

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

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

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

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

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

192

Representation by four coefficients

• Let the representation of P and Q be

• Their composition P Q is

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

193

Representation by four coefficients

• Let the representation of P and Q be

• Their composition P Q is

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

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

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

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

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

196

Quaternion Algebra

• Multiplications of primitive elements

jikki

ikjjk

kjiij

kji

1222

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

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

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

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

*

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

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)

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

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

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

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*

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

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

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

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

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

204

Fórmula de Euler

• Série de Taylor

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

205

Fórmula de Euler

• Série de Taylor

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

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

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

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

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

208

• Decomposition of Rotated vector

Rotation around an axis

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

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

'' //

vuuuvv

vuuuvvuuv

vvv

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

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

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

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

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

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

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

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

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

213

Rotation around an axis

• Therefore = 2

uuwvvuv

wvu

)(

)2cos()sin()cos(

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

22

uW