computação gráfica i - mat.ufc.bresdras/ck090_2007/notasdeaula/capitulo04.pdf · subtração...

Post on 10-Dec-2018

215 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Computação Gráfica IComputação Gráfica I

CRAb – Grupo de Computação Gráfica

Departamento de ComputaçãoUFC

Objetivos

• Estudar – equipamentos, técnicas de programação e conceitos matemáticos

• Para

2

• Para– representação, manipulação e projeção de objetos bi- e tridimensionais

– aplicar a problemas específicos

Sumário do Curso

• Sistemas Gráficos e Modelos• Programação Gráfica• Input e Interação• Objetos Geométricos e Transformações

3

• Objetos Geométricos e Transformações• Visualização• Pintura• Técnicas Discretas• Implementação de um Renderizador

Objetos Geométricos e TransformaçõesTransformações

4.1 Escalares, Pontos e Vetores

4.1.1 A visão geométrica– Ponto

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

– Escalares

5

– 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

4.1 Escalares, Pontos e Vetores

4.1.1 A visão geométrica– Vetores

• Tensores de primeira ordem (arrayunidimensional com 31 componentes)

6

• Têm módulo, direção e sentido• Não têm posição fixa no espaço

4.1 Escalares, Pontos e Vetores

4.1.1 A visão geométrica– Vetores

BC -BC

7

C=0 Vetor nulo

A

B=-ABC

A

Adição vetorial

-BC

A

Subtração vetorial

4.1 Escalares, Pontos e Vetores

4.1.1 A visão geométrica– Adição Ponto-Vetor (Translação do Ponto)

P2

8

P2 =P1 + V

V

P1

4.1 Escalares, Pontos e Vetores

4.1.1 A visão geométrica– Subtração Ponto-Ponto

• Determinação do vetor entre os pontos

P2

9

V=P2 - P1

V

P1

4.1 Escalares, Pontos e Vetores

4.1.2 Geometria livre de coordenadas

(3, 3)

10

(1, 1) 2

2

4.1 Escalares, Pontos e Vetores

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

– Escalares, Pontos e Vetores são elementos

de conjuntos especiais

11

de conjuntos especiais

• Escalares ∈∈∈∈ Campos Escalares

• Vetores ∈∈∈∈ Espaços Vetoriais

• Pontos + Vetores ∈∈∈∈ Espaços Afins

4.1 Escalares, Pontos e Vetores

– 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 . )

12

αααα + ββββ = ββββ + αααα (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)

– 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 = z

4.1 Escalares, Pontos e Vetores

13

Se z ∈∈∈∈ X e x + y = x + z ���� y = zSe z ∈∈∈∈ X e x + y = z + y ���� x = z∃∃∃∃w ∈∈∈∈ X w + x = y∃∃∃∃z ∈∈∈∈ X x + z = yx + y = y + x

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

Propriedades de Um grupo

– Espaço Euclidiano• Espaço vetorial com uma medida de tamanho ou distânciad(x,y) = Sqrt(x . y)

– Espaço Afim

4.1 Escalares, Pontos e Vetores

14

• Extensão do espaço vetorial, incluindo o objeto Ponto

• Inclui as operações– Adição vetor-ponto– Subtração ponto-ponto

4.1 Escalares, Pontos e Vetores

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

• vector u, v;• point p, q;

15

• scalar a, b;

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

– q = p +a*v;

4.1 Escalares, Pontos e Vetores

4.1.5 Tipos Abstratos de Dados geométricos– Escalares: conjunto dos números reais

• Operações de adição e multiplicação

16

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

v = P - Q

P = v + Qv

Q

P

u

vu+v

4.1 Escalares, Pontos e Vetores

4.1.6 Linhas– Lugar geométricos dos pontos gerados

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

17

αααα 0 ααααP0 é um ponto arbitráriod é um vetor arbitrárioαααα é um escalar

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

4.1 Escalares, Pontos e Vetores

4.1.7 Somas afinsP = Q + αααα v– Possível encontrar um ponto R tal quev = R – Q– Assim

18

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

= αααα R + (1 – α)α)α)α)Q= αααα1111 R + αααα2222Q

αααα1111 + αααα2 2 2 2 = 1

vQ

P(αααα)

Rα = 1α = 1α = 1α = 1

α = 0α = 0α = 0α = 0

4.1 Escalares, Pontos e Vetores

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

Pi, i = 1, 2, …, n

19

Pi, i = 1, 2, …, né o conjunto de pontos P definido pela

soma afim dos n pontosP = αααα1P1 + αααα2P2 + … + ααααnPnαααα1+ αααα2+ … + ααααn = 1ααααi > 0, i = 1, 2, …, n

4.1 Escalares, Pontos e Vetores

4.1.9 Produtos escalares e vetoriais

20

4.1 Escalares, Pontos e Vetores

• Dot product = Scalar product (a.b)

2

332211

For aaaba

ba

=⋅⇒=

++=⋅ bababa

21

• Angle between two nonzero vectorsFor aaaba =⋅⇒=

( )

baba

baba

≤⋅

≤≤=⋅

inequality Schwarz-Cauchy

0 ,cos πθθ

4.1 Escalares, Pontos e Vetores

• Scalar multiplication satisfies

( ) ( )( ) cabacba

baba

abba

⋅+⋅=+⋅=⋅=⋅

⋅=⋅

Law) ive(Distribut [c3]

scalar)( [c2]

Law) (Symmetric [c1]

kkk

22

( )

0a0aa

a0aa

cabacba

=⇔=⋅∀≥⋅

⋅+⋅=+⋅

(ii)

(i)

tesemidefini positive istion multiplicaScalar [c4]

Law) ive(Distribut [c3]

4.1 Escalares, Pontos e Vetores

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

( ) ( )θcos)( ab

ba

b

baab =⋅=

⋅=P

23

• Illustration of Pb(a)

bb

Pb(a)

b

a

θ

4.1 Escalares, Pontos e Vetores

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

( ) ( )2

)()(b

bba

b

b

b

bauaaP bbb

⋅=

⋅== P

24

• Illustration of Pb(a)bbb

Pb(a)

b

a

θ

4.1 Escalares, Pontos e Vetores

• Vectors a and b are orthogonal if

( ) ( ) ( )θθθPP

=⇔==⇒

⇒==

0coscos0cos

0)()(

ba

ba ab

25

( ) ( ) ( )

ππθ

θθθ

k±=⇒

=⇔==⇒

2

0coscos0cos ba

θ

Pb(a)

b

a

Pa(b)

4.1 Escalares, Pontos e Vetores

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

if1 jiδ

===⋅ee

26

symbolKronecker thecalled -

if0

if1

ij

ijjiji

ji

δ

δ

≠=

==⋅ee

4.1 Escalares, Pontos e Vetores

Theorem 1.4: Let e1, e2, e3 be an orthonormal basis and let

a = a1e1 + a2e2 + a3e3b = b e + b e + b e . Then

27

b = b1e1 + b2e2 + b3e3. Then

ii

i

ii

ii

a

aaaaa

baaaa

ea

aaa

ba

⋅=

=++=⋅=

=++=⋅

=

=

(iii)

(ii)

bb b (i)

3

1

2

3

2

2

2

1

3

1i

332211

4.1 Escalares, Pontos e Vetores

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

and let

Then (v1, v2, v3) has the same orientation of (u , u , u ) if

∑=

=3

1i

iijj a uv

28

(u1, u2, u3) if

det(aij) > 0

Right-handed basis and opposite orientation Left-handed basis

4.1 Escalares, Pontos e Vetores

• Vector product = a x b

22

11

2

33

11

2

33

22

1222

111

eee

e

e

e

baba

ba

ba

ba

ba

ba

ba

ba

ba

+−==×

29

( ) ( ) ( ) 312212311312332

223333

333

eeeba

e

babababababa

babababa

−+−+−=×

4.1 Escalares, Pontos e Vetores

• Theorem 1.5

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

and a) )(

),( wheresin )(

bababa

bbaaba

bababa

×≠×⊥×⊥×

∠==×

ii

i θθ

30

• Theorem 1.6

( )t tripletindependenlinearly

handed-right a is ,, then ,0 If b) bababa ×≠×

dependentlinearly are and ifonly and if ba0ba =×

4.1 Escalares, Pontos e Vetores

• Vector products satisfies[ ] ( )[ ] ( ) ( )[ ] ( ) ( )Law veDistributi

Law ativeAnticommut

2

1

1

cabacba

abba

abba

×+×=+××−=×

×−=×

E

E

E

31

[ ] ( ) ( )[ ] ( ) ( ) ( )[ ]

( ) ( )

:Note

scalar

Law veDistributi

4

3

2

cbacba

0aa

baba

cabacba

××≠××=×

=×=××+×=+×

E

kkkE

E

4.1 Escalares, Pontos e Vetores

• Triple scalar product: a����bxc

222

111

cba =×⋅ cba

cbaa b

c

32

( ) ( ) ( )[ ]

333

cbacbaabc

abccabbca

bacacbcba

⋅×=×⋅=×⋅−=×⋅−=×⋅−=

=×⋅=×⋅=×⋅

cbac

4.1 Escalares, Pontos e Vetores

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

• Theorem 1.8:

( ) ( ) ( )⋅−⋅=××

33

( ) ( ) ( )[ ] ( ) ( ) ( )( ) ( )( )[ ] ( ) ( ) [ ] [ ]

F

F

2

1

dabccabddcba

cbdadbcadcba

cbabcacba

−=×××⋅⋅−⋅⋅=×⋅×

⋅−⋅=××

4.1 Escalares, Pontos e Vetores

4.1.10 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 ≤≤≤≤ β β β β ≤≤≤≤ 1

R

34

T(ββββ) = ((((1 −−−− β)β)β)β) S + β β β β R, 0 ≤≤≤≤ β β β β ≤≤≤≤ 1T(α,ββββ) = ((((1 −−−− β)β)β)β) S + ββββ R= P0+α (α (α (α (1−−−−β)(β)(β)(β)(Q-P0))))+β(β(β(β(R-P0))))T(α,ββββ) = P0 + αααα’u + ββββ’v ∈∈∈∈∆∆∆∆P0QR

– Se P está no plano, entãoP – P0 = αααα’u + ββββ’vn . (P – P0 ) = (u x v) . (P – P0 ) = 0

S(α)P0 Q

T(α, β)

n

4.2 Primitivas Tridimensionais

• Assumir– Objetos descritos por suas superfícies– Considerar objetos como ocos – Objetos descritos por um conjunto de

35

– Objetos descritos por um conjunto de vértices

– Superfície pode ser aproximada por polígonos convexos

4.3 Sistemas de Coordenadas e Frames

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

conjunto de vetores LI (base)v2

36

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

P0 v1v3

4.3 Sistemas de Coordenadas e Frames

4.3.1 Representações e n-tuplasSuponha que e1, e2, e3 formam uma basev = αααα1e1 + αααα2e2 + αααα3e3v = (αααα1, αααα2, αααα3) (representação 3-tupla)

37

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

4.3 Sistemas de Coordenadas e Frames

4.3.2 Mudanças de sistemas de coordenadasu1 = γγγγ11111111v1 + γγγγ12121212v2 + γγγγ13131313v3u2 = γγγγ21212121v1 + γγγγ22222222v2 + γγγγ23232323v3

38

u2 = γγγγ21212121v1 + γγγγ22222222v2 + γγγγ23232323v3u3 = γγγγ31313131v1 + γγγγ32323232v2 + γγγγ33333333v3

u1 γγγγ11111111 γγγγ12121212 γγγγ13131313 v1 v1u2 = γγγγ21212121 γγγγ22222222 γγγγ23232323 v2 = M v2u3 γγγγ31313131 γγγγ32323232 γγγγ33333333 v3 v3

4.3 Sistemas de Coordenadas e Frames

4.3.2 Mudanças de sistemas de coordenadasw = αααα1111v1 + αααα2222v2 + αααα3333v3w = ββββ1111u1 + ββββ2222u2 + ββββ3333u3

v1 v1 a =MT b

39

v1 v1w = αααα1111 αααα2222 αααα3333 v2 = aT v2

v3 v3u1 u1 v1

w = ββββ1111 ββββ2222 ββββ3333 u2 = bT u2 = bTM v2u3 u3 v3

a =MT b

4.3 Sistemas de Coordenadas e Frames

4.3.3 Exemplo de mudança de representação v2

u1u2

θ2

1

2

1

100

0cossin

0sincos

v

v

v

u

u

u

−=

θθθθ

40

v1

v3

θ

( ) ( ) 321

3

2

1

3

2

1

321

33

4sincos2sin2cos

100

0cossin

0sincos

421

421421

100

uuuw

u

u

u

w

v

v

v

vvvw

vu

+−++=

−=

=++=

θθθθ

θθθθ

4.3 Sistemas de Coordenadas e Frames

4.3.4 Coordenadas homogêneas– Ponto

+++=

1

3210

v

vvvPP zyx

41

– Vetor

[ ]

=

0

3

2 1

P

v

vP zyx

[ ]

=

0

3

2

1

321 0

P

v

v

v

w δδδ

4.3 Sistemas de Coordenadas e Frames

4.3.5 Exemplo de mudança de frames

v2

u2 = v1 + v2

u3=v1 + v2 + v3A

42

v1

v3

u3=v1 + v2 + v3

u1 = v1Q0

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

A = Q0 + αααα u1 + ββββ u2 + γγγγ u3

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

4.3 Sistemas de Coordenadas e Frames

=

11

3

2

1

3

2

1

0011

0001

111

011

001

v

v

v

v

v

v

v

u

u

u

43

=

+

=

0

3

2

1

0

3

2

0

3

2

1011

1000

0111

0011015.011

P

v

v

v

A

P

v

v

P

v

vA γβα

4.3 Sistemas de Coordenadas e Frames

+

=

10.0011110010011

01000

0100

0110

0111

1

5.0

1

1

1

0

1

1

α

γβα

44

−=

−−−

=

−−

−=

0

5.0

5.0

0

0

1

0

1

0000

5.0100

5.0110

1

0

1

0000

5.0100

1010

1000

0100

0110

0

γβα

γβ

4.3 Sistemas de Coordenadas e Frames

4.3.6 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}

45

{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

4.3 Sistemas de Coordenadas e Frames

– Assim

[ ] [ ]

[ ] [ ]

==

==

==

0100

0010

0001

00

00

0

1

0

00

0

0

1

j

i

j

i

j

i

j

ik

j

i

k

j

i

q

q

q

w

w

w

v

v

v

u

u

u

qw

v

v

v

u

u

u

DD

vDuD

46

[ ] [ ]

[ ] [ ]

==

==

10001000

0100

11

0

0

0

00

1

0

0

0

kkkk

k

j

i

k

j

i qwvu

q

q

q

w

w

w

QDwD

[ ] [ ]

1

1

1000

==k

j

i

k

j

i

k

j

i

k

j

i

q

q

q

w

w

w

v

v

v

u

u

u

DC

4.3 Sistemas de Coordenadas e Frames

– Aplicando ao exemplo anterior

[ ] [ ]

−−−

=

==

5.0100

5.0110

0011

5.0

1

1

1

1

1

0

1

1

0

0

11

1DC

47

1000

5.0100

1

5.0

0

1

0

0

0

0

4.3 Sistemas de Coordenadas e Frames

4.3.7 Frames e tipos abstratos de dadospoint3 p, q;vector3 v;frame f;

48

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

4.3 Sistemas de Coordenadas e Frames

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

• Default: coincide com o frame do cenáriox

49

• Default: coincide com o frame do cenário

-zc

xc=xw

yc=ywzc=zw

w

xw

yw

zw

c

zc

xc

ycCâmera

4.4 Modelando um Cubo Colorido

4.4.1 Modelagem de um cubo– 8 vértices:

• GLfloat vertices[8][3]; ou• point3 vertices[8];

50

– 6 faces:• glBegin(GL_POLYGON);

4

7

65

3

21

4.4 Modelando um Cubo Colorido

4.4.2 Faces voltadas para dentro e para fora– Obedecer regra da mão-direita

51

4

7

65

3

21

4.4 Modelando um Cubo Colorido

4.4.3 Estruturas de dados para representação de objetos– Cubo é um poliedro composto de

• 6 faces, cada uma das quais composta de

52

– 4 arestas, cada uma das quais ligadas a » 2 vértices

4.4 Modelando um Cubo Colorido

4 3E4

E3E2

Cubo F1

F2

E11 E2 E10 E6

E4 E1 E2 E3

FACES

53

8 7

65

21

E6

E5

E4 E2E1

E12 E11

E10E9

E8E7

F2

F3

F4

F5

F6

E4 E1 E2 E3

E10 E1 E9 E5

E9 E4 E12 E8

E6 E5 E8 E7

E12 E3 E11 E7

OBS: Pode-se definir uma face como uma seqüência de vértices. F1: 7 3 2 6

4.4 Modelando um Cubo Colorido

4 3E3

E1

E2

E3

E4

E5

V1 V2

V3 V2

V4 V3

V4 V1

V5 V6

V1

V2

V3

V4

V5

-1

1

1

-1

-1

1

1

1

1

-1

1

1

-1

-1

1

ARESTAS VÉRTICES

54

8

4

7

65

3

21

E6

E5

E4 E2E1

E12 E11

E10E9

E8E7

E5

E6

E7

E8

E9

E10

E11

E12

V5 V6

V7 V6

V8 V7

V8 V5

V5 V1

V6 V2

V7 V3

V8 V4

V5

V6

V7

V8

-1

1

1

-1

-1

-1

-1

-1

1

1

-1

-1

4.4 Modelando um Cubo Colorido

4.4.4 O cubo de corestypedef GLfloat point3[3];point3 vertices[8] = { {-1.0, 1.0, 1.0}, { 1.0, 1.0, 1.0},

{ 1.0, 1.0,-1.0}, {-1.0, 1.0,-1.0},{-1.0,-1.0, 1.0}, { 1.0,-1.0, 1.0},

55

{-1.0,-1.0, 1.0}, { 1.0,-1.0, 1.0},{ 1.0,-1.0,-1.0}, {-1.0,-1.0,-1.0}};

GLfloat colors[8][3] = {{0.0, 0.0, 0.0}, {1.0, 0.0, 0.0},{1.0, 1.0, 0.0}, {0.0, 1.0, 0.0},{0.0, 0.0, 1.0}, {1.0, 0.0, 1.0},{ 1.0, 1.0, 1.0}, {0.0, 1.0, 1.0}};

4.4 Modelando um Cubo Colorido

void quad(int a, int b, int c, int d){

glBegin(GL_QUADS);glColor3fv(colors[a]);glVertex3fv(vertices[a];glColor3fv(colors[b]);

56

glColor3fv(colors[b]);glVertex3fv(vertices[b];glColor3fv(colors[c]);glVertex3fv(vertices[c];glColor3fv(colors[d]);glVertex3fv(vertices[d];

glEnd();}

4.4 Modelando um Cubo Colorido

void colorcube(void){

quad(6, 2, 1, 5);quad(3, 0, 1, 2);quad(5, 1, 0, 4);quad(4, 0, 3, 7);

57

quad(4, 0, 3, 7);quad(6, 5, 4, 7);quad(7, 3, 2, 6);

}

Código Fonte

Código Exec

4.4 Modelando um Cubo Colorido

4.4.5 Interpolação bilinearc1

c2c4

c45C01(α)=(1-α)C0 + αC1

58

c0

c3

c45

c5

C23(α)=(1-α)C2 + αC3

C45(β)=(1-β)C4 + βC5

4.4 Modelando um Cubo Colorido

4.4.6 Arrays de vértices– Encapsula informação da estrutura de

dados– Permite traçar poliedros com poucas

59

– Permite traçar poliedros com poucas chamadas de funções

– Tipos de arrays permitidos no OpenGL

• vertex • normal

• color • texture coordinate

• color index • edge flag

4.4 Modelando um Cubo Colorido

– Habilitação dos arrays• glEnableClientState(GL_COLOR_ARRAY);• glEnableClientState(GL_VERTEX_ARRAY);

– Os arrays do cubo já foram definidos • vertices

60

• Colors

– Estabelecer ponteiros para os arrays• glVertexPointer(3, GL_FLOAT, 0, vertices);

– 3: número de coordenadas por vértice– GL_FLOAT: tipo de cada elemento no array– 0: offset em bytes entre vértices consecutivos– vertices: ponteiro para o array de vértices

4.4 Modelando um Cubo Colorido

• glColorPointer(3, GL_FLOAT, 0, colors);– 3: número de coordenadas por vértice– GL_FLOAT: tipo de cada elemento no array– 0: offset em bytes entre vértices consecutivos– colors: ponteiro para o array de cores

– Fornecer informação da estrutura de dados

61

– Fornecer informação da estrutura de dados• GLubyte cubeIndices[24] = {6, 2, 1, 5,

3, 0, 1, 2,5, 1, 0, 4,4, 0, 3, 7,6, 5, 4, 7,7, 3, 2, 6};

4.4 Modelando um Cubo Colorido

– Desenhar o arraysfor (i=0; i < 6; i++)

glDrawElements(GL_POLYGON, 4, GL_UNSIGNED_BYTE, &cubeIndices[4*i]);

Ou

62

OuglDrawElements(GL_QUADS, 24,

GL_UNSIGNED_BYTE, cubeIndices);

4.5 Transformações Afins (A17)

• Transformação de um ponto P em QQ = T(P)

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

63

v = 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)

4.5 Transformações Afins (A17)

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

• Conhecendo a transformação de vértices

64

• 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]

4.5 Transformações Afins (A17)

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

–Matriz Vetor Ponto

pvaaaa

65

=

=

=

1

0

1000

3

2

1

3

2

1

34333231

24232221

14131211

p

p

p

v

v

v

aaaa

aaaa

aaaa

PvA

4.5 Transformações Afins (A17)

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

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

66

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

4.6 Translação, Rotação e Escala (A17)

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

P’ = P + tx’ = x + tx

67

x’ = x + txy’ = y + tyz’ = z + tz P

P’t

y

4.6 Translação, Rotação e Escala

• Translação– Somar o vetor de translação t = (tx, ty, tz)aos vértices para reposicionar objetos

68

P’ = P + t

x’ = x + tx

y’ = y + ty

z’ = z + tz

x

y

t = ( tx, ty, tz)

P = (x, y, z)

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

4.6 Translação, Rotação e Escala

4.6.2 Rotaçãovértice P em coordenadas polares (r, αααα) irá para posição P’ = (r, α+α+α+α+θθθθ)θθθθ > 0 : rotação em sentido anti-horário

69

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

ei

P = ( r, α )

P’ = ( r, α + θ ) ej

α

θr

r

4.6 Translação, Rotação e Escala

• Rotação em torno do eixo x– Coordenadas na forma polar:y’ = r cos ( α + θα + θα + θα + θ ) y = r cos ααααz’ = r sen ( α + θα + θα + θα + θ ) z = r sen αααα

– Mas: x y

zθθθθx

70

– 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 θθθθ

4.6 Translação, Rotação e Escala

Rotação em torno do eixo x

−=

y

x

seny

x

xx θθcos0

001

'

'

71

−=

z

y

sen

sen

z

y

xx

xx

θθθθ

cos0

cos0

'

'

4.6 Translação, Rotação e Escala

• Rotação em torno do eixo y– Coordenadas na forma polar:z’ = r cos ( α + θα + θα + θα + θ ) z = r cos ααααx’ = r sen ( α + θα + θα + θα + θ ) x = r sen αααα

– Mas: y z

xθθθθy

72

– 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 θθθθ

4.6 Translação, Rotação e Escala

Rotação em torno do eixo y

=

y

xsen

y

x yy θθ010

0cos

'

'

73

−=

z

y

senz

y

yy θθ cos0

010

'

'

4.6 Translação, Rotação e Escala

• Rotação em torno do eixo z– Coordenadas na forma polar:x’ = r cos ( α + θα + θα + θα + θ ) x = r cos ααααy’ = r sen ( α + θα + θα + θα + θ ) y = r sen αααα

– Mas: z x

yθθθθz

74

– 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 θθθθ

4.6 Translação, Rotação e Escala

Rotação em torno do eixo z

=

y

x

sen

sen

y

x

zz

zz

0cos

0cos

'

'

θθθθ

75

=

z

ysen

z

y zz

100

0cos

'

' θθ

4.6 Translação, Rotação e Escala

• Rotação em torno de um eixo // z passando pelo pivô, (xR, yR) vértice (x, y) irá para posição (x’, y’)

76x

y

(xR, yR)

P = ( r, α )

P’ = ( r, α + θ )

α

θr

r

4.6 Translação, Rotação e Escala

• Rotação em torno do eixo //z pelo pivô, (xR,yR, zR) Equivale a – Translação para a origem ( 0, 0, 0 )

77

– Translação para a origem ( 0, 0, 0 )– Rotação em relação ao eixo z– Translação de volta para (xR,yR, zR)

4.6 Translação, Rotação e Escala

• Rotação em torno de eixo // z pelo pivô (xR, yR)x’ = (x - xR) . cos θθθθ - (y - yR) . sen θθθθ + xRy’ = (y - yR) . cos θθθθ + (x - xR) . sen θθθθ + yR

78

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

+

−−

−=

R

R

R

R

y

x

yy

xx

sen

sen

y

x

θθθθ

cos

cos

'

'

4.6 Translação, Rotação e Escala

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

– implementações adaptadas à geometria do

79

– implementações adaptadas à geometria do objeto

• Exemplos – Círculos

• rotação ou translação: usar coordenadas do centro, e

• escala: amplificar os raios

4.6 Translação, Rotação e Escala

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

80

P1

P2

P3P4

– transformação: usar coordenadas de definição da curva (Pontos de controle)

4.6 Translação, Rotação e Escala

4.6.3 Escala– É uma transformação afim que altera a forma do objeto (non-rigid-body)

–Multiplicar os valores das coordenadas por

81

–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

4.6 Translação, Rotação e Escala

• Efeito da transformação de escala–mudança do tamanho do objeto – deslocamento do objeto– distorção se sx != sy

82

x

y

– distorção se sx != sy

4.6 Translação, Rotação e Escala

• Escala relativa a um ponto fixo, PfPf = ( xf, yf ) – se ( xf, yf ) for centróide →→→→ objeto não move

83

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

x

y

centróide

4.6 Translação, Rotação e Escala

• Coordenadas do centróide

∫=== V

cV

cV

cdV

zdV

zdV

ydA

ydV

xdV

x e ,

84

∫∫∫VVV

dVdVdV

+

+=

+

++=

HBHB

HBH

HBH

y

HBHB

HBB

BHBB

x

c

c

21

21

21

22

111

2

1)(

2

1

3)(

2

2

1)(

2

1

3)(

2

B1 B2

H

H/3 H/2

B1/2 B2/3

4.6 Translação, Rotação e Escala

• Escala relativa a um ponto fixo, Pfx’ = ( x −−−− xf ) . sx + xfy’ = ( y −−−− yf ) . sy + yfz’ = ( z −−−− zf ) . sz + zf

85

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)

4.7 Transformações em Coordenadas Homogêneas (A17)

• Usando-se coordenadas homogêneas, as transformações geométricas são escritas como

+++=

' xx

86

+++

+++

+++

===

=

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

4.7 Transformações em Coordenadas Homogêneas (A17)

4.7.1 Translação–Matriz de Translação

010

001

yt

xt

87

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

=

1000

100

010

zt

ytT

4.7 Transformações em Coordenadas Homogêneas (A17)

4.7.2 Escala–Matriz de Escala em relação a um ponto fixo, F ( )

( )

−−

=100

100

Fyy

Fxx

ySS

xSS

88

– A escala é uniforme quando Sx = Sy = Sz

– Forma inversa S-1 com

( )( )

−−

=

1000

100

100

Fzz

Fyy

zSS

ySSS

z

z

y

y

x

xS

SS

SS

S1

',1

',1

' →→→

4.7 Transformações em Coordenadas Homogêneas (A17)

4.7.3 Rotação– Em 3D, as rotações podem ser sobre qualquer reta

– As rotações mais simples são sobre os eixos de coordenadas

89

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

4.7 Transformações em Coordenadas Homogêneas (A17)

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

−=

0cos0

0cos0

0001

xx

xx

xsen

sen

θθθθ

Rx

y

θx

90

– Rotações sobre os outros dois eixos são obtidas com permutação cíclicax →→→→ y →→→→ z →→→→ x

1000

0cos0 xxsen θθ

z

x

4.7 Transformações em Coordenadas Homogêneas (A17)

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

−=

0cos0

0010

00cos

yy

yy

ysen

sen

θθ

θθ

R

x

y

θy

91

−1000

0cos0 yysen θθ

z

x

4.7 Transformações em Coordenadas Homogêneas (A17)

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

=0100

00cos

00cos

zz

zz

z

sen

sen

θθθθ

R

x

y

92

1000

0100

z

xθz

4.7 Transformações em Coordenadas Homogêneas (A17)

– Obtém-se a inversa de Rx, Ry ou Rz comθθθθ →→→→ - θθθθcomo • cos(-θθθθ) = cos(θθθθ)

93

• sen(-θθθθ) = - sen(θθθθ),

R-1 = RT

– R são matrizes ortonormais

4.7 Transformações em Coordenadas Homogêneas (A17)

– 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

94

• 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

4.7.4 Cisalhamento (Shear)– Cisalhamento no plano xy na direção xx’ = x+∆∆∆∆x = x + tg(γγγγ)y = x + shxyy’ = y

4.7 Transformações em Coordenadas Homogêneas (A17)

95

y’ = yz’ = z y

x

yp

xp

P

y

x

yp’

P’

xp ∆∆∆∆x

∆∆∆∆x

– Cisalhamento no plano xy na direção x

4.7 Transformações em Coordenadas Homogêneas (A17)

=0100

0010

00sh1 x

x

xyS

96

1000

0100xy

– Cisalhamento no plano xy na direção yx’ = xy’ = y+∆∆∆∆y = y + tg(γγγγ)x = y + shyxz’ = z

4.7 Transformações em Coordenadas Homogêneas (A17)

y y

97

z’ = zy

xxp

yp

P

x

y

xp’

P’

yp

∆∆∆∆y

∆∆∆∆y

– Cisalhamento no plano xy na direção y

4.7 Transformações em Coordenadas Homogêneas (A17)

=0100

001sh

0001

yy

xyS

98

1000

0100xy

– Cisalhamento no plano xz na direção x

4.7 Transformações em Coordenadas Homogêneas (A17)

=0100

0010

0sh01 x

x

xzS

99

1000

0100xz

– Cisalhamento no plano xz na direção z

4.7 Transformações em Coordenadas Homogêneas (A17)

=010sh

0010

0001

z

xzS

100

1000

010sh zxz

– Cisalhamento no plano yz na direção y

4.7 Transformações em Coordenadas Homogêneas (A17)

=0100

0sh10

0001

yy

yzS

101

1000

0100yz

– Cisalhamento no plano yz na direção z

4.7 Transformações em Coordenadas Homogêneas (A17)

=01sh0

0010

0001

z

yzS

102

1000

01sh0 zyz

4.7 Transformações em Coordenadas Homogêneas (A17)

4.7.5 Outras Transformações– Reflexão: imagem de objeto em relação a um plano

– Espelho xz: y →→→→ - y

001

103

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

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

−=100

010S

−=

100

010

001

S

4.7 Transformações em Coordenadas Homogêneas (A17)

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

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

−=

100

010

001

S

104

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

( )( )

( )( )

−−−−−−−−−

=

−=−=′

332313

322212

312111

2122

2212

2221

2)(2

nnnnnn

nnnnnn

nnnnnn

S

PnnnnPPP

n

kkiikikkii δ

P

P’ n

x

y

4.7 Transformações em Coordenadas Homogêneas (A17)

–Reflexão relativa à origem: x →→→→ - x e y →→→→ - y• Equivale a sx = -1, sy = -1

105

4.7 Transformações em Coordenadas Homogêneas (A17)

Transformações entre sistemas de coordenadas

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

106

– 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

4.7 Transformações em Coordenadas Homogêneas (A17)

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

+′=′ OO PP

107

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

4.7 Transformações em Coordenadas Homogêneas (A17)

• 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

108

x y z

=′

=′

=′

=′

′′′

′′′

′′′

1

P

P

P

1000

0

0

0

z

y

x

zzz

yyy

xxx

z

z

z

y

y

y

x

x

x

nml

nml

nml

n

m

l

n

m

l

n

m

l

P

kji

x’

x

y’y P

z

z’

4.7 Transformações em Coordenadas Homogêneas (A17)

• Assim

=

=

′′′

′′′

′′′

′′′

′′′

′′′

0

0

0

0

1

0

0

0

0

0

0

1

y

y

y

zzz

yyy

xxx

x

x

x

zzz

yyy

xxx

n

m

l

nml

nml

nml

n

m

l

nml

nml

nml

x’

x

y’y P

zz’

109

=

′′′

′′′

′′′

′′′′′′′′

11000

0

0

0

1

1

0

0

11000

0

1

0

11000

0

1

0

z

z

z

zzz

yyy

xxx

yzzzxzzz

n

m

l

nml

nml

nml

nnmlnnml

Como T é ortonormal

T-1=TT

P’=T.P e P =TT.P’

4.8 Concatenação de Transformações (A18)

4.8.1 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

110

• 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

4.8 Concatenação de Transformações (A18)

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

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

111

4.8 Concatenação de Transformações (A18)

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

112

– Aplicar transformações para a forma desejada

4.8 Concatenação de Transformações (A18)

4.8.4 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

y

zx

p1

p2θ

113

• 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

z

4.8 Concatenação de Transformações (A18)

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

114

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

4.8 Concatenação de Transformações (A18)

– Rotação sobre um eixo arbitrário

y(2)

y(1)

yInício

p2

115

y

z x

z x

y

z x

(5)

z x

(4)y

z x

(3)

θ

z xp1

4.8 Concatenação de Transformações (A18)

– 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(V zzyyxx −−−=yp2

116

||12,

||12,

||12

),,(||

121212

VVV

V

Vu

zzc

yyb

xxa

cba

−=

−=

−=

==

z x

p1

p2

4.8 Concatenação de Transformações (A18)

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

−0011

x

y

p

117

=

1

100

010

001

0001

1

1

z

y

x

Tz xp1

p2

4.8 Concatenação de Transformações (A18)

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

y

118

(0, b, c) =

( )22 cb,0,a +=′′û

û =(a, b, c)û’

x

y

z

θθθθx

4.8 Concatenação de Transformações (A18)

– determinar ângulo θθθθx entre û’ e k• Encontre o cos θθθθx

22

1|'ˆ|'ˆ

coscos|||ˆ|'ˆdc

xx' =⋅=⇒=⋅u

kukuku θθ

119

• Encontre o sen θθθθx

22|'ˆ| onde cbd +== u

d

b

d

cd

d

cxsen =−=−=

2

2221θ

4.8 Concatenação de Transformações (A18)

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

−=

01

0001

)(dbdc

xx θR

120

=

1000

00

)(dcdb

xx θR

4.8 Concatenação de Transformações (A18)

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

y

121

( )22 cb,0,a +=′′û

û =(a, b, c)

x

y

z θθθθy

– determinar ângulo θθθθy entre û” e k• Encontre o cos θθθθy

da

dy

+=⋅=θ

22|||''ˆ|''ˆ

coskuku

4.8 Concatenação de Transformações (A18)

122

• Encontre o sen θθθθy

dycbada =⇒=++=+ θcos122222 mas

ay

senaysen −=−⇒=

θθ

4.8 Concatenação de Transformações (A18)

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

=− 0010

00

)(

ad

yy θR

123

=−

1000

00)(

dayy θR

4.8 Concatenação de Transformações (A18)

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

=00cossen

00sencos

)(θθθθ

θR

124

=

1000

0100

00cossen)(

θθθzR

4.8 Concatenação de Transformações (A18)

– 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

125

– Assim a Rotação em torno do eixo P1P2( ) ( ) ( ) ( ) ( ) ( ) ( )11 PTRRRRRPTM −−−= xxyyzyyxx θθθθθ

=

1000

0333231

0232221

0131211

rrr

rrr

rrr

M

4.8 Concatenação de Transformações (A18)

– 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

126

• 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

4.9 Matrizes de Transformação no OpenGL (A19)

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

montagem– É uma matriz 4 x 4– Inicializada como a matriz identidade

127

– Inicializada como a matriz identidade– Modificada por pós-multiplicação de

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

4.9 Matrizes de Transformação no OpenGL (A19)

– 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

128

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

=

161284

151173

141062

13951

mmmm

mmmm

mmmm

mmmm

M

4.9 Matrizes de Transformação no OpenGL (A19)

– 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

129

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

=

161284

151173

141062

13951

mmmm

mmmm

mmmm

mmmm

M

4.9 Matrizes de Transformação no OpenGL (A19)

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

130

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

modos

• C ←←←← CProjectionCModel_View

vértices CModel_View CProjection vértices

4.9 Matrizes de Transformação no OpenGL (A19)

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

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

131

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

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

4.9 Matrizes de Transformação no OpenGL (A19)

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

glMatrixMode(GL_MODELVIEW);glLoadIdentity();

y QQ

2

132

glTranslatef(Px, Py, Pz);glRotatef(ângulo, vx, vy, vz);glTranslate(-Px, -Py, -Pz);

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

zx

PP 1

3

4.9 Matrizes de Transformação no OpenGL (A19)

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

transformações• C ←←←← CMn

• C ←←←← CM…

M2

M1

Desempilhar

133

• C ←←←← CMn-1

• …• C ←←←← CM2

• C ←←←← CM1

Mn

Mn-1

v’ = MnMn-1…M2M1 v444 3444 21

C

Desempilhar

Pilha

4.9 Matrizes de Transformação no OpenGL (A19)

4.9.5 Rotação de um cubo sem translação– Funções Callback

• glutDisplayFunc(display)

134

• glutIdleFunc(spincube)• glutMouseFunc(mouse)• glutKeybordFunc(keyboard)

4.9 Matrizes de Transformação no OpenGL (A19)

– Função display• Aplica as matrizes de rotação em torno dos

eixos x y e z

– Função spincube• Incrementa o ângulo de rotação em torno do

135

• Incrementa o ângulo de rotação em torno do eixo selecionado e chama display

– Função mouse• Seleciona o eixo de rotação

– Função keyboard• Encerra o programa pressionando ‘q’ ou ‘Q’Código Fonte Código Exec

4.9 Matrizes de Transformação no OpenGL (A19)

4.9.6 Loading, pushing, e popping de matrizes– Loading matix M como matriz corrente

• glLoadMatrixf(M);

136

– Salvando a matriz corrente na pilha• glPushMatrix()

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

4.10 Interfaces para Aplicações 3D (A19)

4.10.1 Usando áreas do screen– Motion callback retorna: botão ativado e

posição do mouse– Botão esquerdo pressionado

• Mouse no centro: nenhuma rotação

137

• Mouse no centro: nenhuma rotação• Mouse movendo para cima: rotação y+• Mouse movendo para baixo: rotação y-• Mouse movendo para direita: rotação x+• Mouse movendo para esquerda: rotação x-• Mouse movendo para os cantos: rotação

combinada x y

4.10 Interfaces para Aplicações 3D (A19)

– Botão direito pressionado• Mouse no centro: nenhuma translação• Mouse movendo para cima: translação y+• Mouse movendo para baixo: translação y-• Mouse movendo para direita: translação x+

138

• Mouse movendo para direita: translação x+• Mouse movendo para esquerda: translação x-• Mouse movendo para os cantos: translação

combinada x y– Botão do meio pressionado

• Mouse movendo para direita: translação z+• Mouse movendo para esquerda: translação z-

4.10 Interfaces para Aplicações 3D (A19)

– Velocidade do movimento• Quanto mais longe do centro mais rápido o

movimento

Código Fonte

139

Código Fonte

Código Exec

4.10 Interfaces para Aplicações 3D (A19)

4.10.2 Uma Trackball virtual– Dada uma posição (x, z) no plano

• Calcule o ponto no hemisfério

y221 zxy −−=

140

x

y

z

(x, y, z)

(x, 0, z)

221 zxy −−=

4.10 Interfaces para Aplicações 3D (A19)

4.10.2 Uma Trackball virtual– Primeiro clique no botão do mouse

• Define ponto P1 no hemisfério

– Mouse move, liberar botão y

141

– Mouse move, liberar botão• Define ponto P2 no hemisfério

– Calcula vetor normal • n = P1 x P2

x

y

z

P1

(x, 0, z)

P2

nCódigo Fonte

Código Exec

4.10 Interfaces para Aplicações 3D (A19)

4.10.3 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

142

4.10 Interfaces para Aplicações 3D (A19)

– 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=(θθθθ , θθθθ , θθθθ ): Ângulos de Euler

143

– 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

4.10 Interfaces para Aplicações 3D (A19)

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

144

4.10 Interfaces para Aplicações 3D (A19)

4.10.4 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

145

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

4.11 Quaternions (A19)

146

Introduction

• Quaternions are commonly used to represent rotations

• They were introduced by William Hamilton (1805-1865) [1]

147

Hamilton (1805-1865) [1]• Quaternions were conceived as Geometrical Operators

• A Complete Calculus of Quaternions was introduced by Hamilton [2]

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

148

– Example: point N with respect to M

M

N

Hamilton’s Motivation for Quaternions

• Create a Mathematical Concept to represent

– RELATIONSHIP between two VECTORS

149

– Similar to the way a Vector represents

• RELATIONSHIP between two POINTS

Vector applied to Point

• Given – Point M and

– Vector V

• Application of V

M

V

150

• Application of Vover M results in

– Unique Point N

N

M V

Quaternion applied to Vector

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

V

Q

151

– Quaternion Q

• Application of Q over V results in – Unique VectorW Q

V W

Quatenion Rationale

• Vector is completely defined by– Length– Orientation

• To define a vector in terms of another

152

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

Definition of Scalar

• Scale – RATIO between the lengths of two PARALLEL vectors A and B

153

– RELATIVE LENGTH of vectors

AB

s = Scale

Scalar - Vector Operations

• S is the Quotient between two

PARALLEL vectors A and BB

A=S

BBA

BA sS ==◊=

154

• A Scalar is an Operator that

– Changes the SCALE of the vector

– Keeps its orientation unchanged

BBB

BA sS ==◊=

Definition of Versor

• Versor – QUOCIENT between two NON-PARALLELvectors A and B of EQUAL LENGTH

A

155

– RELATIVE ORIENTATION of vectors

A

B

Versor - Vector Operations

• V is the Geometric Quotient between

two NON-PARALLEL vectors of EQUAL

LENGTH A and B

B

A=V

156

• A Versor is an Operator that

– Changes the ORIENTATION of the vector

– Keeps its LENGTH unchanged

BA ◊= V

Right Versors

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

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

157

any other Versor application

A

B

V

Composing Versors

• Versor composition is the consecutive application of two versors operators

158

A

B

V2

V1

C

V3

123

312

1

2

VVV

VVV

V

V

◊=◊=◊◊=

◊=◊=

CCA

CB

BA

Composing Right Versors

A

B

V

- B

VV

VVV

V

◊=−◊◊=◊=−

◊=

1

BAB

BA

159

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

– Inverts the direction of a vector

BVV◊=−1

Definition of Quaternion

• Geometrical Quotient of two vectors A and B

BAB

A◊=⇔= QQ

160

• Operating on a vector, changes its

– ORIENTATION – LENGTH

B

Quaternion Characteristics

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

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

161

the quotient

• Index(Q) = In a Right Quaternion is the Axis(Q) multiplied by the

length ratio of the two vectors in the quotient

Representation of Quaternions

• Quaternion = “A set of Four”• From

– the Latin Quaternio– the Greek τετρακτυς (ΤΕΤΡΑΚΤΥΣ)τετρακτυς (ΤΕΤΡΑΚΤΥΣ)τετρακτυς (ΤΕΤΡΑΚΤΥΣ)τετρακτυς (ΤΕΤΡΑΚΤΥΣ)

• The combined operation of Scalar and Versor

162

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

• Quaternion = Scalar ���� Versor

Opposite Quaternions

• The quaternion Q • has an Opposite quaternion O (Q)

B

A=Q ( ) QQO −=

−=

B

A

163

B=Q ( ) QQO −==

B

A- A

B

Q

O(Q)

Opposite Quaternion Properties

))(()(

))(()(

QOAxisQAxis

QOAngleQAngle

−==+ π

164

Q

O(Q)

Reciprocal Quaternions

• The quaternion Q:

• Reciprocal of Q:• Composition

BAB

A◊=⇒= QQ

ABA

B◊=⇒== −− 11)( QQQR

165

• Composition

(1) is an Identity Operator

A

B

QR(Q)

1=◊QQR )(

Conjugate Quaternion

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

• Geometric reflection of vector B over

166

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

BAB

A◊=⇒= QQC BA

QK(Q)

Conjugate Quaternion

• Conjugate Quaternion K(Q)=A/C

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

167

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

CAC

A◊=⇒= )()( QKQKC BA

QK(Q)

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

168

– 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

Square of a Quaternion

• Defined as applying Q twice

BA

C

B

B

A

C

A

◊◊=◊=

==Q2

169

CQQ

Q2CCA ◊◊=◊= QQQ2

Composing Right Quaternions

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

170

A- A

B

QQ

AC

B

QQ

Composing Right Quaternions

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

B B

QQ

171

A- A

QQ

AC

QQ

)(

1

2

AA

A

A

A

B

◊◊=−

−=−

=

QQ AC

A

B

A

B

A

C

2

22

Q=

−=

=

Versor of a Quaternion

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

• Versor of a Quaternion

AA

AA ˆ)( ==U

172

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

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

B

A

B

A

B

A

ˆ

ˆ

)(

)()( ==

=U

UUQU

Tensor of a Quaternion

• Tensor of a Vector– Length of the vector

• Tensor of a Quaternion

AA =)(T

173

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

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

B

A

B

A

B

A==

=)(

)()(

T

TTQT

Tensor and Versor of a Quaternion

• Versor operator

– Applies VERSION to a vector

– Changes vector’s orientation

174

• Tensor operator

– Applies TENSION to a vector

– Stretches the vector and change its length

Tensor and Versor of a Quaternion

• Vector decomposed in Versor and

Tensor parts

AAAAA ˆ)()( ◊=◊= UT

175

• Quaternion decomposed in Versor and

Tensor parts

AAAAA )()( ◊=◊= UT

)(

)(

)(

)()()(

B

A

B

A

U

U

T

TQUQTQ ◊=◊=

Vector - Arcs

• Versors represented on the surface of a unit sphere

• Versor V moves point B to

176

• Versor V moves point B to point A

• Minimum Arc joining points B and A is defined as Vector-Arc

Sliding Vector - Arcs

• Vectors can be translated on a plane• Vector arcs can freely slide along the great circle and still represent the SAME Versor

177

SAME Versor

Composition of Biplanar Versors

178

Multiplication and Division of Biplanar Versor

• Spherical Triangle ABC– Used to define versor operations– Analogous to parallelogram rule for vectors

179

Multiplication and Division of Biplanar Versor

• Multiplication of Versors– like the sum of vectors

• Division of VersorsCBBACA VVV =

180

• Division of Versors– like the difference of vectors

B

A

B

C

C

A

C

BC

A

====CB

CABA

V

VV

Versor Composition is Non-Commutative

• VAC = VBCVAB ≠≠≠≠≠≠≠≠ VABVBC = VBA’VC’B = VC’A’

• Versors VAC and VC’ A’ have– Same angle

181

– Same angle – Different axes (different planes)

• Multiplication of two orthogonal Right Versors produce a Right Versor orthogonal to them

Composition of two Orthogonal Right Versors

VVV =A

182

• When order is reversedCACBBA VVV =

CABACB VVV −= C B

Square of Elementary Versors

• The Square of an operator is the operator applied twice

• The square of Right Versors is always the (-1) Operator

183

the (-1) Operator

Elementary Versors

184

Index of Right Quaternions

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

185

Sum of Versors

• Versors are Quotients– They can be summed ONLY when they have a COMMON DENOMINATOR

– A Common Denominator can ALWAYS be

186

– A Common Denominator can ALWAYS be found

Getting a Common Denominator

187

Getting a Common Denominator

• Slide both versors along their great circles until their origins coincide

• The vector B’ in the intersection is the common denominator

188

common denominator

Geometrical Interpretation of the Sum

• As with Vectors 1) Get a common denominator SLIDING

both Vector-Arcs to a common origin 2) Add the two vectors in the numerator

189

2) Add the two vectors in the numerator3) Get the new Quotient

Sum of two Right Versors

• It is always a right quaternion• Its plane BISECTS those of the original two versors

• and has a Scalar characteristic > 1

190

• and has a Scalar characteristic > 1

Sum of two Right Versors

• Index of resulting Versor = sum of indices of two versors

191

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

192

the Quotient

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

193

axis has (x, y, z) as components

Scalar and Right Parts of Quaternions

• A Quaternion operator applied to a vector B

• performs an operation that produces another vector A

194

another vector A

B

A

Q

Scalar and Right Parts of Quaternions

• The new vector A can be expressed as a sum of two orthogonal vectorsA = BS + BR

–B parallel to B and A

BR

195

–BS parallel to B and

–BR orthogonal to B

B

Q

BS

BR

Scalar and Right Parts of Quaternions

• Apply Scalar operator to B – Obtain BS

• Apply Right quaternion to B– Obtain BR

196

B

A

BS B

A

Q

BR

Tensor and Versor Part of a Quaternion

• Same operation can be decomposed in Tensor and Versor Operators

197

BBT ◊= T TBA ◊= V

Scalar and Right versus Tensor and Versor

• Scalar and Right parts are

representations in rectangular

coordinates

198

coordinates

• Tensor and Versor parts are

representations in polar coordinates

Quaternions as Four Coefficients

• Let L be the Ratio of lengths between

vectors A and B

• Thus, the scalar factor S isB

A=L

199

• Thus, the scalar factor S is

)cos(

)cos(

θ

θ

LS

S

=

==B

A

B

BS

B

A

θθθθ

BS

BR

Quaternions as Four Coefficients

• Let L be the Ratio of lengths between

vectors A and B

• Thus, the Tensor of the Right partB

A=L

200

• Thus, the Tensor of the Right part

)sin(

)sin(

θ

θ

LR

R

=

==B

A

B

BR

B

A

θθθθ

BS

BR

Quaternions as Four Coefficients

• Then, the Quaternion Q can be written as

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

)cos(θLw =

201

• w (real) is Scalar part

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

)sin(

)cos(

222 θ

θ

Lzyx

Lw

=++

=

Product of Quaternions

• Two quaternions Q1 and Q2 are composed by

202

• That is equivalent to

Product of Quaternions

• Consider the composition

Q = Q1 ◊◊◊◊ Q2

203

– Tensor T(Q)=T(Q1)T(Q2)

– Versor U(Q) = U(Q1) ◊◊◊◊ U(Q2)

Representation by four coefficients

• Let the representation of P and Q be

• Their composition P ◊◊◊◊ Q is

204

• Their composition P ◊◊◊◊ Q is

Representation by four coefficients

• Let the representation of P and Q be

• Their composition P ◊◊◊◊ Q is

205

• Their composition P ◊◊◊◊ Q is

Rotating a Vector (Finally !!)

• A Quaternion q = (x, y, z, w) rotates a Vector v by using the productv’ = q ◊◊◊◊ v ◊◊◊◊ q-1 = q ◊◊◊◊ (v ◊◊◊◊ q-1 )

• Which can be reduced to a Matrix-

206

• Which can be reduced to a Matrix-Vector multiplication L(q) R(q-1)v

( ) ( )( ) ( ) ( )( ) ( ) ( )

( )

++++−−+−

+−++−+

2222

2222

2222

2222

zyxw000

0zyxw2wx2yz2wy2xz

02wx-2yzz-yxw2wz2xy

02wy2xz2wz2xyz-y-xw

Quaternion Algebra

• Consider quaternions

),(

),(

1111111

0000000

v

v

wkzjyixwQ

wkzjyixwQ

=+++==+++=

207

• Sum and Subtraction of quaternions

( ) ( ) ( ) ( )( )101010

1010101010

, vv ±±=±±+±+±+±=±

wwQQ

kzzjyyixxwwQQ

Quaternion Algebra

• Multiplications of primitive elements

kjiij

kji

=−=−=== 1222

208

jikki

ikjjk

kjiij

=−==−=

=−=

Quaternion Algebra

• Multiplication of quaternions( )( )

( )( )( )

10101010

1111000010

−+++++−=

++++++=

iyzzywxxw

zzyyxxww

kzjyixwkzjyixwQQ

209

( )( )( )( )( )100110101010

10101010

10101010

10101010

, vvvvvv ×++⋅−=−+++−+++−+++

wwwwQQ

kzxxzwzzw

jzxxzwyyw

iyzzywxxw

Quaternion Algebra

• Conjugate of quaternions

( )( )

**

zkyjxiw

zkyjxiwQ)(QK

−−−=+++==

210

( )( )( ) *

1

*

2

*

2121

**

)(

Q))((

zkyjxiw

QQQQQQK

QQKK

==

==

−−−=

Quaternion Algebra

• Norm of quaternions

( )zyxw

zkyjxiw)(2222

NQN

+++=+++=

211

( ))()()(

)(Q))((

zyxw

2121

*

QNQNQQN

QNNQKN

===

+++=

Quaternion Algebra

• The multiplicative inverse, Q-1

*1

11 1

−−

=

==

QQ

QQQQ

212

( )( ) 1

1

1

2

1

21

11

1

)(

−−−

−−

=

=

=

QQQQ

QQ

QN

QQ

Quaternion Algebra

• The Selection function, W(Q)

( )( ) 2/)(

)(*

QQQW

wzkyjxiwWQW

+==+++=

213

• Dot product of two quaternions

( ) 2/)( QQQW +=

( )*

10

1010101010

QQW

zzyyxxwwQQ

=+++=⋅

Quaternion Algebra

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

)sin()cos( += uQ θθ

214

( )product Quaternion - 1

1,,

−=

=

++=

uu

u

zyx

zyx

uuu

kujuiu

Quaternion Algebra

• Extension of Euler’s identity

• Power of a unit quaternion

)sin()cos()exp( θθθ uu +=

215

)sin()cos(

)exp())sin()(cos(

θθθθθ

ttQ

tQ

t

tt

u

uu

+=

=+=

Quaternion Algebra

• Extension of Euler’s identity

• Logarithm of a unit quaternion

)sin()cos()exp( θθθ uu +=

θθ u+= ))sin()log(cos()log(Q

216

• Non-commutativity of quaternion

multiplication disallows log and exp

identities

θθθθ

uu

u

==+=))log(exp()log(

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

Q

Q

Rotation around an axis

uz

y

xv

v’

u××××v

v’⊥⊥⊥⊥

v//

θθθθ

217

v// = Pu(v) = Pu(v)u = (v.u)uv⊥⊥⊥⊥ = v - v// = v - (v.u)uu××××v = |v⊥⊥⊥⊥|u⊥⊥⊥⊥(Plano de u e v)

|v⊥⊥⊥⊥|= | u××××v | = |v’⊥⊥⊥⊥|v’⊥⊥⊥⊥ = |v’⊥⊥⊥⊥|cosθθθθuv⊥⊥⊥⊥ +|v’⊥⊥⊥⊥|senθθθθuu××××v

= (v - (v.u)u) cosθθθθ + u××××v senθθθθ

z

v⊥⊥⊥⊥

v//

Plane perpendicular to the direction of u

• Decomposition of Rotated vector

Rotation around an axis

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

'' //

θθ vuuuvvuuv

vvv

×+⋅−+⋅=+= ⊥

218

)sin()())cos(1)()(()cos( θθθ vuuuvv ×+−⋅+=

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

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

Rotation around an axis

219

defined by the unit vector u

*)(' QQR vvv ==

• Conditions to prove

– v’ is a 3D vectorW(v’) = 0

– R is a length preserving operator

Rotation around an axis

220

– R is a length preserving operatorN(v’) = N(v)

– R is a linear operatorR(ααααv + w) = ααααR(v) + R(w)

– R(u) = u

Rotation around an axis

• u, v, w are orthonormal 3D vectorsu

v

w

221

• u, v, w are orthonormal 3D vectors

• Suppose v is rotated by φφφφ with the unit

quaternion of axis u

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

[ ][ ]))sin()cos())(sin()cos((

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

)()()cos( ***

θθθθθθθθ

φ

vuvvuv

uvuv

vvvv

−−−=−+−=

=⋅=

W

W

qqWqq

Rotation around an axis

222

( )[ ])cos()sin()()sin()cos(

)sin()cos()sin(

)cos()sin()cos(

22

22

222

θθθθ

θθθ

θθθ

vuvu

vuvuv

uvv

+−−=

+−

−+−=

W

W

Rotation around an axis

uuwvvuv

wvu

=−−=−=−=

)(

[ ])cos()sin(2)sin()cos()cos( 22 θθθθφ −−= uW

223

• Therefore φφφφ = 2θθθθ

[ ])2cos()sin()cos(

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

22 θθθ

θθθθφ

=−=

−−= uW

top related