View
120
Download
4
Category
Preview:
Citation preview
Animação por Computador
CRAb – Grupo de Computação Gráfica
Departamento de ComputaçãoUFC
2
Sumário do Capítulo 2
2.1 Espaços e Transformações2.2 Representação de orientação
2. Background técnico
4
2.1 Espaços e Transformações
• CG e Animação dependem de transformações de dados
• Espaço do objeto → Pipepline de transformações (display pipeline) → Espaço do dispositivo
• Dados do objeto → Transformados como função do tempo para produzir animação
5
2.1 Espaços e Transformações
• Sistemas de coordenadas
– Objetos e Cenários 3D sofrem
transformação de mudança de
sistemas de coordenadas
– Sistemas de coordenadas são
referências para posicionamento e
orientação de objetos no espaço
6
2.1 Espaços e Transformações
– Existem cinco espaços com seus sistemas de coordenadas próprios •Espaço do Modelo: Cada modelo tem seu
próprio sistema de coordenadas
xM
yM
zM
7
2.1 Espaços e Transformações
•Espaço do Mundo (World): Todos os objetos do cenário posicionados relativo a um sistema de coordenadas comum
xM
yM
zM
xM
yM
zM
xM
yM
zM
yw
zw
xw
8
2.1 Espaços e Transformações
•Espaço da Câmera: Todos os objetos do cenário posicionados relativo a um sistema de coordenadas fixo no modelo de câmera
xc
yc
zc
-zc
9
2.1 Espaços e Transformações
•Espaço de Clipping: Frustum transformado em um paralelepípedo 2 x 2 x 1
zc
yN
xN
zN2
1
NDC=(Normalized Device Coordinates)
10
2.1 Espaços e Transformações
•Espaço de Clipping: Frustum transformado em um paralelepípedo 2 x 2 x 1
yN
xN
zN2
1
yN
xN
zN
2
11
2.1 Espaços e Transformações
•Espaço do Dispositivo: xy em NDC é transformado para as dimensões em pixels na tela. z é prezervado para algoritmo de eliminação de superfícies ocultas
12
2.1 Espaços e Transformações
• Escalares, Pontos e Vetores– A visão geométrica
• Ponto– Não tem tamanho nem forma– Única propriedade é sua localização
• Escalares – Tensores de ordem zero (array de um
elemento) – Valor não muda com mudança de sistema
coordenadas– Obedecem conjunto de operações– Ex: massa de uma partícula
13
2.1 Espaços e Transformações
– A visão geométrica• Vetores
– Tensores de primeira ordem (array unidimensional com 31 componentes) – Têm módulo, direção e sentido– Não têm posição fixa no espaço
– Transformam do sistema de coordenadas e1 e2
e3 para e’1 e’2 e’3 de acordo com a lei
),'cos( onde '
''
jiee
eeee
eep
VpV
ji
jjii
14
2.1 Espaços e Transformações
– A visão geométrica• Vetores
C=0 Vetor nulo
A
B=-ABC
A
Adição vetorial
-BC
A
Subtração vetorial
15
2.1 Espaços e Transformações
• Adição Ponto-Vetor (Translação do Ponto)
P2 =P1 + V
V
P1
P2
16
2.1 Espaços e Transformações
• Subtração Ponto-Ponto – Determinação do vetor entre os pontos
V= P2 - P1
V
P1
P2
17
2.1 Espaços e Transformações
– Geometria livre de coordenadas
(1, 1)
(3, 3)
2
2
18
2.1 Espaços e Transformações
– Visão matemática: Espaços vetoriais e Espaços afins
•Escalares, Pontos e Vetores são
elementos de conjuntos especiais
– Escalares Campos Escalares
– Vetores Espaços Vetoriais
– Pontos + Vetores Espaços Afins
19
2.1 Espaços e Transformações
– Campo escalar, {S; +, .}• S: conjunto cujos elementos são escalares • Operações binárias: adição(+), multiplicação(.)• Propriedades
, S, + S e . S (Fechamento c.r.a. + e . ) + = + (Comutativa c.r.a. +) . = . (Comutativa c.r.a. . ) + ( + ) = ( + ) + (Associativa c.r.a. +) . ( . ) = ( . ) . (Associativa c.r.a. . ) . ( + ) = ( . ) + ( . ) (Distributiva . c.r.a. +) + 0 = 0 + = , S (Elemento neutro da +) . 1 = 1 . = , S (Elemento neutro da . ) + (- ) = 0 , S (Inverso aditivo) . -1 = 1 , S (Inverso multiplicativo)
20
– Espaço Vetorial, X sobre o Campo escalar,S• X conjunto de vetores• {X; +}: Grupo Abeliano
– Obedece às seguintes propriedades x e y X Se x + x = x x = 0 (vetor nulo)Se z X e x + y = x + z y = zSe z X e x + y = z + y x = zw X w + x = yz X x + z = yx + y = y + x
• X é um S-módulo, isto é( + )x = x + x(x + y) = x + y (x) = ( . )x1x = x
2.1 Espaços e Transformações
Propriedades de Um grupo
21
– Espaço Euclidiano•Espaço vetorial com uma medida de
tamanho ou distânciad(x,y) = Sqrt(x . y)
– Espaço Afim•Extensão do espaço vetorial, incluindo o
objeto Ponto• Inclui as operações
– Adição vetor-ponto– Subtração ponto-ponto
2.1 Espaços e Transformações
22
2.1 Espaços e Transformações
• A visão da ciência da computação– Tipos abstratos de dados
• vector u, v;• point p, q;• scalar a, b;
– Linguagens orientadas a objetos (C++)• Classes• Overloading de operadores
– q = p + a*v;
23
2.1 Espaços e Transformações
• Tipos Abstratos de Dados geométricos
– Escalares: conjunto dos números reais• Operações de adição e multiplicação
– Pontos: posições no espaço 3D– Vetores: segmentos de retas,
direcionaisv = P - Q
P = v + Qv
Q
P
u
vu+v
24
2.1 Espaços e Transformações
• Linhas– Lugar geométricos dos pontos
gerados por operações ponto-vetorP() = P0 + d (Forma paramétrica)
P0 é um ponto arbitrário
d é um vetor arbitrário é um escalar
– Se for > 0 P() é o raio que emana de P0 na direção d
25
2.1 Espaços e Transformações
• Somas afinsP = Q + v– Possível encontrar um ponto R tal
quev = R – Q– AssimP = Q + (R – Q)
= R + (1 – Q= R + Q
+ = 1
vQ
P()
R
26
2.1 Espaços e Transformações
• Convexidade– Segmento de linha é um objeto convexo– Convex hull (Fecho convexo) dos pontos
Pi, i = 1, 2, …, n
é o conjunto de pontos P definido pela soma afim dos n pontos
P = 1P1 + 2P2 + … + nPn
1+ 2+ … + n = 1
i > 0, i = 1, 2, …, n
27
2.1 Espaços e Transformações
• Dot product = Scalar product (a.b)
• Angle between two nonzero vectors
2
332211
For aaaba
ba
bababa
baba
baba
inequality Schwarz-Cauchy
0 ,cos
28
2.1 Espaços e Transformações
• Scalar multiplication satisfies
0a0aa
a0aa
cabacba
baba
abba
(ii)
(i)
tesemidefini positive istion multiplicaScalar [c4]
Law) ive(Distribut [c3]
scalar)( [c2]
Law) (Symmetric [c1]
kkk
29
2.1 Espaços e Transformações
• Scalar projection of a onto b: Pb(a)
• Illustration of Pb(a)
cos)( ab
ba
b
baab
P
Pb(a)
b
a
30
2.1 Espaços e Transformações
• Vector projection of a onto b: Pb(a)
• Illustration of Pb(a)
Pb (a)Pb (a)ub ab
b
b
b
ab b
b2
Pb(a)
b
a
31
2.1 Espaços e Transformações
• Vectors a and b are orthogonal if
k
PP
2
0coscos0cos
0)()(
ba
ba ab
Pb(a)b
a
Pa(b)
32
2.1 Espaços e Transformações
• Basis formed by three mutually orthogonal unit vectors, ei (i =1, 2,
3)
symbolKronecker thecalled -
if0
if1
ij
ijji ji
ji
ee
33
2.1 Espaços e Transformações
Theorem 1.4: Let e1, e2, e3 be an
orthonormal basis and let
a = a1e1 + a2e2 + a3e3
b = b1e1 + b2e2 + b3e3. Then
ii
iii
ii
a
aaaaa
baaaa
ea
aaa
ba
(iii)
(ii)
bb b (i)
3
1
23
22
21
3
1i332211
34
2.1 Espaços e Transformações
Let (u1, u2, u3) and (v1, v2, v3) be ordered
bases and let
Then (v1, v2, v3) has the same
orientation of (u1, u2, u3) if
Right-handed basis and opposite orientation Left-handed basis
3
1iiijj a uv
0 )det( ija
35
2.1 Espaços e Transformações
• Vector product = a x b
abe1 a1 b1
e2 a2 b2
e3 a3 b3
e1
a2 b2
a3 b3
e2
a1 b1
a3 b3
e2
a1 b1
a2 b2
ab a2b3 a3b2 e1 a3b1 a1b3 e2 a1b2 a2b1 e3
36
2.1 Espaços e Transformações
• Theorem 1.5
• Theorem 1.6
t tripletindependenlinearly
handed-right a is ,, then ,0 If b)
and a) )(
),( wheresin )(
bababa
bbaaba
bababa
ii
i
dependentlinearly are and ifonly and if ba0ba
37
2.1 Espaços e Transformações
• Vector products satisfies
E1 ab ba Anticommutative Law E2 a b c ab ac Distributive Law E3 ka bk ab k scalar E4 aa 0
Note : a bc ab c
38
2.1 Espaços e Transformações
• Triple scalar product: a·b×c
333
222
111
cbacbaabc
abccabbca
bacacbcba
cba
cba
cba
cbaa b
c
39
2.1 Espaços e Transformações
• Theorem 1.7: [abc]=0 if and only if a, b, and c are linearly dependent.
• Theorem 1.8:
a bc ac b ab cF1 ab cd ac bd ad bc F2 ab cd abd c abc d
40
2.1 Espaços e Transformações
• Planos– Extensão das linhas paramétricas– Três pontos não alinhados determinam um
plano únicoS() = (1- P0 + Q, 0 1T() = 1 S + R, 0 1T() = 1 S + R
= P0+1Q-P0+R-P0T() = P0 + ’u + ’v P0QR– Se P está no plano, então
P – P0 = ’u + ’vn . (P – P0 ) = (u x v) . (P – P0 ) = 0
S()P0
R
Q
T()
n
41
2.1 Espaços e Transformações
• Frame– É especificado por um ponto (origem) e um
conjunto de vetores LI (base)
– Todo vetor w e todo ponto P podem ser escritos comow = 1v1 + 2v2 + 3v3
P = P0 + 1v1 + 2v2 + 3v3
P0 v1
v2
v3
42
2.1 Espaços e Transformações
• Representações e n-tuplasSuponha que e1, e2, e3 formam uma
basev = 1e1 + 2e2 + 3e3
v = (1, 2, 3) (representação 3-tupla)
43
2.1 Espaços e Transformações
• Mudanças de sistemas de coordenadas
u1 11v1 12v2 13v3
u2 21v1 22v2 23v3
u3 31v1 32v2 33v3
u1
u2
u3
11 12 13
21 22 23
31 32 33
v1
v2
v3
M
v1
v2
v3
44
2.1 Espaços e Transformações
• Mudanças de sistemas de coordenadas
w 1v1 2v2 3v3
w 1u1 2u2 3u3
w1 2 3 v1
v2
v3
aT
v1
v2
v3
w 1 2 3 u1
u2
u3
bT
u1
u2
u3
bTM
v1
v2
v3
aT bTM a MTb
45
2.1 Espaços e Transformações
• Exemplo de mudança de representação
v1
v2
v3
u1
u2
u1
u2
u3
cos sin 0
sin cos 0
0 0 1
v1
v2
v3
w1v1 2v2 4v3 1 2 4 v1
v2
v3
w 1 2 4 cos sin 0
sin cos 0
0 0 1
u1
u2
u3
w cos 2sin u1 2cos sin u2 4u3
a MTb
1
2
4
cos sin 0
sin cos 0
0 0 1
1
2
3
1
2
3
cos sin 0
sin cos 0
0 0 1
1
2
4
46
2.1 Espaços e Transformações
• Coordenadas homogêneas– Ponto
– Vetor
0
3
2
1
3210
1
P
v
v
v
P
vvvPP
zyx
zyx
0
3
2
1
321 0
P
v
v
v
w
47
2.1 Espaços e Transformações
• Exemplo de mudança de frames
v1
v2
v3
u2 = v1 + v2
u3=v1 + v2 + v3
u1 = v1Q0
P0
A
A = P0 + 1 v1 + 1 v2 + 0 v3
A = Q0 + u1 + u2 + u3
Q0 = P0 + 1 v1 + 1 v2 + 0.5 v3
48
2.1 Espaços e Transformações
0
3
2
1
0
3
2
1
0
3
2
1
3
2
1
3
2
1
1011
1000
0111
0011
0001
015.011
111
011
001
P
v
v
v
A
P
v
v
v
P
v
v
v
A
v
v
v
u
u
u
49
2.1 Espaços e Transformações
0
5.0
5.0
0
0
1
0
1
1
0000
5.0100
5.0110
0.0011
1
0
1
1
0000
5.0100
1010
1001
1000
0100
0110
0011
0
01000
0100
0110
0111
1
5.0
1
1
1
0
1
1
50
2.1 Espaços e Transformações
• Trabalhando com representações– Considere a mudança de representação
do frame {i, j, k, P0} para o frame {u, v, w, Q0} através da transformação{a} = [C] {b}
• {b}: representação no frame {i, j, k, P0}
• {a}: representação no frame {u, v, w, Q0}
– Considere a mudança inversa{b} = [D] {a} =>[D] = [C]-1
51
2.1 Espaços e Transformações
– Assim
D
1
0
0
0
u
ui
u j
uk
0
D
0
1
0
0
v
v i
v j
vk
0
D
0
0
1
0
w
wi
w j
wk
0
D
0
0
0
1
Q0
qi
q j
qk
1
D
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
D
ui
u j
uk
0
v i
v j
vk
0
wi
w j
wk
0
qi
q j
qk
1
C D 1
ui
u j
uk
0
v i
v j
vk
0
wi
w j
wk
0
qi
q j
qk
1
1
52
2.1 Espaços e Transformações
– Aplicando ao exemplo anterior
1000
5.0100
5.0110
0011
1
5.0
1
1
0
1
1
1
0
0
1
1
0
0
0
11
1DC
53
2.1 Espaços e Transformações
• Frames e tipos abstratos de dados
point3 p, q;vector3 v;frame f;v = point_sub(p, q, f);
54
2.1 Espaços e Transformações
• Frames no OpenGL– Frame do Cenário (World Frame)– Frame da Câmera (Camera Frame)
• Default: coincide com o frame do cenário
-zc
xc=xw
yc=ywzc=zw
w
xw
yw
zw
c
zc
xc
ycCâmera
55
2.1 Espaços e Transformações
• Transformações Afins– Transformação de um ponto P em Q
Q = T(P)
– Transformação de um vetor u em vv = R(u)
– Em coordenadas homogêneas, vetores e pontos são representados como matrizes colunas 4DQ = f(P) e v = f(u) (mesma transformação)
56
2.1 Espaços e Transformações
• Restringir f a uma função linearf(p + q) = f(p) + f(q)– Importância
•Conhecendo a transformação de vértices•Obtém-se a transformação de
combinações lineares de vértices através de combinações lineares de transformações de vértices
– f pode ser representada por uma matriz 4x4, [A]
57
2.1 Espaços e Transformações
– Matriz de Transformação não-singular•Mudança de frame•Mudança do vértice dentro do mesmo
frame
– Matriz Vetor Ponto
1
0
10003
2
1
3
2
1
34333231
24232221
14131211
p
p
p
v
v
v
aaaa
aaaa
aaaa
PvA
58
2.1 Espaços e Transformações
– Transformação de vetores• Envolve apenas nove coeficientes da matriz• 9 graus de liberdade
– Transformação de pontos• Envolve 12 coeficientes da matriz• 12 graus de liberdade
– Transformações afins preservam linhas• Linha original: P() = P0 + d
• Transformação:A P() = A(P0 + d)= AP0 + Ad
• Linha final: P’() = P’0 + d’
59
2.1 Espaços e Transformações
• Translação– Operação ponto-vetor
P’ = P + tx’ = x + tx
y’ = y + ty
z’ = z + tz PP’t
60
• Translação – Somar o vetor de translação t = (tx, ty,
tz) aos vértices para reposicionar objetos
P’ = P + tx’ = x+ tx
y’ = y + ty
z’ = z + tz
x
y
2.1 Espaços e Transformações
t = ( tx, ty, tz)
P = (x, y, z)
P’=(x’, y’,z’)
61
2.1 Espaços e Transformações
• Rotaçãovértice P em coordenadas polares (r, ) irá para posição P’ = (r, )
> 0 : rotação em sentido anti-horário < 0 : rotação em sentido horário
ei
P = ( r, )
P’ = ( r, ) ej
rr
62
• Rotação em torno do eixo x– Coordenadas na forma polar:
y’ = r cos ( ) y = r cos z’ = r sen ( ) z = r sen
– Mas:cos ( ) = cos . cos - sen . sen sen ( ) = sen . cos + sen . cos
– Assim:y’ = r cos . cos - r sen . sen z’ = r sen . cos + r cos . sen y’ = y . cos - z . sen z’ = z . cos + y . sen
2.1 Espaços e Transformações
x y
zx
63
2.1 Espaços e Transformações
Rotação em torno do eixo x
z
y
x
sen
sen
z
y
x
xx
xx
cos0
cos0
001
'
'
'
64
2.1 Espaços e Transformações
• Rotação em torno do eixo y– Coordenadas na forma polar:
z’ = r cos ( ) z = r cos x’ = r sen ( ) x = r sen
– Mas:cos ( ) = cos . cos - sen . sen sen ( ) = sen . cos + sen . cos
– Assim:z’ = r cos . cos - r sen . sen x’ = r sen . cos + r cos . sen z’ = z . cos - x . sen x’ = x . cos + z . sen
y z
xy
65
2.1 Espaços e Transformações
Rotação em torno do eixo y
z
y
x
sen
sen
z
y
x
yy
yy
cos0
010
0cos
'
'
'
66
2.1 Espaços e Transformações
• Rotação em torno do eixo z– Coordenadas na forma polar:
x’ = r cos ( ) x = r cos y’ = r sen ( ) y = r sen
– Mas:cos ( ) = cos . cos - sen . sen sen ( ) = sen . cos + sen . cos
– Assim:x’ = r cos . cos - r sen . sen y’ = r sen . cos + r cos . sen x’ = x . cos - y . sen y’ = y . cos + x . sen
z x
yz
67
2.1 Espaços e Transformações
Rotação em torno do eixo z
z
y
x
sen
sen
z
y
x
zz
zz
100
0cos
0cos
'
'
'
68
2.1 Espaços e Transformações
• Rotação em torno de um eixo // z passando pelo pivô, (xR, yR)
vértice (x, y) irá para posição (x’, y’)
x
y
(xR, yR)
P = ( r, )
P’ = ( r, )
rr
69
2.1 Espaços e Transformações
• Rotação em torno do eixo //z pelo pivô, (xR,yR, zR)
Equivale a – Translação para a origem ( 0, 0, 0 )– Rotação em relação ao eixo z
– Translação de volta para (xR,yR, zR)
70
2.1 Espaços e Transformações
• Rotação em torno de eixo // z pelo pivô (xR, yR)
x’ = (x - xR) . cos - (y - yR) . sen + xR
y’ = (y - yR) . cos + (x - xR) . sen + yR
R
R
R
R
y
x
yy
xx
sen
sen
y
x
cos
cos
'
'
71
2.1 Espaços e Transformações
• Rotação para objetos definidos com curvas – transformações geométricas aplicadas
a coordenadas de definição– implementações adaptadas à
geometria do objeto• Exemplos
– Círculos • rotação ou translação: usar coordenadas
do centro, e •escala: amplificar os raios
72
P1
P2
P3 P4
2.1 Espaços e Transformações
• Rotação para objetos definidos com curvas– Segmentos de curvas – transformação: usar coordenadas de
definição da curva (Pontos de controle)
73
2.1 Espaços e Transformações
• Escala– É uma transformação afim que altera a
forma do objeto (non-rigid-body)– Multiplicar os valores das coordenadas
por fatores de escala sx, sy, sz
– Transformação básica de escala
– (x’, y’, z’) = (x.sx, y.sy, z.sz ), sx, sy, sz > 0
– Mudança uniforme de Escala quando sx = sy = sz
74x
y
2.1 Espaços e Transformações
• Efeito da transformação de escala– mudança do tamanho do objeto – deslocamento do objeto
– distorção se sx != sy
75
2.1 Espaços e Transformações
• Escala relativa a um ponto fixo, Pf
Pf = ( xf, yf )
– se ( xf, yf ) for centróide objeto não move
– senão deslocamento em relação a Pf
x
y
centróide
76
2.1 Espaços e Transformações
• Coordenadas do centróide
V
Vc
V
Vc
V
Vc
dV
zdV
zdV
ydA
ydV
xdV
x e ,
HBHB
HBH
HBH
y
HBHB
HBB
BHBB
x
c
c
21
21
21
22
111
21
)(
21
3)(
2
21
)(
21
3)(
2
B1
B2
HH/3
H/2
B1/2
B2/3
77
2.1 Espaços e Transformações
• Escala relativa a um ponto fixo, Pf
x’ = ( x xf ) . sx + xf
y’ = ( y yf ) . sy + yf
z’ = ( z zf ) . sz + zf
– Translação para a origem ( 0, 0, 0 )– Escala em relação à origem– Translação de volta para ( xf, yf )
(xf, yf) (xf, yf)
78
2.1 Espaços e Transformações
• Transformações em Coordenadas Homogêneas– Usando-se coordenadas homogêneas,
as transformações geométricas são escritas como
34
24
14
33
23
13
32
22
12
31
21
11
'
'
'
11
'
'
'
m
m
m
zm
zm
zm
ym
ym
ym
xm
xm
xm
z
y
x
z
y
x
z
y
x
M
79
2.1 Espaços e Transformações
• Translação– Matriz de Translação
– Forma inversa ( T-1) com -tx, -ty, -tz.
1000
100
010
001
ztytxt
T
80
2.1 Espaços e Transformações
• Escala– Matriz de Escala em relação a um ponto
fixo, F
– A escala é uniforme quando Sx = Sy = Sz
– Forma inversa S-1 com
1000
100
100
100
Fzz
Fyy
Fxx
zSS
ySS
xSS
S
zz
yy
xx S
SS
SS
S1
',1
',1
'
81
2.1 Espaços e Transformações
• Rotação– Em 3D, as rotações podem ser
sobre qualquer reta– As rotações mais simples são sobre
os eixos de coordenadas– Outras rotações são equivalentes a
combinações das rotações dos 3 eixos-coordenados (mais T e T’).
– Para todas as rotações 3D sobre eixos de coordenadas• > 0: rotação anti-horária (a partir da
origem) na regra da mão-direita
82
2.1 Espaços e Transformações
– Rotação em relação ao eixo-x
– Rotações sobre os outros dois eixos são obtidas com permutação cíclica
x y z x
1000
0cos0
0cos0
0001
xx
xxx sen
sen
R
z
x
y
x
83
2.1 Espaços e Transformações
– Rotação em relação ao eixo-y
1000
0cos0
0010
00cos
yy
yy
y sen
sen
R
z
x
y
y
84
2.1 Espaços e Transformações
– Rotação em relação ao eixo-z
1000
0100
00cos
00cos
zz
zz
z
sen
sen
R
z
x
y
z
85
2.1 Espaços e Transformações
– Obtém-se a inversa de Rx, Ry ou Rz com
- como •cos(-) = cos()•sen(-) = - sen(),
R-1 = RT – R são matrizes ortonormais
86
2.1 Espaços e Transformações
– Outras rotações são obtidas por composição de matrizes de transformação•Transformação do eixo de rotação em um
eixo de coordenada •Rotação especificada em torno do eixo
transformado•Transformação do eixo de rotação de volta
para a posição e orientação originais
87
• Cisalhamento (Shear)– Cisalhamento no plano xy na direção x
x’ = x+x = x + tg()y = x + shxy
y’ = yz’ = z
2.1 Espaços e Transformações
y
x
yp
xp
P
y
x
yp’
P’
xp x
x
88
– Cisalhamento no plano xy na direção x
2.1 Espaços e Transformações
1000
0100
0010
00sh1 x
x
xyS
89
– Cisalhamento no plano xy na direção yx’ = xy’ = y+y = y + tg()x = y + shyx
z’ = z
2.1 Espaços e Transformações
y
xxp
yp
P
x
y
xp’
P’
yp
y
y
90
– Cisalhamento no plano xy na direção y
2.1 Espaços e Transformações
1000
0100
001sh
0001
yy
xyS
91
– Cisalhamento no plano xz na direção x
2.1 Espaços e Transformações
1000
0100
0010
0sh01 x
x
xzS
92
– Cisalhamento no plano xz na direção z
2.1 Espaços e Transformações
1000
010sh
0010
0001
z
z
xzS
93
– Cisalhamento no plano yz na direção y
2.1 Espaços e Transformações
1000
0100
0sh10
0001
yy
yzS
94
– Cisalhamento no plano yz na direção z
2.1 Espaços e Transformações
1000
01sh0
0010
0001
z
z
yzS
95
2.1 Espaços e Transformações
• Outras Transformações– Reflexão: imagem de objeto em
relação a um plano– Espelho xz: y - y
•Equivale a sx = sz = 1, sy = -1
– Espelho yz: x - x•Equivale a sx = -1, sy = sy = 1
100
010
001
S
100
010
001
S
96
2.1 Espaços e Transformações
– Espelho xy: z - z•Equivale a sx = sy = 1, sz = -1
– Espelho cuja normal é n = (nx, ny, nz):
100
010
001
S
P i Pi 2(Pknk )ni ik 2nink Pk
Sn 1 2n1n1 2n1n2 2n1n3
2n2n1 1 2n2n2 2n2n3
2n3n1 2n3n2 1 2n3n3
P
P’ n
x
y
97
2.1 Espaços e Transformações
–Reflexão relativa à origem: x - x e y - y
•Equivale a sx = -1, sy = -1
98
2.1 Espaços e Transformações
Transformações entre sistemas de coordenadas
• Usado em– Transformações de Visualização– Transformações de Modelagem
• Transformação entre sitemas paralelos com origens distintas
• Transformações entre sistemas centrados na mesma origem com orientações distintas
99
2.1 Espaços e Transformações
• Transformação entre sistemas paralelos com origens distintas– Aplicar translação To’o aos pontos da cena
x’
x
O’
O
y’y
P’P
1
P
P
P
1000
O100
O010
O001
OO
z
y
x
z
y
x
P
PP
100
2.1 Espaços e Transformações
• Transformações entre sistemas centrados na mesma origem com orientações distintas– Construir matriz de transformação cujas linhas são vetores
unitários nas direções de x’ y’ e z’ representados por suas componentes no sistema x y z
i i xi yi z
j j xj yj z
k k xk yk z
P
i x i y i z 0
j x j y j z 0
k x k y k z 0
0 0 0 1
Px
Py
Pz
1
x’
x
y’y P
z
z’
101
2.1 Espaços e Transformações
• Assim
1
0
0
1
ix iy iz 0
jx jy jz 0
kx ky kz 0
0 0 0 1
ix
iy
iz
1
0
1
0
1
ix iy iz 0
jx jy jz 0
kx ky kz 0
0 0 0 1
jx
jy
jz
1
0
0
1
1
ix iy iz 0
jx jy jz 0
kx ky kz 0
0 0 0 1
kx
ky
kz
1
T é Ortonormal T-1 T P TP e PTT P
x’
x
y’ y P
zz’
102
2.1 Espaços e Transformações
• Rotação em torno de um ponto fixo– Utilizar concatenação de 3 operações
• Translação do ponto fixo para a origem– T(-PF)
• Rotação em torno do eixo passando pela origem– R()
• Translação de volta para a posição do ponto fixo– T(PF)
• P’ = [T(PF) R() T(-PF)] P
103
2.1 Espaços e Transformações
• Rotação geral– É possível expressar como
concatenação de rotações em torno de z, y e x• R = RxRyRz
104
2.1 Espaços e Transformações
• Transformação de instância– Usar um objeto protótipo – Gerar instância desse objeto – Aplicar transformações para a forma
desejada
105
2.1 Espaços e Transformações
• Rotação sobre um eixo arbitrário•Definir o eixo de rotação
– dois pontos sobre a reta ou– um ponto e um vetor-direção
•O segmento P1P2
(“segmento de reta orientado”) define um vetor V = (x2-x1, y2-y1, z2-z1)
•Determinar uma forma de rotação geral de matriz usando operações com vetores
y
zx
p1
p2
106
2.1 Espaços e Transformações
– Rotação sobre um eixo arbitrário
1. Translação do eixo de rotação para a
origem
2. Rotações para alinhar o eixo de rotação
com o eixo z (ou outro eixo)
3. Rotação sobre o eixo z
4. Inversão das rotações no passo 2
5. Inversão da translação do passo 1
107
2.1 Espaços e Transformações
– Rotação sobre um eixo arbitrário
y
z x
y
z x
y
z x
(5)
(2)y
z x
(1)
(4)y
z x
(3)
y
z x
Início
p1
p2
108
2.1 Espaços e Transformações
– Rotação sobre um eixo arbitrário•Coordenadas de p1 e p2 determinam o
vetor unitário û ao longo do eixo de rotação
||12,
||12,
||12
),,(||
)12,12,12(
VVV
VV
u
V
zzc
yyb
xxa
cba
zzyyxx
y
z x
p1
p2
109
2.1 Espaços e Transformações
– Rotação sobre um eixo arbitrárioPasso 1: Translação de p1 para a origem
1
100
010
001
0001
1
1
z
y
x
T
y
z xp1
p2
110
Passo 2.1: Posicionamento do eixo de rotação no plano xz•determinar ângulo x entre û’ e k
•girar de um ângulo x sobre o eixo x
2.1 Espaços e Transformações
(0, b, c) =
û a,0, b2 c2
û =(a, b, c)û’
x
y
z
x
111
2.1 Espaços e Transformações
– determinar ângulo x entre û’ e k
•Encontre o cos x
•Encontre o sen x
ˆ u 'k| ˆ u ' ||k |cosx cosxˆ u 'k| ˆ u '|1
cd
onde d| ˆ u '| b2c2
d
b
d
cd
d
cxsen
2
2221
112
2.1 Espaços e Transformações
– girar de um ângulo x sobre o eixo x
1000
00
01
0001
)(dcdb
dbdc
xx R
113
2.1 Espaços e Transformações
Passo 2.2: Alinhamento do eixo de rotação com o eixo z•determinar ângulo y entre û” e k
•girar û” de um ângulo -y sobre o eixo y
û a,0, b2 c2
û =(a, b, c)
x
y
z y
114
– determinar ângulo y entre û” e k
•Encontre o cos y
•Encontre o sen y
dycbada
da
dy
cos122222 mas
22|||''ˆ|''ˆcoskuku
2.1 Espaços e Transformações
aysenaysen
115
2.1 Espaços e Transformações
– girar de um ângulo – y sobre o eixo x
1000
00
0010
00
)(da
ad
yy R
116
2.1 Espaços e Transformações
Passo 3: Rotação de sobre o eixo z
1000
0100
00cossen
00sencos
)(
zR
117
2.1 Espaços e Transformações
– Passo 4: Inverso do passo 2.2, Ry(y)
– Passo 5: Inverso do passo 2.1, Rx(-x)
– Passo 6: Inverso do passo 1, T(P1)
– Assim a Rotação em torno do eixo P1P2
MT P1 Rx x Ry y Rz Ry y Rx x T P1
M
r11
r12
r13
0
r21
r22
r23
0
r31
r32
r33
0
0 0 0 1
118
2.1 Espaços e Transformações
– Rotação sobre um eixo arbitrárioManeira alternativa•Construir uma base ortogonal i’ j’ k’ tal
que k’ seja o vetor unitário na direção P1P2
•Transformar os pontos da cena para esse sistema de coordenadas
•Girar em torno de z’•Transformar os ponto para o
sistema original
y
z x
p1
p2
119
2.1 Espaços e Transformações
• Matrizes de Transformação no OpenGL
– A Matriz de transformação corrente• Aplicada aos vértices subseqüentes à
sua montagem• É uma matriz 4 x 4• Inicializada como a matriz identidade• Modificada por pós-multiplicação de
matrizes – C CT (Translação)– C CS (Escala)– C CR (Rotação)
120
2.1 Espaços e Transformações
– Definida diretamente com o comando glLoadMatrix{fd}(M); • C M• M é um array com 16 elementos de tipo
float ou double que compõem 4 a 4 as colunas de C
161284
151173
141062
13951
mmmm
mmmm
mmmm
mmmm
M
121
2.1 Espaços e Transformações
– Modificada com o comando glMultMatrix{fd}(M); • C CM• M é um array com 16 elementos de tipo
float ou double que compõem 4 a 4 as colunas da matriz
161284
151173
141062
13951
mmmm
mmmm
mmmm
mmmm
M
122
2.1 Espaços e Transformações
– Os vértices são transformados pela matriz corrente resultante de dois modos• GL_PROJECTION (modo de projeção)• GL_MODELVIEW (modo de modelagem e
visualização)• glMatrixMode(modo): Seleciona um dos
dois modos
• C CProjectionCModel_View
vértices CModel_View CProjection vértices
123
2.1 Espaços e Transformações
• Rotação, translação e escala– glRotatef(ângulo, vx, vy, vz);
• Ângulo em graus• (vx, vy, vz) vetor na direção da rotação
– glTranslatef(dx, dy, dz);• (dx, dy, dz) vetor de deslocamento
– glScalef(sx, sy, sz);• sx, sy, sz: fatores de escala
124
2.1 Espaços e Transformações
• Rotação em torno de um ponto fixo– Composição de transformações
glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslatef(Px, Py, Pz);glRotatef(ângulo, vx, vy, vz);glTranslatef(-Px, -Py, -Pz);
– v’ = T(Px, Py, Pz) R(, vx, vy, vz) T(-Px, -Py, -Pz) v
y
zx
P
Q
P
Q
1
2
3
125
2.1 Espaços e Transformações
• Ordem de transformações– Duas maneiras de ver a ordem de
transformações• C CMn
• C CMn-1
• …
• C CM2
• C CM1
Mn
Mn-1
…
M2
M1
v’ = MnMn-1…M2M1 v
C
Desempilhar
Pilha
126
2.1 Espaços e Transformações
• Loading, pushing, e popping de matrizes
– Loading matix M como matriz corrente• glLoadMatrixf(M);
– Salvando a matriz corrente na pilha• glPushMatrix()
– Retirando a matriz da pilha e tornando-a corrente• glPopMatrix()
127
2.1 Espaços e Transformações
• Rotações suaves– A partir dos key-frames indicados
• gerar aviões em posições intermediárias ao longo da rota, interpolando as orientações
128
2.1 Espaços e Transformações
– As orientações dos aviões nos key-frames são obtidas através de matrizes de rotação• R = Rx(x) Ry(y) Rz(z)
– E=(x, y, z): Ângulos de Euler
– Considere dois conjuntos de ângulos de Euler• Ei e Ei+1
• Calcular Ek = Interpolação(Ei, Ei+1)
• Animação não ficará suave
129
2.1 Espaços e Transformações
– Modificar a orientação interpolando entre os vetores vermelhos como no caso da trackball
130
2.1 Espaços e Transformações
• Rotações incrementais– Como no caso da trackball virtual
• Achar o círculo ao longo da superfície esférica que leva de uma orientação à outra
• Incrementar o ângulo de rotação ao longo do eixo de rotação v = (dx, dy, dz)
131
2.2 Representação de Orientação
• Como representar orientações de objetos– No instante t– No instante t + ∆t
• Interpolar as orientações entre os dois instantes de tempo
132
• Representação de Ângulo fixo– Eixos de rotação são fixos– Ângulos especificam rotação em torno
desses eixos de rotação– Exemplos
•X-Y-X: (45, 60, 30) ≡ Rx(30)Ry(60)Rx(45)
•X-Y-Z: (45, 90, 45) ≡ Rz(45)Ry(90)Rx(45)
2.2 Representação de Orientação
x
y
z
x
y
z
Θx= 45
x
y
z
Θz= 45
133
• Representação de Ângulo fixo– Eixos de rotação são fixos– Ângulos especificam rotação em torno
desses eixos de rotação– Exemplos
•X-Y-X: (45, 60, 30) ≡ Rx(30)Ry(60)Rx(45)
•X-Y-Z: (45, 90, 45) ≡ Rz(45)Ry(90)Rx(45)
2.2 Representação de Orientação
x
y
z
x
y
z
Θx= 45
x
y
z
Θz= 45
134
2.2 Representação de Orientação
• Quaternions– Quaternions are commonly used to
represent rotations– They were introduced by William
Hamilton (1805-1865) [1]– Quaternions were conceived as
Geometrical Operators– A Complete Calculus of Quaternions
was introduced by Hamilton [2]
135
Definition of Vector
– It is a line segment with orientation– It represents the relative position of
two points•Example: point N with respect to M
M
N
136
Hamilton’s Motivation for Quaternions
• Create a Mathematical Concept to represent
– RELATIONSHIP between two VECTORS
– Similar to the way a Vector represents
•RELATIONSHIP between two POINTS
137
Vector applied to Point
• Given – Point M and
– Vector V
• Application of V over M results in– Unique Point N
M
V
N
M V
138
Quaternion applied to Vector
• Hamilton wanted that given– Vector V and– Quaternion Q
• Application of Q over V results in – Unique VectorW
VQ
QV W
139
Quatenion Rationale
• Vector is completely defined by– Length– Orientation
• To define a vector in terms of another vector a Quaternion has to represent– Relative Length– Relative Orientation
140
Definition of Scalar
• Scale – RATIO between the lengths of two
PARALLEL vectors A and B
– RELATIVE LENGTH of vectors
AB
s = Scale
141
Scalar - Vector Operations
• S is the Quotient between
two PARALLEL vectors A and B
• A Scalar is an Operator that
– Changes the SCALE of the vector
– Keeps its orientation unchanged
B
AS
BBB
ABA sS
142
Definition of Versor
• Versor – QUOCIENT between two NON-
PARALLEL vectors A and B of EQUAL LENGTH
– RELATIVE ORIENTATION of vectors
A
B
143
Versor - Vector Operations
• V is the Geometric Quotient
between two NON-PARALLEL vectors of
EQUAL LENGTH A and B
• A Versor is an Operator that
– Changes the ORIENTATION of the vector
– Keeps its LENGTH unchanged
B
AV
BA V
144
Right Versors
• A Right Versor is a Versor that applies a 90o rotation
• Vector length is left unchanged as in any other Versor application
A
B
V
145
Composing Versors
• Versor composition is the consecutive application of two versors operators
A
BV2
V1
C
V3
123
312
1
2
VVV
VVV
V
V
CCA
CB
BA
146
Composing Right Versors
• (-1) is the INVERSION operator– Double application of a right versor
to a vector– Inverts the direction of a vector
A
B
V
- B
VV
VVV
V
1
BAB
BA
147
Definition of Quaternion
• Geometrical Quotient of two vectors A and B
• Operating on a vector, changes its– ORIENTATION – LENGTH
BAB
A QQ
148
Quaternion Characteristics
• Axis(Q) = Unit Vector perpendicular to the plane of rotation
• Angle(Q) = Angle between the vectors in the quotient
• Index(Q) = In a Right Quaternion is the Axis(Q) multiplied by the length ratio of the two
vectors in the quotient
149
Representation of Quaternions
• Quaternion = “A set of Four”• From
– the Latin Quaternio– the Greek
• The combined operation of Scalar and Versor requires 4 numbers:– 1 for Scale– 1 for Angle– 2 for Orientation (common plane)
• Quaternion = Scalar Versor
U
150
Opposite Quaternions
• The quaternion Q
• has an Opposite quaternion O (Q)B
AQ QQO
B
A
A- A
B
Q
O(Q)
151
Opposite Quaternion Properties
))(()(
))(()(
QOAxisQAxis
QOAngleQAngle
A
- A
B
Q
O(Q)
152
Reciprocal Quaternions
• The quaternion Q:
• Reciprocal of Q:• Composition
(1) is an Identity Operator
A
B
QR(Q)
BAB
A QQ
ABA
B 11)( QQQR
1QQR )(
153
Conjugate Quaternion
• Given – Vectors A and B and– Quotient Q=A/B
• Geometric reflection of vector B over vector A will be vector C
BAB
A QQC BA
QK(Q)
154
Conjugate Quaternion
• Conjugate Quaternion K(Q)=A/C
– Angle (K(Q)) = Angle (Q)
– Axis (K(Q)) = - Axis (Q)
CAC
A )()( QKQKC BA
QK(Q)
155
Norm of a Quaternion
• The Norm is the composition of a Quaternion with its Conjugate– The rotation of K(Q) compensates the
rotation of Q– Producing a parallel vector– N(Q) is a scalar operator
C
BA
QK(Q)
BBC
B
A
B
A
A
C
B
C
QQKQN
QN
)()(
)(
2
156
Square of a Quaternion
• Defined as applying Q twice
C
BA
QQQ2CCA
C
B
B
A
C
A
QQQ
Q
2
2
157
Composing Right Quaternions
• Succesive application of a Right Quaternion over a Vector– results in a Vector in the opposite
direction
A- A
B
AC
BQ
Q
158
Composing Right Quaternions
• The square of any right quaternion is a NEGATIVE scalar operator
A- A
B
AC
BQ
Q
)(
12
AA
A
A
A
B
QQ AC
A
B
A
B
A
C
2
22
Q
159
Versor of a Quaternion
• Versor of a Vector – Unit vector parallel to the vector
• Versor of a Quaternion – Quotient of the Versors of the vectors
• It is the part of the Quaternion that represents Relative Orientation
AA
AA ˆ)( U
B
A
B
A
B
Aˆ
ˆ
)(
)()(
U
UUQU
160
Tensor of a Quaternion
• Tensor of a Vector – Length of the vector
• Tensor of a Quaternion – Quotient of the Tensors of the
vectors
• It is the part of the Quaternion that represents Relative Scale
AA )(T
B
A
B
A
B
A
)(
)()(
T
TTQT
161
Tensor and Versor of a Quaternion
• Versor operator
– Applies VERSION to a vector
– Changes vector’s orientation
• Tensor operator
– Applies TENSION to a vector
– Stretches the vector and change its
length
162
Tensor and Versor of a Quaternion
• Vector decomposed in Versor and
Tensor parts
• Quaternion decomposed in Versor
and Tensor parts
AAAAA ˆ)()( UT
)(
)(
)(
)()()(
B
A
B
A
U
U
T
TQUQTQ
Fim da Aula 14
172
Elementary Versors
173
Index of Right Quaternions
• Is the Axis of the quaternion Scaled by the ratio of lengths
180
Multiplying a Right Versor by a Scalar
• Multiplication by a Scalar– Affects only Scalar part of the Right
Versor– Modifies the length ratio of the
vectors in the Quotient
181
Right Versor in terms of Orthogonal Right Versor
• If the Orthogonal Right Versors i, j, k are multiplied by Scalars x, y, z
• Their sum will be a Right Versor whose axis has (x, y, z) as components
187
Quaternions as Four Coefficients
• Let L be the Ratio of lengths
between vectors A and B
• Thus, the scalar factor S isB
AL
)cos(
)cos(
LS
S
B
A
B
BS
B
A
BS
BR
188
Quaternions as Four Coefficients
• Let L be the Ratio of lengths
between vectors A and B
• Thus, the Tensor of the Right partB
AL
)sin(
)sin(
LR
R
B
A
B
BR
B
A
BS
BR
189
Quaternions as Four Coefficients
• Then, the Quaternion Q can be written as
Q = x i +y j +z k +w
• w (real) is Scalar part• (x i +y j +z k) is the Right part
)sin(
)cos(
222
Lzyx
Lw
192
Representation by four coefficients
• Let the representation of P and Q be
• Their composition P Q is
193
Representation by four coefficients
• Let the representation of P and Q be
• Their composition P Q is
194
Rotating a Vector (Finally !!)
• A Quaternion q = (x, y, z, w) rotates a Vector v by using the product
v’ = q v q-1 = q (v q-1 )• Which can be reduced to a Matrix-
Vector multiplication L(q) R(q-1)v
w2 x2 - y2 - z2 2xy 2wz 2xz 2wy 0
2xy 2wz w2 x2 y2 - z2 2yz - 2wx 0
2xz 2wy 2yz 2wx w2 x2 y2 z2 0
0 0 0 w2 x2 y2 z2
195
Quaternion Algebra
• Consider quaternions
• Sum and Subtraction of quaternions
),(
),(
1111111
0000000
v
v
wkzjyixwQ
wkzjyixwQ
Q0 Q1 w0 w1 x0 x1 i y0 y1 j z0 z1 kQ0 Q1 w0 w1,v0 v1
196
Quaternion Algebra
• Multiplications of primitive elements
jikki
ikjjk
kjiij
kji
1222
197
Quaternion Algebra
• Multiplication of quaternions
Q0Q1 w0 x0i y0 j z0k w1 x1i y1 j z1k w0w1 x0x1 y0y1 z0z1 w0x1 x0w1 y0z1 z0y1 i w0y1 y0w1 z0x1 x0z1 j w0z1 z0w1 z0x1 x0z1 k
Q0Q1 w0w1 v0 v1 ,w0v1 w1v0 v0 v1
198
Quaternion Algebra
• Conjugate of quaternions
K(Q)Q* w xi yj zk *
w xi yj zk K(K(Q)) Q* * Q
K(Q1Q2) Q1Q2 * Q2*Q1
*
199
Quaternion Algebra
• Norm of quaternions
N(Q) N w xi yj zk w 2 x2 y2 z2
N(K(Q))N Q* N(Q)
N(Q1Q2)N(Q1)N(Q2)
200
Quaternion Algebra
• The multiplicative inverse, Q-1
QQ 1 Q 1Q1
Q 1 Q*
N(Q)
Q 1 1Q
Q1Q2 1 Q2 1Q1
1
201
Quaternion Algebra
• The Selection function, W(Q)
• Dot product of two quaternions
W (Q) W w xi yj zk w
W (Q) QQ* /2
Q0 Q1 w0w1 x0x1 y0y1 z0z1
W Q0Q1*
202
Quaternion Algebra
• Unit quaternion has N(Q)=1• Represented by
Q cos()usin()
u uxi uy j uzk
ux,uy,uz 1
uu 1 - Quaternion product
203
Quaternion Algebra
• Extension of Euler’s identity
•
Power of a unit quaternion
)sin()cos()exp( uu
)sin()cos(
)exp())sin()(cos(
ttQ
tQt
tt
u
uu
204
Fórmula de Euler
• Série de Taylor
205
Fórmula de Euler
• Série de Taylor
206
Quaternion Algebra
• Extension of Euler’s identity
•
Logarithm of a unit quaternion
• Non-commutativity of quaternion
multiplication disallows log and exp
identities
)sin()cos()exp( uu
uu
u
))log(exp()log(
))sin()log(cos()log(
Q
Q
207
Rotation around an axis
v// = Pu(v) = Pu(v)u = (v.u)uv = v - v// = v - (v.u)uuv = |v|u(Plano de u e v)
|v| = | uv | = |v’|v’ = |v’|cosuv +|v’|senuuv
= (v - (v.u)u) cos + uv sen
uz
y
xv
v’
uv
v
v’
v//
Plane perpendicular to the direction of u
208
• Decomposition of Rotated vector
Rotation around an axis
)sin()())cos(1)()(()cos(
)sin()()cos())(()(
'' //
vuuuvv
vuuuvvuuv
vvv
209
• Rotation using a unit quaternionQ=cos()+u sin()
• Vector v is rotated of 2about the axis defined by the unit vector u
Rotation around an axis
*)(' QQR vvv
210
• Conditions to prove– v’ is a 3D vector
W(v’) = 0– R is a length preserving operator
N(v’) = N(v)– R is a linear operator
R(v + w) = R(v) + R(w)– R(u) = u
Rotation around an axis
211
Rotation around an axis
• u, v, w are orthonormal 3D vectors
• Suppose v is rotated by with the
unit quaternion of axis u
v’=qvq* v.v’=cos()
u
v
w
212
)cos()sin()()sin()cos(
)sin()cos()sin(
)cos()sin()cos(
))sin()cos())(sin()cos((
))sin()(cos())sin()(cos(
)()()cos(
22
22
222
***
vuvu
vuvuv
uvv
vuvvuv
uvuv
vvvv
W
W
W
W
qqWqq
Rotation around an axis
213
Rotation around an axis
• Therefore = 2
uuwvvuv
wvu
)(
)2cos()sin()cos(
)cos()sin(2)sin()cos()cos(22
22
uW
Recommended