Introdução à Computação Gráfica
Geometria
Claudio Esperança
Paulo Roma Cavalcanti
Pontos e Vetores (2D)
• Ponto: Denota posição no plano
• Vetor: Denota deslocamento, isto é, inclui a noção de
direção e magnitude
• Ambos são normalmente expressos por pares de coordenadas (em 2D) mas não são a “mesma coisa”
x y P v
)
,
(
)
,
(
v v P Py
x
v
y
x
P
=
=
!
Operações com Pontos e Vetores (2D)
• Soma de vetores
t = v + u
• Multiplicação de vetor por escalar
u = 2 v
• Subtração de pontos
v = Q – P
• Soma de ponto com vetor
Q = P + v x y v u x y v x y P v v Q
Transformações
• Transformação é uma função que mapeia pontos de um espaço Euclidiano em outros (ou possivelmente os mesmos) pontos do mesmo espaço.
• Se uma transformação é linear, então
w Se um conjunto de pontos está contido em uma reta, depois de transformados eles também estarão
contidos sobre uma reta.
w 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 mapeia origem na origem?
w Sim: Transformação Linear
w Não: Transformação Linear Afim: Translações são permitidas
Transformações Lineares em 2D
• Uma transformação linear
• Uma transformação linear afim
⎩ ⎨ ⎧ + = + = dy cx y by ax x ' ' ⎩ ⎨ ⎧ + + = + + = f dy cx y e by ax x ' '
Forma Matricial
• Mais conveniente para uso em um
computador. Sejam
• Então uma transformação linear afim pode
ser escrita T (P ) = P
’
onde
⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = f e D d c b a A y x P y x P ' ' '
D
P
A
P
'
=
×
+
Transformando Vetores
• Um vetor não está atrelado a um ponto no espaço • Uma transformação linear afim aplicada a um vetor
não inclui translação
• Prova: Seja V um vetor e V’ sua imagem sob a
transformação linear afim, então:
'
'
'
Q
P
V
P
Q
V
=
−
⇔
=
−
V
A
P
Q
A
D
P
A
D
Q
A
P
Q
V
×
=
−
×
=
+
×
−
+
×
=
−
=
)
(
)
(
)
(
'
'
'
Coordenadas Homogêneas
• A transformação de vetores é operacionalmente diferente da de pontos.
• Coordenadas homogêneas permitem unificar o tratamento.
• Problema é levado para uma dimensão superior:
w w = 0 para vetores e w = 1 para pontos.
w Termos independentes formam uma coluna extra na matriz de transformação.
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
×
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
1
1
0
0
1
'
'
y
x
f
d
c
e
b
a
y
x
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
×
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
0
1
0
0
0
'
'
y
x
f
d
c
e
b
a
y
x
Coordenadas Homogêneas - Interpretação
x
y
w
Plano w=1 Plano w=0Modelando Transformações
• Uma transformação linear afim em 2D pode ser definida a partir da imagem de 3 pontos:
P
P’
Q
Q’
R
R’
x
y
⎪
⎪
⎪
⎪
⎩
⎪⎪
⎪
⎪
⎨
⎧
+
+
=
+
+
=
+
+
=
+
+
=
+
+
=
+
+
=
f
y
d
x
c
y
e
y
b
x
a
x
f
y
d
x
c
y
e
y
b
x
a
x
f
y
d
x
c
y
e
y
b
x
a
x
R R R R R R Q Q Q Q Q Q P P P P P P.
.
.
.
.
.
.
.
.
.
.
.
' ' ' ' ' 'Sistemas de coordenadas
• Um sistema de coordenadas para Rn é definido por
um ponto (origem) e n vetores
• Ex. Seja um sistema de coordenadas para R2 definido
pelo ponto O e os vetores X e Y. Então,
w Um ponto P é dado por coordenadas xP e yP tais que
w Um vetor V é dado por coordenadas xV e yV tais que
O
Y
y
X
x
P
=
P.
+
P.
+
Y
y
X
x
V
=
V. +
V.
Mudança de Sistema de Coordenadas
• Se estabelecemos um outro sistema (ex.: Q/T/U), como computar as novas coordenadas dadas as antigas? X Y O U T Q P
Y
y
X
x
P+
PU
u
T
t
P+
PMudança de Sistema de Coordenadas
• Como computar as coordenadas de um ponto P = (xP, yP) em O/X/Y dadas as coordenadas de P em Q/T/U, isto é,
(tP, uP) ? O Y y y u y t X x x u x t O Y y X x Y y X x u Y y X x t Q U u T t P Q U P T P Q U P T P Q Q U U P T T P P P + + + + + + = + + + + + + = + + = ). . . ( ). . . ( ) . . ( ) . . .( ) . . .( . . Q U P T P P t x u x x x = . + . + Q U P T P P t y u y y y = . + . + Logo,
Mudança de Sistema de Coordenadas
• Matricialmente:
• Usando coordenadas homogêneas:
• Para resolver o problema inverso: ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ + ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ × ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ Q Q P P U T U T P P y x u t y y x x y x ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ 1 1 0 0 1 P P Q U T Q U T P P u t y y y x x x y x ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ − 1 1 0 0 1 1 P P Q U T Q U T P P y x y y y x x x u t
Transformações em 3D
• Vetores e pontos em 3D
• Transformação linear afim
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 0 z y x V V V V! ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 1 z y x P P P P ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 1 0 0 0 l i h g k f e d j c b a T
Transformações Rígidas
• Não modificam a forma (dimensões /ângulos) do objeto
• São compostas de uma rotação e uma translação
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 1 0 0 0 l i h g k f e d j c b a T Submatriz de Rotação Vetor de Translação
Translação
⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 3 t I t t t T z y x t P t P t P t P P P P t t t P T P z z y y x x z y x z y x + = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ + + + = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ × ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = × = 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 '• Observe que translações são comutativas:
P + t + v = P + v + t
x y
Rotação em torno do eixo Z
• Podemos ver que o vetor (1,0,0)T é mapeado em:
(cos α, sen α, 0)T
• e que o vetor (0,1,0)T é mapeado em:
(- sen α, cos α, 0)T α x y cos α cos α sen α - sen α x’ y ’ x y z
Rotação em torno do eixo Z
• Outra maneira de ver:
α
α
sin cos r P r P y x = = θα
P
P‘
x
y
r
r
• Sabemos que)
sin(
)
cos(
θ
α
θ
α
+
=
ʹ
+
=
ʹ
r
P
r
P
y x • Entãoθ
α
θ
α
θ
α
θ
α
cos sin sin cos sin sin cos cos r r P r r P y x + = ʹ − = ʹ θ θ θ θ cos sin sin cos y x y y x x P P P P P P + = ʹ − = ʹ • Ou, finalmente,Rotação em torno dos eixos coordenados
• Similarmente, em torno dos eixos X e Y
⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ − 1 0 0 0 0 1 0 0 0 0 cos sin 0 0 sin cos θ θ θ θ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ − 1 0 0 0 0 cos sin 0 0 sin cos 0 0 0 0 1 θ θ θ θ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ − 1 0 0 0 0 cos 0 sin 0 0 1 0 0 sin 0 cos θ θ θ θ
Rotações em geral
• Qualquer rotação pode ser definida por um
eixo de rotação dado pelo vetor unitário
u = (x, y, z)
Te um ângulo de rotação
α
• Seja S a matriz
• Então a submatriz de Rotação M é dada por
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
−
−
=
0
0
0
S
x
y
x
z
y
z
S
sin
(
)
uu
I
)(
(cos
uu
M
=
T+
α
−
T+
α
)
Inclinação (“shear”)
• É uma transformação de deformação onde um eixo é “entortado” em relação aos demais
x y z x y z z´
• Se o vetor unitário do eixo z é levado em [Shx Shy 1 0]T, então a
matriz de transformação é dada
por ⎥⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 1 0 0 0 0 1 0 0 0 1 0 0 0 1 y x inclinação Sh Sh T
Escala
• Especificada por três fatores (Sx, Sy , Sz) que multiplicam os vetores unitários x, y, z.
• Escala não é uma transformação rígida,
• Escala uniforme (Sx = Sy = Sz) entretanto, é uma operação ortogonal ou homotética, isto é, preserva os ângulos.
• Para obter reflexão em torno do plano z = 0, usam-se fatores de escala (1, 1, -1). ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 1 0 0 0 0 0 0 0 0 0 0 0 0 z y x escala S S S T x y z x y z
Composição de transformações em 3D
• Em nossa notação, usamos pré-multiplicação:
w P’ = T x P
• Para compor 2 transformações temos:
w Se P’ = T1 x P e P’’ = T2 x P’ , então, P’’ = T2 x T1 x P 1
T
T
2 1 2T
T ×
Geometria Afim
• Composta dos elementos básicos
w
escalares
w
pontos - denotam posição
w
vetores - denotam deslocamento (direção e
magnitude)
• Operações
w
escalar · vetor = vetor
w
vetor + vetor ou vetor – vetor = vetor
w
ponto – ponto = vetor
Combinações Afim
• Maneira especial de combinar pontos
• Para 2 pontos P e Q poderíamos ter uma combinação afim R = (1 – α)P +αQ = P +α(Q – P) 1 onde ... 1 2 2 1 1 = + + +
∑
= n i i n nP P P α α α α P Q R= P+α(P – Q) P Q 0 < α < 1 α < 0 α > 1Combinações Convexas
• Combinações afim onde se garante que todos
os coeficientes α
isão positivos (ou zero)
• Usa-se esse nome porque qualquer ponto que
é uma combinação convexa de n outros
pontos pertence à envoltória convexa desses
pontos
P1 P2 P3 P4 P5 QGeometria Euclidiana
• Extensão da geometria afim pela adição de
um operador chamado produto interno
• Produto interno é um operador que mapeia
um par de vetores em um escalar. Tem as
seguintes propriedades:
w
Positividade : (u,u) ≥ 0 e (u,u) = 0 sse u=0
w
Simetria: (u,v) = (v,u)
w
Bilinearidade: (u,v+w)= (u,v)+ (u,w) e
(u,αv)= α(u,v)
Geometria Euclidiana
• Normalmente usamos o produto escalar como operador de produto interno:
• Comprimento de um vetor é definido como:
• Vetor unitário (normalizado):
∑
= = ⋅ d i i iv u v u 1 ! !v
v
v
!
=
!
⋅
!
v v v ! ! = ˆGeometria Euclidiana
• Distância entre dois pontos P e Q =|P – Q |
• O ângulo entre dois vetores pode ser determinado por
• Projeção ortogonal: dados dois vetores u e v, deseja-se decompor u na soma de dois vetores u1 e u2 tais que u1 é paralelo a v e u2 é perpendicular a v
) ˆ ˆ ( cos cos ) , ( 1 1 u v v u v u v u ângulo = ⋅ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⋅ = − ! ! − ! ! ! ! 1 2 1
v
u
u
u
v
v
v
u
u
!
!
!
!
!
!
!
!
!
−
=
⋅
⋅
=
v u u1 u2Produto Vetorial (3D)
• Permite achar um vetor perpendicular a outros dois dados • Útil na construção de sistemas de coordenadas
z y x z y x x y y x z x x z y z z y v v v u u u k j i v u v u v u v u v u v u v u ! ! ! ! ! = ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ − − − = ×
• Propriedades (assume-se u, v linearmente independentes): w Antisimetria: u × v = – v × u
w Bilinearidade: u × (αv) = α (u × v) e u × (v + w) = (u × v) + (u × w) w u × v é perpendicular tanto a u quanto a v
w O comprimento de u × v é igual a área do paralelogramo definido por u e v, isto é, | u × v | = | u | | v | sin θ
u v
u×v
Orientação
• Orientação de 2 pontos em 1D
w P1 < P2 , P1 = P2 ou P1 > P2
• Orientação de 3 pontos em 2D
w O percurso P1 , P2 , P3 é feito no sentido dos ponteiros do relógio, no sentido contrário ou são colineares
P1 P3 P2 P3 P1 P2 P3 P2 P1 Or (P1, P2, P3) = +1 Or (P1, P2, P3) = -1 Or (P1, P2, P3) = 0
Orientação
• Orientação de 4 pontos em 3D
w
O percurso P
1, P
2, P
3, P
4define um parafuso
segundo a regra da mão direita, mão esquerda
ou são coplanares
P1
P4 P2
Or (P1, P2, P3, P4) = +1
P3
• O conceito pode ser
estendido a
qualquer número de
dimensões ...
Computando orientação
• A orientação de n+1 pontos no Rn é dado pelo sinal do determinante da matriz cujas colunas são as
coordenadas homogêneas dos pontos com o 1 vindo
primeiro ⎟ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎜ ⎝ ⎛ = 3 2 1 3 2 1 3 2 1 2 1 1 1 sign ) , , ( Or y y y x x x P P P ⎟ ⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎛ = 4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1 3 1 1 1 1 sign ) , , , ( Or z z z z y y y y x x x x P P P P