Você está na página 1de 29

Computação Gráfica

Curvas e Superfícies

Luis Rivera
Modelagem de Curvas

• Conjunto de pontos
Š Utiliza área de armazenamento
Š Segmentos de retas entre pontos
• Curva aproximada...

• Curva analítica
Š Utiliza de 1 ou mais equações
Š Exata e compacta
Š Não usa área de armazenamento
Š Facilita cálculo de novos pontos
Š fácil transformação geométrica • y = 3x3 + 2x2 - 4x + 1
Š Paramétricas e no paramétricas • f(t) = (2t3+t2-4, 3t3-2t-3)
Curvas em Objetos

• Representação
simplificada de objetos
Š Contornos
• Bezier: Projectos Renault
Š Definição de malhas
Š Características internas
• Contornos de sombras
• Arrugas, etc.
• Formas de objetos
Š Letras
Š Objetos irregulares
Curvas e Superfícies Paramétricas
• Comum usar CURVA PARAMÉTRICA
Š Fácil desenho da curva/superfície No-paramétrica:
No-paramétrica:
(aproximada)
Š Fácil segmentar •• Explícita:
Explícita: FF(x)
(x)==yy
• Segmento a ser usado •y22==44--xx22
•y
Š Manipulação algébrica mais simples
• Curva em 3D •• Implícita:
Implícita: F(x,y)
F(x,y)==00

Š C(t) = [Cx(t) Cy(t) Cz(t)]T •y22++xx22––44==00


•y
• Superfície em 3D Paramétrica:
Paramétrica:
Š S(u, v) = [Sx(u, v) Sy(u, v) Sz(u, v)]T F(t)==(f(fx(t),
(t),ffy(t))
(t))
F(t) x y

ffxx(t)
(t)==2cos(t)
2cos(t)
(t)==2sen(t)
ffyy(t) 2sen(t)
Características
Continuidade e Suavidade

• Curvas e Superfícies “suaves”


Š Continuidade: C0 → sen “saltos”
Š Continuidade: C1 → tangentes C0
variam suavemente
Š Continuidade: Ck → k-ésimas
derivadas contínuas

• Alternativamente, Gk : continuidade C1
geométrica
Š Independente de parametrização
Š Assumir curva parametrizada por
comprimento de arco
C2
Interpolação x Aproximação

• Curva suave passando por um conjunto de pontos


dados (pontos de controle)
Š Se polinomial, pode-se usar interpolação polinomial
Lagrangeana

• Curva suave passando “perto” dos pontos dados


(aproximações)
Š Splines
Curvas de Hermite
• Curva definida por:
Š P1 y P2 = Pontos extremos (inicial e final)
Š T1 y T2 = Tangentes associadas aos pontos extremos

T1 T1 T1 P2
P1 P2 P2
P1 P1 T2
T2 T2

P(t)==aat3t3++bbt2t2++cct t ++dd
P(t) P(0)==dd==P1
P(0) P1 ⎡1
Resolvendo 0 − 3 2 ⎤ ⎡ p1 ⎤
P(t)==[t[t3 3 t2t2 t t 1]1]CC
P(t) P(1)==aa++bb++cc++dd==P2
P2
⎢0 0 3 − 2⎥⎥ ⎢⎢ p2 ⎥⎥
P’(t)==33aat2t2++22bbt t++cc
P(1)
C=⎢
P’(t) P’(0)==cc==T1
P’(0) T1 ⎢0 1 − 2 1 ⎥ ⎢ T1 ⎥
[3t3 3 2t2t 11 0]0]CC
P’(t)==[3t ⎢ ⎥⎢ ⎥
P’(t) P’(1)==33aa++22bb++cc==T2
P’(1) T2
⎣0 0 − 1 1 ⎦ ⎣ T2 ⎦
Para 00≤≤t t≤≤11
Para
⎡1 0 − 3 2 ⎤ ⎡ p1 ⎤
⎢0 0 3 − 2⎥⎥ ⎢⎢ p2 ⎥⎥
[
p (t ) = t 3 t2 ]
t 1 .⎢
⎢0 1 − 2 1 ⎥ ⎢ T1 ⎥
⎢ ⎥⎢ ⎥
⎣0 0 − 1 1 ⎦ ⎣ T2 ⎦
Curvas de Hermite
(dedução)
Seja P(t) = [ x(t), y(t), z(t) ] um ponto da curva
Î [ x(t) y(t) z(t) ] = [t3 t2 t 1] C = [ t3 t2 t 1 ] [ a b c d ]T
⎡a x ay az ⎤
⎢b b z ⎥⎥
[
= t 3
t 2
]
t 1⎢
⎢cx
x by
cy cz ⎥
[
= t3 t2 ]
t 1 [Cx Cy Cz ]
⎢ ⎥
⎢⎣d x dy d z ⎥⎦
Condições:
P(0) = P1 = [0 0 0 1] [ Cx Cy Cz ] ⎡ P1⎤ ⎡0 0 0 1⎤
⎢ P2 ⎥ ⎢1 1 1 1⎥⎥
P(1) = P2 = [1 1 1 1] [ Cx Cy Cz ] ⎢ ⎥=⎢ [Cx Cy Cz ]
P’(0) = T1 = [0 0 1 0] [Cx Cy Cz ] ⎢ T1⎥ ⎢0 0 1 0 ⎥
⎢ ⎥ ⎢ ⎥
P’(1) = T2 = [3 2 1 0] [Cx Cy Cz ] ⎣T2 ⎦ ⎣3 2 1 0⎦

⎡1 0 − 3 2 ⎤ ⎡ P1⎤
⎢0 0 3 − 2⎥⎥ ⎢⎢ P 2⎥⎥
P = H C Î C = H-1 P C = [Cx Cy Cz ] = ⎢
⎢0 1 − 2 1 ⎥ ⎢ T1 ⎥
⎢ ⎥⎢ ⎥
⎣0 0 − 1 1 ⎦ ⎣T 2 ⎦
Curva de Bezier
P0 P2
• Usa K pontos de controle P4
Š P0, P1, …, Pk-1
P1 P3
Š Curva cúbica usa P0, P1, P2, P5
P3 (por segmento)
Š Relacionado com Hermite
p1 p2
• Tangentes nos extremos
• T1 = P1 – P0 y T2 = P3 -
p3
P2
• Definida por p0
n
P(t ) = ∑ Pi .Bi , n (t ), para 0 ≤ t ≤ 1
i =0
Pol. de Berstein
⎛n⎞ i
Bi , n (t ) = ⎜⎜ ⎟⎟ t (1 − t ) n −i
⎝i⎠
Polinômios de Bernstein
Polinômios
Polinômios de
de Berstein
Bernsteindede
grau 3 3
grau

1
0.9
0.8
0.7
0.6 B0,3(t)
b03(u)
B1,3(t)
b13(u)
0.5
B2,3(t)
b23(u)
0.4 B3,3(t)
b33(u)
0.3
0.2 n

0.1 ∑B
i =0
i, n (t ) = 1
0
0 0.2 0.4 0.6 0.8 1
t
Curvas Bézier
(Propriedades)
• Continuidade C0: p3 = p0
• Continuidade C1: C0 e p2p3 de primeiro = p0p1 do segundo
• Continuidade C2: C1 e + restrições sobre p1 da primeira e p2 da
segunda
p2
p1 p3
p3
p0

p0 p1
p2
• Fechado Convexo
p2
p1 p3
p3
p0
p0 p1 p2
Base Bézier
(Forma matricial)

• Um segmento de curva cúbica, para 0 ≤ t ≤ 1

⎡ −1 3 − 3 1⎤ ⎡p 0 ⎤
⎢ 3 −6 3 0⎥⎥ ⎢⎢p `1 ⎥⎥
[
p(t ) = t 3 t 2 ]
t 1⎢
⎢− 3 3 0 0⎥ ⎢p 2 ⎥
⎢ ⎥⎢ ⎥
⎣1 0 0 0⎦ ⎣ p 3 ⎦
Splines
• A base de Bézier não é apropriada para modelagem
de curvas longas
Š Bézier única: suporte não local
Š Trechos conectados: restrições não são naturais

• Base alternativa: B-Splines


Š Polígonos de controle sem restrições adicionais
Š Suporte local
• Alteração de um vértice afeta apenas na vecindade
Š Existem muitos tipos de Splines
• Una B-spline uniforme de grau d tem continuidade Cd-1
Curvas B-Splines
P0
• Combinação linear de: P2 P4
Š Pontos de controle P0, P1, …, Pn
P n
P (t ) =1 ∑ Pi .Bi (t ), para 0 ≤ t ≤ 1
Š Funções bases de ordem k i =0 P3 P5
n
P(t ) = ∑ Pi .Bi , k (t ), para 0 ≤ t ≤ 1
i =0

Onde Cox de Boor


⎧1, para ti ≤ t ≤ ti +1
Bi ,1 (t ) = ⎨
⎩0, em outros intervalos
⎛ 1 − ti ⎞ ⎛ ti + k − t ⎞
Bi , k (t ) = ⎜⎜ ⎟ Bi ,k −1 (t ) + ⎜
⎟ ⎜
⎟ Bi +1, k −1 (t )

⎝ t i + k −1 − t i ⎠ ⎝ t i + k − t i +1 ⎠
• Curva não passa pelos pontos de controle
Curvas B-Spline
• Função base B-spline quadrática periódica
Bi–1,2 (t) Bi ,2(t) Bi+1,2 (t)

t
• Função base B-spline cúbica periódica

Bi-1,3(t) Bi,3(t) Bi+1,3(t) Bi+2,3(t)

t
Recurrencia Cox-de Boor
m
p(t ) = ∑ Bi ,k (t )p i
i =0

⎧1 para t k ≤ t < t k +1 ,
B0,k (t ) = ⎨
⎩0 caso contrário.
t − ti ti + k +1 − t
Bi ,k (t ) = Bi ,k −1 + Bi +1,k −1
ti + k − ti ti + k +1 − ti +1
pi+3

pi k=3
k=1
k=2
pi+2
pi+1
Propriedades das B-Splines
• Dados n+1 pontos (p0 ... pn) , é composta de (n-d+1) curvas
Bézier de grau d unidas com continuidade d-1 nos n+d+1 nós
t0 , t1 , ... , tn+d+1
• Cada ponto da curva é afetado por d+1 pontos de controle
• Cada ponto de controle afeta d+1 segmentos
• Curva restrita ao fecho convexo do polígono de controle

Forma Matricial

⎡ −1 3 − 3 1⎤ ⎡ p i −1 ⎤

1 ⎢ 3 −6 3 0⎥⎥ ⎢⎢ p i ⎥⎥
[
p(t ) = t 3 t 2 t 1]6 ⎢− 3 0 3 0⎥ ⎢ p i +1 ⎥
, para 0 ≤ t ≤ 1
⎢ ⎥⎢ ⎥
⎣1 4 1 0⎦ ⎣p i + 2 ⎦
Efeito dos Nodos

• Os intervalos entre nodos influencían a


importância dos pontos de controle
Š Exemplo: B-spline Quádrica
Catmull-Rom Spline

• Interpolação local de B-Splines


• A curva passa por pontos de controle
Ponto desejado

• Um ponto é calculado em função dos pontos de


controle adjacentes (neste caso, por p0, p1, p2, p3)
Superfícies
Representação de Superficies
(superficies de revolução)
• Rotação de uma curva plana em torno de um eixo
• Ponto da superficie de revolução descrito por
Š P(t, ang)
• Podem ser obtidas por qualquer tipo de curva
Representação de Superficies
(superficies de deslocamento)

• Denominada “sweeping” (barredura)


• Movimento de uma curva ou figura plana ao longo
de um caminho
• Podem ser obtenidas por qualquer tipo de curva
Representação de Superficies
(interpolação Bi-cúbica)

• São formas paramétricas


• Qualquer ponto do interior é definido
univocamente
• Cada pedaço (patch) gerada por uma
fórmula

(0, 1)

(0, 0) u (1, 0)
Superficies Paramétricas

Superficie produto tensor: polinomial bivariante expressado em


térmos de funções bases univariante.
n −1 m −1

∑∑V
i =0 j =0
i, j B j (v) Bi (u ) = S (u , v)
Representação matricial

B(u ) V B(v)T = S (u , v)
Em função de bases bivariantes

∑V
i, j
i, j Bi , j (v, u ) = S (u , v)
Notação matricial
v

B(v, u )V = S (u , v)
u
Superficies Paramétricas
n −1 m −1

∑∑ P
i =0 j =0
i, j B j (v) Bi (u ) = S (u , v)

P32 P33
P31
P30
P23

P20 P13

P10
(0, 1)

P02 P03
P01
v P00 Patches adjacentes
(0, 0) u (1, 0) Um Patch (16 pontos de controle)
Superficies de Hermite
• Extesão da formulação de Hermite
• Interior gerada pelas funções combinadas (blending function)
P(u,v) = S H GH HT TT
onde S = [u3, u2, u, 1], T = [v3, v2, v, 1], H matriz de Hermite
(matriz das curvas) e GH

⎡ ∂P ∂P ⎤
⎢ P(0,0) P(0,1) (0,0) (0,1) ⎥
∂u ∂u
⎢ ∂P ∂P ⎥
⎢ P(1,0) P(1,1) (1,0) (1,1) ⎥
GH = ⎢ ∂u ∂u ⎥
⎢ ∂P ∂P ∂2P ∂ P
2

⎢ ∂v (0,0) ∂v
(0,1)
∂v∂u
(0,0)
∂v∂u
(0,1)⎥
⎢ ⎥
⎢ ∂P (1,0) ∂P
(1,1)
∂2P
(1,0)
∂2P
(1,1) ⎥
⎢⎣ ∂v ∂v ∂v∂u ∂v∂u ⎥⎦
Superficies Bézier
• Extensão das curvas de Bezier
n m
S (u, v) = ∑∑ Pi , j Bi ,n (u ) B j ,m (v) 0 ≤ u, v ≤ 1
i =0 j =0

onde Bi,j é matriz de vértices de controle, Bi,n(u) e Bj,m(v)


são funções de Berstein 3
⎡v ⎤
⎢ 2⎥
[
S (u, v) = u 3 u 2 ] v
u 1 M B GB M BT ⎢ ⎥
⎢v⎥
⎢ ⎥
⎢⎣ 1 ⎥⎦
Superficies B-Spline
• Extensão das curvas B-Spline
Superficies Catmull-Rom Spline

Você também pode gostar