Escolar Documentos
Profissional Documentos
Cultura Documentos
Computação Gráfica
Marcel P. Jackowski
mjack@ime.usp.br
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
v w
v -v αv
u
Espaços vetoriais
l Sistema matemático para manipulação de
vetores
l Operações
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
Q Q
α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
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
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
⎡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
⎢ γ 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
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
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
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.