Você está na página 1de 60

Introdução à

Computação Gráfica
Marcel P. Jackowski
mjack@ime.usp.br

Aula #5: Objetos geométricos e


transformações
Objetos geométricos
l  A geometria estuda os relacionamentos entre objetos
em um espaço n-dimensional
l  Em CG, estamos interessados em objetos que
existem nas dimensões 2 e 3
l  Precisamos definir um número mínimo de primitivas
para que possamos formar objetos mais complexos
l  Precisaremos de 3 elementos básicos
l  Escalares

l  Vetores

l  Pontos
Escalares
l  Membros de conjuntos que podem ser
combinados por duas operações básicas
(adição e multiplicação)
l  Obedecem alguns axiomas fundamentais
(associatividade, comutatividade, inverso,
etc)
l  Exemplos: conjuntos dos números reais e
complexos
l  Não possuem propriedades geométricas
Vetores
l  Um vetor é uma quantidade com dois
atributos
l  Direção
l  Magnitude
l  Exemplos:
l  Força
l  Velocidade
v
l  Segmentos de reta orientados
Operações com vetores
l  Todo vetor possui um vetor inverso
l  Mesma magnitude mas direção oposta

l  Todo vetor pode ser multiplicado por um escalar


l  Existência do vetor nulo
l  Magnitude 0, direção indefinida

l  A soma de dois vetores é um vetor

v w
v -v αv
u
Espaços vetoriais
l  Sistema matemático para manipulação de
vetores
l  Operações

l  Multiplicação escalar-vetor u=αv

l  Adição vetor-vetor: w=u+v

l  Expressões como


v=u+2w-3r
fazem sentido em um espaço vetorial.
Vetores não possuem posição
l  Estes vetores são idênticos
l  Mesma orientação e magnitude

l  Espaços vetoriais insuficientes para geometria


l  Precisamos de pontos!
Pontos
l  Posições no espaço
l  Operações entre pontos e vetores
l  Subtração entre pontos
l  Adição entre ponto e vetor
Q
v=P-Q
v
P=v+Q

P
Espaço vetorial afim
  
l  Soma de vetores t = v +u
y
Multiplicação de vetor por 
l 
escalar u

Subtração de pontos
v
l  x
l  Soma de ponto com vetor

y  v
y v
P   
v u = 2v
Q
x
x
Retas
l  Considere todos os pontos da forma
l  P(α)=P0 + α d
l  Conjunto de todos os pontos que passam por P0
na direção do vetor d
Forma paramétrica da reta
l  Mais robusta e geral que outras formas
l  Extensível para curvas e superfícies
l  Formas bidimensionais
l  Explícita: y = mx + h
l  Implícita: ax + by + c = 0
l  Paramétrica:
x(α) = x0 + αvx
y(α) = y0 + αvy
Raios e segmentos de reta
Se α >= 0, então P(α) é o raio que deixa P0
l 
na direção d
Se usarmos dois pontos para definir v, então
P(α) = Q + α (R-Q) =
Q + αv =
αR + (1-α)Q

Para 0<=α<=1 nós obteremos


todos os pontos do segmento de reta
que une R e Q
Convexidade
l  Um objeto é convexo se e somente se para quaisquer
dois pontos no objeto, todos os pontos no segmento de
reta entre estes dois pontos também pertencem ao
objeto.
P
P

Q Q

convexo não convexo


Fecho convexo
l  Menor objeto convexo que contém P1,P2,…..Pn,
P=α1P1+α2P2+…..+αnPn

α1+α2+…..αn=1
αi>=0
Curvas e Superfícies
l  Curvas são entidades baseadas em um
parâmetro descritas como P(α) onde a função é
não linear
l  Superfícies são formadas por funções de dois
parâmetros P(α, β)
l  Funções lineares dão origem à polígonos e planos

P(α) P(α, β)
Planos
l  Um plano pode ser definido por um ponto e
dois vetores ou por três pontos
P

Q
R u R

P(α,β)=R+αu+βv P(α,β)=R+α(Q-R)+β(P-Q)
Triângulos

soma convexa entre S(α) e R

soma convexa entre P e Q

Para 0<=α,β<=1, obteremos todos os pontos do triângulo


Coordenadas baricêntricas
O triângulo é convexo então qualquer ponto
pode ser representado pela soma afim
P(α1, α2, α3)=α1P+α2Q+α3R
onde:
α1+ α2 +α3 = 1
αi>=0
Esta representação é chamada de coordenada
ou representação baricêntrica de P
Normais
l  Em 3D, cada plano possui um vetor
perpendicular ou ortogonal à ele chamado de
vetor normal
l  Dados P(α,β)=P0+αu+βv, podemos achar n e a
forma equivalente (P(α, β)-P0) ⋅ n = 0 através do
produto vetorial n = u × v

v
P0 u
Independência linear
l  Um conjunto de vetores v1, v2, …, vn é
linearmente independente quando
α1v1+α2v2+.. αnvn= 0 e α1=α2=…=0
l  Se um conjunto de vetores é linearmente
independente, não podemos representar um
vetor em função de outros vetores
l  Se forem linearmente dependentes, pelo menos
um vetor pode ser escrito em termos dos outros
vetores
Dimensão
l  Em um espaço vetorial, o número máximo de
vetores linearmente independentes é fixo e é
chamado de dimensão do espaço
l  Em um espaço n-dimensional, qualquer conjunto
de n vetores linearmente independentes formam
uma base para aquele espaço
l  Dada uma base v1, v2,…., vn, qualquer vetor v pode
ser escrito como:
v=α1v1+ α2v2 +….+αnvn
onde {αi} são únicos
Representação
l  Até o momento, temos trabalhado com
entidades geométricas sem utilizar um
referencial (i.e. sistema de coordenadas)
l  Mas precisamos de um referencial para
relacionar pontos e objetos em nosso mundo
físico.
l  Por exemplo, onde está localizado um ponto?
Impossível de responder sem um referencial
l  Coordenadas do mundo
l  Coordenadas da câmera
Sistemas de coordenadas
l  Considere uma base v1, v2,…., vn
l  Um vetor é expresso como v=α1v1+ α2v2 +….+αnvn
l  A lista de escalares {α1, α2, …. αn} é a
representação de v em função daquela base
l  Podemos escrever esta representação como um
vetor linha ou coluna de escalares
⎡ α1 ⎤
⎢ α ⎥
⎢ 2 ⎥
T
a=[α1 α2 …. αn] = ⎢ . ⎥
⎢α ⎥
⎢ n ⎥
⎣ ⎦
Exemplo
l  v=2v1+3v2-4v3
l  a=[2 3 –4]T

l  Note que esta representação é dependente


de uma base em particular
l  Por exemplo, em OpenGL/WebGL
utilizaremos vetores para descrever uma
base representativa do objeto, e mais tarde
bases para descrição da câmera ou do
observador.
Sistemas de coordenadas
l  Dadas as duas bases abaixo, qual delas
constitui uma base correta ?

v
v
Sistema de referência
l  Um sistema de coordenadas é insuficiente para
representar pontos
l  Se trabalharmos em um espaço afim,
poderemos adicionar um ponto, a origem, aos
vetores base para formar um sistema de
referência
v2
v1
P0

v3
Sistemas de referência
l  Sistemas de referência podem ser
representados pela tupla (P0, v1, v2, v3)
l  Cada vetor pode ser então expresso por

v = α1v1+ α2v2 +….+αnvn


l  Cada ponto pode ser representado como

P = P0 + β1v1+ β2v2 +….+βnvn


Confusão entre pontos e vetores
Considere o ponto e o vetor abaixo:
P = P0 + β1v1+ β2v2 +….+βnvn
v = α1v1+ α2v2 +….+αnvn
Elas possuem representações semelhantes:
p=[β1 β2 β3] v=[α1 α2 α3] v
o que pode confundir pontos com vetores p
Mas um vetor não possui posição! v

Vetores podem assumir


qualquer posição pontos: fixos
Uma única representação
Que tal definir vetores e pontos com uma
coordenada adicional:

v=α1v1+ α2v2 +α3v3 = [α1 α2 α3 0 ] [v1 v2 v3 P0] T


P = P0 + β1v1+ β2v2 +β3v3= [ β1 β2 β3 1 ] [v1 v2 v3 P0] T

Desta forma, obtemos uma representação


quadridimensional chamada de coordenadas
homogêneas
v = [α1 α2 α3 0 ] T
p = [β1 β2 β3 1 ] T
Exemplo: translação
l  Podemos representar
Q
uma translação em
termos de uma
d multiplicação entre
matriz e vetor ?
P
!Qx $ ! m11 m12 $! Px $
# &=# &# &
!Qx $ ! Px $ !d x $ "Qy % #" m21 m22 &%" Py %
# & = # &+# &
"Qy % " Py % "d y %
Coordenadas Homogêneas
l  Que tal se aumentássemos a
dimensionalidade ?

⎡Qx ⎤ ⎡1 0 d x ⎤ ⎡ Px ⎤
Q ⎢ ⎥ ⎢ ⎢ ⎥
⎥
⎢Qy ⎥ = ⎢0 1 d y ⎥ ⎢ Py ⎥
⎢1 ⎥ ⎢⎣0 0 1 ⎥⎦ ⎢1 ⎥
d ⎣ ⎦ ⎣ ⎦
P P = [Px,Py,1]T
Q= [Qx,Qy,1]T
d = [dx,dy,0]T
Coordenadas Homogêneas
l  A transformação de vetores é operacionalmente
diferente de pontos
l  Coordenadas homogêneas permitem unificar o
tratamento
l  Problema é levado para uma dimensão superior:
l  Coordenada extra w=0 para vetores e w=1 p/ pontos
l  Termos independentes formam uma coluna extra na
matriz de transformação
! x' $ ! a b e $! x $ ! x' $ ! a b e $! x $
# & # &# & # & # &# &
# y' & = # c d f &# y & # y' & = # c d f &# y &
# 1 & # 0 0 1 &%#" 1 &% # 0 & # 0 0 1 &%#" 0 &%
" % " " % "
Coordenadas Homogêneas
l  O sistema de coordenadas homogêneas são
cruciais para CG:
l  Todas as transformações clássicas (rotação,
translação, escala) podem ser implementadas por
multiplicações entre matrizes 4x4
l  O pipeline de hardware trabalha nativamente com
representações quadridimensionais
l  Para projeção ortográfica, podemos manter w=0 para
vetores e w=1 para pontos
l  Para projeção perspectiva, precisaremos de um fator
de divisão
Mudanças entre sistemas
de coordenadas
l  Considere duas representações do mesmo
vetor em duas bases diferentes:
a = [ α1 α2 α3 ]
b = [ β1 β2 β3 ]
onde
w=α1v1+ α2v2 +α3v3 = [α1 α2 α3] [v1 v2 v3]T
=β1u1+ β2u2 +β3u3 = [β1 β2 β3] [u1 u2 u3]T
Base secundária em função de
uma base primária
Cada um dos vetores da base secundária u1, u2, u3,
podem ser representados em função da primeira
base:

w
u1 = γ11v1+γ12v2+γ13v3
u2 = γ21v1+γ22v2+γ23v3
u3 = γ31v1+γ32v2+γ33v3
Forma matricial
Tais coeficientes definem uma matriz 3 x 3
⎡ γ11 γ12 γ13 ⎤
⎢ γ γ 22 γ 23 ⎥⎥
M = ⎢ 21
⎢⎣ γ 31 γ 32 γ 33 ⎥⎦
e então estas bases se relacionam através da
transformação u=Mv
w = bTMv = aTv
w=α1v1+ α2v2 +α3v3 = [α1 α2 α3] [v1 v2 v3]T
a = MTb
=β1u1+ β2u2 +β3u3 = [β1 β2 β3] [u1 u2 u3]T
b = (MT)-1a
Mudanças entre referenciais
l  Podemos aplicar o mesmo processo utilizando
coordenadas homogêneas:

Considere os sistemas de u1 u2
referências: v2
Q0
(P0, v1, v2, v3)
P0 v1
(Q0, u1, u2, u3)
u3
v3
l  Qualquer ponto ou vetor pode ser representado em
qualquer um dos sistemas
l  Podemos representar Q0, u1, u2, u3 em termos de P0, v1,
v2, v3
Representado um referencial
em função de outro
Extendendo o que fizemos com mudanças entre bases:
u1 = γ11v1+γ12v2+γ13v3
u2 = γ21v1+γ22v2+γ23v3
u3 = γ31v1+γ32v2+γ33v3
Q0 = γ41v1+γ42v2+γ43v3 +P0

⎡ γ11 γ12 γ13 0⎤


⎢ γ γ 22 γ 23 0⎥⎥
M= ⎢ 21

⎢ γ 31 γ 32 γ 33 0⎥
⎢ ⎥
⎣ γ 41 γ 42 γ 43 1⎦
Trabalhando com representações
Em dois sistemas de referências quaisquer,qualquer
ponto ou vetor possui uma mesma representação

a=[α1 α2 α3 α4 ] no primeiro referencial


b=[β1 β2 β3 β4 ] no segundo referencial

onde α4 = β4 = 1 para pontos e α4 = β4 = 0 para vetores:


a=MTb
A matriz M é 4 x 4 e representa uma transformação afim em
coordenadas homogêneas
Transformações afim
l  Cada transformação linear é equivalente à
uma mudança de referencial
l  Toda transformação afim preserva retas

l  Uma transformação afim possui 12 graus de


liberdade já que 4 dos elementos são fixos e
representam um subconjunto de todas as
possiveis transformações lineares 4 x 4.
Sistemas do mundo e da câmera
l  Quando trabalharmos com representações,
utilizaremos n-tuplas ou arrays de n escalares
l  Mudanças em sistemas de referências são
definidas por matrizes 4 x 4
l  No OpenGL, referencial primário é o referencial do
mundo
l  Eventualmente representaremos entidades no
sistema da câmera, mudando a representação do
mundo utilizando uma matriz (i.e. model-view)
Inicialmente elas são as mesmas (M=I)
Movimentando a câmera
Se objetos estão localizados em ambos os lados do
z=0, devemos mudar o sistema da câmera
⎡1 0 0 0 ⎤
⎢0 1 0 0 ⎥⎥
⎢
M= ⎢0 0 1 − d ⎥
⎢ ⎥
⎣0 0 0 1 ⎦
Transformações
l  Transformação é uma função que mapeia
pontos (vetores) entre outros pontos (vetores)

v=T(u)

Q=T(P)
Exemplo de transformação
l  A casa foi escalada, rotacionada e transladada, em
2D e 3D.
Usando transformações
l  Cada arco foi desenhado no seu próprio
sistema de coordenadas.
l  A cena abaixo é criada através do desenho
de várias instâncias do arco em posições e
tamanhos diferentes.
Usando transformações
l  Em 3D, um conjunto de cubos pode se
assemelhar à uma cidade;
Usando transformações
l  Um floco de neve é simétrico.
l  Podemos iniciar com um simples perfil e
desenhar toda a figura usando reflexões,
rotações e translações deste perfil.
use it 12 times
Usando transformações
l  Um desenhista pode desejar visualizar um
objeto de diferentes perspectivas.
l  O posicionamento e reorientação da câmera
pode ser feito através de transformações.
Usando transformações
l  Em uma animação, objetos em uma cena se
movimentam
l  Esta movimentação é criada através de translações
e rotações des seus sistemas de coordenadas a
medida que a animação prossegue
l  Em OpenGL, podemos aplicar uma série de
operações que serão aplicadas em todos os pontos
de um objeto
l  O objeto é desenhado depois das transformações
de seus pontos
Transformações
l  Porém, T poderá ter qualquer forma:

⎛ cos( Px )e − Px ⎞
⎛ Qx ⎞ ⎜ ⎟
⎜ ⎟ ⎜ ln( Py ) ⎟
⎜ Q y ⎟ = ⎜ 2 ⎟
⎜ 1 ⎟ ⎜ 1 + P x
⎝ ⎠ 1 ⎟
⎝ ⎠
l  Nos restringiremos às transformações afins,
ou seja, que sejam lineares em Px e Py.
Efeitos geométricos das
transformações afins
l  Exemplos: (a) translação, (b) escala, (c) rotação, e
(d) cisalhamento
Implementação do pipeline

T (vindo da aplicação)

frame
u T(u) buffer
transformação rasterizador
v T(v) T(v)

v T(v) T(u)
u T(u)
vértices vértices pixels
Translação
l  Mover (transladar) um ponto para uma nova
posição P’

d
P

l  Translação determinada pelo vetor d


l  P’=P+d
l  Três graus de liberdade
Movendo vários pontos

objeto
cada ponto é transladado
pelo mesmo vetor
Translação em coordenadas
homogêneas
p = [ x y z 1 ]T
p’= [ x’ y’ z’ 1 ]T
d = [ dx dy dz 0 ]T

Então p’ = p + d ou

note que esta expressão está


x’= x + dx em 4D e representa a operação
y’= y + dy ponto = vetor + ponto
z’= z + dz
Matriz de translação
Podemos expressar a translação através de uma mariz
4 x 4 T em coordenadas homogêneas:

p’=Tp onde ⎡1 0 0 d x ⎤


⎢0 1 0 d y ⎥
⎢ ⎥
⎢0 0 1 d z ⎥
T = T(dx, dy, dz) = ⎢ ⎥
⎣0 0 0 1 ⎦
Escala
Expandir ou contrair ao longo de um eixo
x’= sxx
y’= syy
z’= szz
p’= Sp
⎡ sx 0 0 0⎤
⎢ 0 sy 0 0⎥
S = S(sx, sy, sz) = ⎢ ⎥
⎢ 0 0 sz 0⎥
⎢ ⎥
⎣ 0 0 0 1⎦
Reflexão
Correspondente a fatores negativos de escala

sx = -1 sy = 1 original

sx = -1 sy = -1 sx = 1 sy = -1
Transformações inversas
l  Inversa da ⎛ Q ⎞ ⎛
translação (T-1): ⎜ x ⎟ ⎜ 1 0 −t ⎞⎟⎛⎜ P ⎞⎟
x x
⎜ Q ⎟ = ⎜
⎜ y ⎟ ⎜ 0 1 −t ⎟⎟⎜⎜ P ⎟⎟
y y
⎜ 1 ⎟ ⎜⎝ 0 0 1 ⎟⎠⎜⎝ 1 ⎟⎠
⎝ ⎠

Inversa da escala ⎛ Q ⎞ ⎛
l  ⎜ x ⎟ ⎜1 / S x 0 0 ⎞⎟⎛⎜ P ⎞⎟ x
⎜ Q ⎟ = ⎜
⎜ y ⎟ ⎜ 0 1 / S 0 ⎟⎟⎜⎜ P ⎟⎟
(S-1): y y
⎜ 1 ⎟ ⎜⎝ 0 0 1 ⎟⎠⎜⎝ 1 ⎟⎠
⎝ ⎠
Tarefa de casa
l  Como a área/volume de uma figura é afetada por
uma transformação linear afim ?
l  Translações ?
l  Escalas ?
l  Respostas no fórum da disciplina.

Você também pode gostar