Introdução à Computação Gráfica
Geometria
Adaptação:
Autoria:
João Paulo Pereira
António Costa
Claudio Esperança
Paulo Roma Cavalcanti
Pontos e Vectores (2D)
• Ponto: Denota posição no
plano
• Vector: Denota
deslocamento, isto é, inclui a
noção de direcção e
magnitude
• Ambos são normalmente
expressos por pares de
coordenadas (em 2D) mas
não são a “mesma coisa”
P = ( xP , y P )
r
v = ( xv , yv )
y
P
v
01-03-2007
x
2
Operações com Pontos e
Vectores (2D)
• Soma de vectores
y
t=v+u
u
• Multiplicação de vector por
escalar
v
u=2v
• Subtracção de pontos
x
v=Q–P
• Soma de ponto com vector
Q=P+v
y
v
v
y
P
v
Q
x
x
01-03-2007
3
Transformações
• Transformação é uma função que faz corresponder
pontos de um espaço Euclidiano a outros (ou
possivelmente os mesmos) pontos do mesmo espaço
• Se uma transformação é linear, então
Se um conjunto de pontos pertence a uma recta,
depois de transformados eles também pertencerão a
uma recta
Se um ponto P guarda uma relação de distância com
dois outros pontos Q e R, então essa relação de
distância é mantida pela transformação
• Transformação faz corresponder a origem à origem?
Sim: Transformação Linear
Não: Transformação Linear Afim: Translações são
permitidas
01-03-2007
4
Transformações Lineares em 2D
• Uma transformação linear
 x' = ax + by

 y ' = cx + dy
• Uma transformação linear afim
 x' = ax + by + e

 y ' = cx + dy + f
01-03-2007
5
Forma Matricial
• Mais conveniente para uso em computador.
Sejam
 x
P= 
 y
 x'
P' =  
 y '
a b 
A=

c
d


e
D= 
f
• Então uma transformação linear afim pode
ser escrita T (P ) = P’ em que
P' = A × P + D
01-03-2007
6
Transformação de Vectores
• Um vector não está aplicado a um ponto no espaço
• Uma transformação linear afim aplicada a um vector
não inclui translação
• Demonstração: Seja V um vector e V’ a sua imagem
sob a transformação linear afim. Então:
V = Q − P ⇔ V ' = Q '− P '
V ' = Q '− P'
= ( A × Q + D) − ( A × P + D)
= A × (Q − P)
= A ×V
01-03-2007
7
Coordenadas Homogéneas
• A transformação de vectores é operacionalmente diferente da
de pontos
• Coordenadas homogéneas permitem unificar o tratamento
• Problema é levado para uma dimensão superior:
Coordenada extra w = 0 para vectores e w = 1 para pontos
Termos independentes formam uma coluna extra na matriz de
transformação
 x' a b
 y ' =  c d
  
 1  0 0
01-03-2007
e   x



f  ×  y
1   1 
 x' a b
 y ' =  c d
  
 0  0 0
e   x



f  ×  y
1   0 
8
Coordenadas Homogéneas Interpretação
y
Plano w=0
Plano w=1
w
01-03-2007
x
9
Modelação de Transformações
• Uma t.l.a. em 2D pode ser definida se dispusermos
da imagem de 3 pontos do domínio
y
P
P’
Q
R
R’
Q’
 x P ' = a.x P + b. y P + e
 y = c.x + d . y + f
P
P
 P'
 xQ ' = a.xQ + b. yQ + e

 yQ ' = c.xQ + d . yQ + f
 x R ' = a.x R + b. y R + e

 y R ' = c.x R + d . y R + f
x
01-03-2007
10
Sistemas de coordenadas
• Um sistema de coordenadas para Rn é definido por
um ponto (origem) e n vectores
• Ex.: Seja um sistema de coordenadas para R2 definido
pelo ponto O e os vectores X e Y. Então
Um ponto P é dado por coordenadas xP e yP tais que
P = x P . X + y P .Y + O
Um vector V é dado por coordenadas xV e yV tais que
V = xV . X + yV .Y
01-03-2007
11
Mudança de Sistema de
Coordenadas
• Se estabelecemos um outro sistema (ex.: Q/T/U),
como calcular as novas coordenadas em função das
antigas?
T
P
Y
Q
t PT + u PU
x P X + y PY
U
O
01-03-2007
X
12
Mudança de Sistema de
Coordenadas
• Como calcular as coordenadas de um ponto P = (xP,
yP) em O/X/Y dadas as coordenadas de P em
Q/T/U, isto é, (tP, uP) ?
P = tP.T + uP.U + Q
= tP.(xT .X + yT .Y ) + uP.(xU .X + yU .Y ) + ( xQ.X + yQ.Y + O)
= (tP.xT + uP.xU + xQ ).X + (tP. yT + uP. yU + yQ ).Y + O
Logo,
x P = t P .xT + u P .xU + xQ
y P = t P . y T + u P . yU + y Q
01-03-2007
13
Mudança de Sistema de
Coordenadas
• Matricialmente:
 x P   xT
y  = y
 P  T
xU   t P   xQ 
× + 

yU  u P   yQ 
• Usando coordenadas homogéneas:
 xP   xT
 yP  =  y
   T
1   0
xU
yU
0
xQ   t P 
yQ  × u P 
 
1  1 
• Para resolver o problema inverso:
01-03-2007
 t P   xT
u P  =  y
   T
1   0
xU
yU
0
−1
xQ 
 xP 
yQ  ×  y P 
 
1 
1 
14
Transformações em 3D
• Vectores e pontos em 3D
 Px 
P 
P =  y
 Pz 
 
1
Vx 
r V y 
V = 
Vz 
 
0
• Transformação linear afim
a b
d e
T =
g h

0 0
01-03-2007
c
f
i
0
j
k

l

1
15
Transformações Rígidas
• Não modificam a forma (dimensões/ângulos) do
objecto
• São compostas por uma rotação e uma translação
Submatriz de
Vector de
Rotação
Translação
a b
d e
T =
g h

0 0
01-03-2007
c
f
i
0
j
k

l

1
16
Translação
1
0
T =
0

0
y
0 0 tx 
1 0 t y   I 3 t 
=


0 1 tz
0
1



0 0 1
x
z
1
0
P' = T × P = 
0

0
• As translações são
comutativas:
P+t+v=P+v+t
01-03-2007
0 0 t x   Px   Px + t x 
1 0 t y   Py   Py + t y 
×
= P+t
=





0 1 tz
Pz
Pz + t z
   

0 0 1  1   1 
17
Rotação em torno do eixo Z
• Podemos ver que ao vector (1,0,0)T corresponde (cos
α, sen α, 0)T e que ao vector (0,1,0)T corresponde
(- sen α, cos α, 0)T
y’
y
y
cos α
sen α
x
z
01-03-2007
x’
α
- sen
α
x
cos α
18
Rotação em torno do eixo Z
• Outra maneira de ver:
Px = r cos α
Py = r sin α
y
P’
r
01-03-2007
Sabemos que
θ
r
α
Px′ = r cos(α + θ )
Py′ = r sin(α + θ )
Então
Px′ = r cos α cos θ − r sin α sin θ
Py′ = r cos α sin θ + r sin α cos θ
P
x
Resultando que
Px′ = Px cos θ − Py sin θ
Py′ = Px sin θ + Py cos θ
19
Rotação em torno dos eixos
coordenados
• Rotação em torno de Z é dada pela matriz
cos θ
 sin θ

 0

 0
− sin θ
0 0
0 0
1 0

0 1
cos θ
0
0
• Do mesmo modo, em torno dos eixos Y e X
 cos θ
 0

− sin θ

 0
01-03-2007
0 sin θ
1
0
0 cos θ
0
0
0
0
0

1
0
1
0 cos θ

0 − sin θ

0
0
0
sin θ
cos θ
0
0
0
0

1
20
Rotações em geral
• Qualquer rotação pode ser definida por um
eixo de rotação dado pelo vector unitário u =
(x, y, z)T e um ângulo de rotação α
• Seja S a matriz
 0 −z y 
S= z
0 − x


0 
− y x
• Então a submatriz de Rotação M é dada por
M = uu T + (cos α )( I − uu T ) + (sinα )S
01-03-2007
21
Inclinação (“shear
(“shear”)
”)
• É uma transformação de deformação onde um eixo é “entortado”
em relação aos restantes
z
z
y
z´
y
x
x
• Se o vector unitário do eixo z é
transformado em [Shx Shy 1 0]T,
então a matriz de transformação
é dada por
01-03-2007
Tinclinação
1
0
=
0

0
0
Sh x
1
0
Sh y
1
0
0
0
0 
0

1
22
Escalamento
• Especificado por três factores (Sx, Sy , Sz) que multiplicam os vectores
unitários x, y, z
• Escalamento não é uma transformação rígida
• Escalamento uniforme (Sx = Sy = Sz) é uma operação ortogonal ou
homotética, isto é, preserva os ângulos
• Para obter reflexão em torno do plano y=0, usar os factores de escala
(1, -1, 1)
y
y
Tescala
x
z
01-03-2007
S x
0
=
0

0
0
0
Sy
0
0
Sz
0
0
0
0
0

1
x
z
23
Composição de transformações
em 3D
• Na nossa notação, usamos a pré-multiplicação:
P’ = T x P
• Para compor 2 transformações temos:
Se P’ = T1 x P e P’’ = T2 x P’ , então, P’’ = T2 x T1 x P
T2 × T1
T1
01-03-2007
T2
24
Geometria Afim
• Composta dos elementos básicos
escalares
pontos - denotam posição
vectores - denotam deslocamento (direcção e
magnitude)
• Operações
escalar— vector = vector
vector + vector ou vector – vector = vector
ponto – ponto = vector
ponto + vector ou ponto – vector = ponto
01-03-2007
25
Combinações Afim
• Maneira especial de combinar pontos
α1P1 + α 2 P2 + ... + α n Pn
n
onde
∑αi = 1
i =1
• Para 2 pontos P e Q poderíamos ter uma combinação
afim R = (1 – α)P +αQ = P +α(Q – P)
P
P
R= P + α(Q – P)
α<0
0<α<1
Q
01-03-2007
Q
α>1
26
Combinações Convexas
• Combinações afim onde se garante que todos
os coeficientes αi são positivos (ou nulos)
• Usa-se esse nome porque qualquer ponto que
é uma combinação convexa de n outros
pontos pertence à envolvente convexa desses
pontos
P2
P3
01-03-2007
P1
Q
P4
P5
27
Geometria Euclidiana
• Extensão da geometria afim pela adição de
um operador chamado produto interno
• Produto interno é um operador que
transforma um par de vectores num escalar.
Tem as seguintes propriedades:
Positividade : (u,u) ≥ 0 e (u,u) = 0 sse u=0
Simetria: (u,v) = (v,u)
Bilinearidade: (u,v+w)= (u,v)+ (u,w) e
(u,αv)= α(u,v)
01-03-2007
28
Geometria Euclidiana
• Normalmente usamos o produto escalar como
operador de produto interno:
r r d
u ⋅ v = ∑ ui vi
i =1
• Comprimento de um vector é definido como:
r
r r
v = v ⋅v
• Vector unitário (normalizado):
r
v
vˆ = r
v
01-03-2007
29
Geometria Euclidiana
• Distância entre dois pontos P e Q = |Q – P|
• O ângulo entre dois vectores pode ser determinado
por
r r

r r
−1 u ⋅ v
ângulo ( u , v ) = cos  r r  = cos −1 ( uˆ ⋅ vˆ )
u v 
• Projecção ortogonal: dados dois vectores u e v,
deseja-se decompor u na soma de dois vectores u1 e
u2 tais que u1 é paralelo a v e u2 é perpendicular a v
r r
r u ⋅v r r r r
u1 = r r v u2 = u − u1
v ⋅v
01-03-2007
u2
u
u1
v
30
Produto Vectorial (3D)
• Permite achar um vector perpendicular a outros dois vectores
• Útil na construção de sistemas de coordenadas
r
r r
u y v z − u z v y  i
j k
v
u×v
r r 

u × v =  u z vx − u x vz  = u x u y u z
u
.
u x v y − u y v x  vx v y v z


• Propriedades (assume-se u, v linearmente independentes):
01-03-2007
Antisimetria: u × v = – v × u
Bilinearidade: u × (αv) = α (u × v) e u × (v + w) = (u × v) + (u × w)
u × v é perpendicular tanto a u quanto a v
O comprimento de u × v é igual a área do paralelogramo definido
por u e v, isto é, | u × v | = | u | | v | sin θ
31
Orientação
• Orientação de 2 pontos em 1D
P1 < P2 , P1 = P2 ou P1 > P2
• Orientação de 3 pontos em 2D
O percurso P1 , P2 , P3 é feito no sentido dos ponteiros
do relógio, no sentido contrário ou são colineares
Or (P1, P2, P3) = -1
P1
Or (P1, P2, P3) = 0
Or (P1, P2, P3) = +1
P3
P3
P2
P3
01-03-2007
P2
P1
P2
P1
32
Orientação
• Orientação de 4 pontos em 3D
O percurso P1 , P2 , P3 , P4 define um parafuso
segundo a regra da mão direita, mão esquerda
ou são coplanares
Or (P1, P2, P3, P4) = +1
P3
P1
P4
01-03-2007
• O conceito pode ser
estendido a
qualquer número de
dimensões ...
P2
33
Determinação da Orientação
• A orientação de n+1 pontos num espaço
n-dimensional é dada pelo sinal do determinante
da matriz cujas colunas são as coordenadas
homogéneas dos pontos com o 1 em primeiro lugar
 1

Or2 ( P1 , P2 , P3 ) = sign  x1
y
 1
01-03-2007
1
x2
y2
1 

x3 
y3 



Or3 ( P1 , P2 , P3 , P4 ) = sign 



1
1
1
x1
x2
x3
y1
z1
y2
z2
y3
z3
1 

x4 
y4 

z 4 
34
Download

Introdução à Computação Gráfica Geometria