Você está na página 1de 44

Introduo Computao Grfica

Curvas

Claudio Esperana
Paulo Roma Cavalcanti

Modelagem Geomtrica
Disciplina que visa obter representaes
algbricas para curvas e superfcies com
determinado aspecto e/ou propriedades
At agora temos considerado quase que
exclusivamente objetos geomtricos
compostos de segmentos de reta ou polgonos
(curvas/superfcies lineares por parte)
Na maioria dos casos, so aproximaes de
curvas e superfcies algbricas
Mesmo quando s podemos desenhar
segmentos de reta e polgonos, conhecer o
objeto que estamos aproximando fundamental

Curvas e Superfcies Paramtricas


Normalmente, o resultado da modelagem
dado em forma paramtrica
Permite que a curva/superfcie seja desenhada
(aproximada) facilmente
Permite indicar que trechos da curva/superfcie
sero usados
Manipulao algbrica mais simples

Curva em 3D dada por

C(t) = [Cx(t) Cy(t) Cz(t)]T


Superfcie em 3D dada por

S(u, v) = [Sx(u, v) Sy(u, v) Sz(u, v)]T

Continuidade
Normalmente queremos curvas e
superfcies suaves
Critrio de suavidade associado com
critrio de continuidade algbrica
Continuidade C0 funes paramtricas
so contnuas, isto , sem pulos
Continuidade C1 funes paramtricas
tm primeiras derivadas contnuas, isto
, tangentes variam suavemente
Continuidade Ck funes paramtricas
tm ksimas derivadas contnuas
Alternativamente, Gk : continuidade
geomtrica
Independente de parametrizao
Assumir curva parametrizada por
comprimento de arco

C0

C1

C2

Interpolao x Aproximao
natural querermos modelar uma curva suave
que passa por um conjunto de pontos dados
Se a curva desejada polinomial, chamamos tal
curva de interpolao polinomial lagrangeana
Entretanto, o resultado nem sempre o
esperado (oscilaes)
mais comum querermos curvas que passem
perto dos pontos dados, isto , aproximaes

Algoritmo de De Casteljau
Suponha que queiramos aproximar
uma curva polinomial entre dois
pontos p0 e p1 dados
A soluo natural um segmento de
reta que passa por p0 e p1 cuja
parametrizao mais comum
p (u) = (1 u) p0 + u p1

Podemos pensar em p (u) como uma


mdia ponderada entre p0 e p1
Observe que os polinmios (1 u) e u
somam 1 para qualquer valor de u
So chamadas de funes de mistura
(blending functions)

p1

p0

Algoritmo de De Casteljau
Para generalizar a idia para trs pontos
p0, p1 e p2 consideramos primeiramente
os segmentos de reta p0-p1 e p1p2
p01(u) = (1 u) p0 + u p1
p11(u) = (1 u) p1 + u p2

Podemos agora realizar uma interpolao


entre p01(u) e p12(u)
p02(u) = (1 u) p01 (u) + u p11 (u)
= (1 u) 2 p0 + 2 u (1 u) p1 + u2 p2

Algoritmo de De Casteljau
p
1

p1

u = 0.25

p0
1

p0

p0
2

p
2

Algoritmo de De Casteljau
p
1

p0
1

p0

p0
2

u = 0.5

p1
1

p
2

Algoritmo de De Casteljau
p
1

u = 0.75

p0
1

p0
2

p0

p1
1

p
2

Algoritmo de De Casteljau
p
1

p02(u)

p0

p
2

Algoritmo de De Casteljau
A curva obtida pode ser entendida como a
mistura dos pontos p0, p1 e p2 por intermdio de
trs funes quadrticas:
b02(u) = (1 u) 2
b12(u) = 2 u (1 u)
b22(u) = u2

Aplicando mais uma vez a idia podemos definir


uma cbica por 4 pontos
p02(u) = (1 u) 2 p0 + 2 u (1 u) p1 + u2 p2
p12(u) = (1 u) 2 p1 + 2 u (1 u) p2 + u2 p3
p03(u) = (1 u) p02 (u) + u p12 (u)
= (1 u) 3 p0 + 3 u (1 u)2 p1 + 3 u2 (1 u) p2 + u3
p3

Algoritmo de De Casteljau
p

p02(u)
p03

p0

u = 0.25

p12(u)

p
2

Algoritmo de De Casteljau
p

p02(u)

p03
p12(u)

p0

u = 0.5

p
2

Algoritmo de De Casteljau
p

p03

p02(u)

p12(u)

p0

u = 0.75

p
2

Algoritmo de De Casteljau
p

p02(u)

p03(u
)
p12(u)

p0
p
2

Algoritmo de De Casteljau
Novamente temos uma curva dada pela
soma de 4 funes de mistura (agora
cbicas), cada uma multiplicada por um
dos 4 pontos
b03(u) = (1 u) 3
b13(u) = 3 u (1 u)2
b23(u) = 3 u2 (1 u)
b33(u) = u3

Em geral, uma curva de grau n pode ser


n
construdap 0desta
forma e ser expressa por
n (u ) b j n (u ) p j
j 0

Curvas de Bzier e Polinmios de


Bernstein
As curvas construdas pelo algoritmo de De Casteljau
so conhecidas como curvas de Bzier e as funes de
mistura so chamadas de base Bzier ou polinmios
de Bernstein
Observamos que os polinmios de Bernstein de grau n
tm como forma geral bi n(u) = ci ui (1 u)ni
Se escrevermos as constantes ci para os diversos
polinmios, teremos

1o
2o
3o
4o

grau:
grau:
grau:
grau:

1
1
1
1

1
2 1
3 3 1
4 6 4 1

Vemos que o padro de formao corresponde ao


Tringulo de Pascal e portanto,
escrever
n i podemos
n i
bi n (u ) u (1 u )
i

Polinmios de Bernstein

Forma Matricial da Base Bzier


Podemos escrever a equao para uma
curva de Bzier cbica na forma
p(u ) p 03 (u ) [1 u u 2

u3 ] M B

p0
p
`1

p2

p3
ondeM B a matrizde coeficient
esda baseBzier
1
3

0
0

MB

0
3

0
0
0

3 1

Propriedades de Curva de Bzier


Continuidade infinita (todas as derivadas so contnuas)
O grau da curva (do polinmio) dado pelo nmero de
pontos do polgono de controle menos 1
A curva de Bzier est contida no fecho convexo do
polgono de controle
Os polinmios de Bernstein somam 1 para qualquer u
A curva interpola o primeiro e ltimo ponto do polgono
de controle

Propriedades de Curva de Bzier


As tangentes curva em p0 e pn tm a direo dos
segmentos de reta p0p1 e pn-1pn , respectivamente
Para cbicas, as derivadas so 3(p1 p0) e 3(p2 p3)

Qualquer linha reta intercepta a curva tantas ou


menos vezes quanto intercepta o polgono de controle
No pode oscilar demasiadamente
Transformar os pontos de controle (transf. afim) e
desenhar a curva equivalente a desenhar a curva
transformada

Desenhando Curvas Bzier


Curva normalmente aproximada por uma linha
poligonal
Pontos podem ser obtidos avaliando a curva em u
= u1, u2 ... uk
Avaliar os polinmios de Bernstein
Usar o algoritmo recursivo de De Casteljau

Quantos pontos?
Mais pontos em regies de alta curvatura

Idia: subdividir recursivamente a curva em


trechos at que cada trecho seja
aproximadamente reto

Subdiviso de Curvas Bzier


Como saber se trecho da curva reto?
Encontrar o polgono de controle do trecho
Parar se vrtices do polgono forem
aproximadamente colineares
p10
p02
p01

p00

p20

p11
p12
p03

u = 0.5
p21

p3
0

Curvas de Hermite
Ao invs de modelar a curva a partir de um polgono de
controle (Bzier), especifica-se pontos de controle e
vetores tangentes nesses pontos
Vantagem: fcil emendar vrias curvas bastando
especificar tangentes iguais nos pontos de emenda
Exemplos (cbicas):

Curvas de Hermite
No caso de cbicas, temos o ponto inicial e
final alm dos vetores tangentes

p(u ) 1 u u 2

ondeM H

1
0

0
0

p0
p
3
u MH 1
p(0)

p(1)
0 3 2
0 3 2
1 2 1

0 1 1

Curvas Longas
Curvas Bzier com k pontos de controle so de
grau k 1
Curvas de grau alto so difceis de desenhar
Complexas
Sujeitas a erros de preciso

Normalmente, queremos que pontos de


controle tenham efeito local
Em curvas Bzier, todos os pontos de controle
tm efeito global

Soluo:

Emendar curvas polinomiais de grau baixo


Relaxar condies de continuidade

Emendando Curvas Bzier


Continuidade C0: ltimo ponto da primeira = primeiro
ponto da segunda
Continuidade C1: C0 e segmento p2p3 da primeira com
mesma direo e comprimento que o segmento p0p1 da
segunda
Continuidade C2: C1 e + restries sobre pontos p1 da
primeira e p2 da segunda
p1

p2

p2

p0
p0

p3

p1

p2

Splines
A base de Bzier no prpria para a modelagem
de curvas longas
Bzier nica: suporte no local
Trechos emendados: restries no so naturais

Base alternativa: B-Splines


Nome vem de um instrumento usado por
desenhistas
Modelagem por polgonos de controle sem
restries adicionais
Suporte local
Alterao de um vrtice afeta curva apenas na vizinhana

Existem muitos tipos de Splines, mas vamos nos


concentrar em B-splines uniformes
Uma B-spline uniforme de grau d tem continuidade Cd-1

Curvas B-Spline
Funes de base so no nulas apenas em um intervalo no
espao do parmetro
Como impossvel obter isso com apenas 1 polinomial, cada
funo de base composta da emenda de funes polinomiais
Por exemplo, uma funo de base de uma B-spline quadrtica
tem 3 trechos (no nulos) emendados com continuidade C 1

Bi (u)

Curvas B-Spline
Todas as funes de base tm a mesma forma, mas so
deslocadas entre si em intervalos no espao de
parmetros
Num determinado intervalo, apenas um pequeno nmero
de funes de base so no-nulas
Numa B-spline quadrtica, cada intervalo influenciado
por 3 funes de base
Bi1 (u)

Bi (u)

Bi+1 (u)

Curvas B-Spline
Os valores ui do espao de parmetro que
delimitam os intervalos so chamados de ns
Podemos pensar em intervalos regulares por
enquanto (B-Splines uniformes) isto , ui = 1

Bi1 (u)

ui1

ui

Bi (u)

ui+1

ui+2

Bi+1 (u)

ui+3

ui+4

Funes da Base B-Spline


Queremos exprimir curvas como pontos mesclados por
intermdio de funes da base B-Spline
m

p(u ) Bi ,d (u )p i
i 0

onde m o nmero de pontos do polgono de controle e d


o grau da B-spline que se quer usar

Para derivar as funes da base B-spline pode-se resolver


um sistema de equaes
Para B-splines cbicas, requere-se continuidade C 2 nos ns,
a propriedade do fecho convexo, etc

Uma maneira mais natural utilizar a recorrncia de Coxde Boor que exprime as funes da base B-Spline de
grau k como uma intepolao linear das funes de grau
k-1

Recorrncia Cox-de Boor


1 para u k u uk 1 ,
Bk , 0 (u )
0 caso contrrio.
Bk ,d (u )

u uk
u
u
Bk ,d 1 k d 1
Bk 1,d 1
uk d uk
uk d 1 u k 1

Bi,0(u)
Bi,1(u)
Bi,2
(u
Bi+1,1
(uBB
(ui+2,0
B(u)
(u (u
i,3
i+1,0
i+1,2
i+2,0
)) )
) )

ui1

ui

ui+1

ui+2

ui+3

ui+4

Recorrncia Cox-de Boor


1 parau k u u k 1 ,
Bk , 0 (u )
0 casocontrrio.
Bk ,d (u )

p(u ) Bi ,d (u )p i
i 0

u uk
u
u
Bk ,d 1 k d 1
Bk 1,d 1
uk d uk
uk d 1 u k 1

p (ui+2 u<ui+4)
pi+3

p (ui u<ui+1)
pi

p (ui+1 u<ui+2)
pi+1

p (ui+2 u<ui+3)
pi+2

d=0

(assumir que para u = ui


Spline de grau 0 passa por pi)

Recorrncia Cox-de Boor


1 parau k u u k 1 ,
Bk , 0 (u )
0 casocontrrio.
Bk ,d (u )

p(u ) Bi ,d (u )p i
i 0

u uk
u
u
Bk ,d 1 k d 1
Bk 1,d 1
uk d uk
uk d 1 u k 1

pi+3
pi

p (ui u<ui+1)

p (ui+2 u<ui+3)
pi+1

pi+2
p (ui+1 u<ui+2)

d=1

Recorrncia Cox-de Boor


1 parau k u u k 1 ,
Bk , 0 (u )
0 casocontrrio.
Bk ,d (u )

p(u ) Bi ,d (u )p i
i 0

u uk
u
u
Bk ,d 1 k d 1
Bk 1,d 1
uk d uk
uk d 1 u k 1

pi+3
pi

pi+1

pi+2

d=2

Recorrncia Cox-de Boor


1 parau k u u k 1 ,
Bk , 0 (u )
0 casocontrrio.
Bk ,d (u )

p(u ) Bi ,d (u )p i
i 0

u uk
u
u
Bk ,d 1 k d 1
Bk 1,d 1
uk d uk
uk d 1 u k 1

pi+3
pi

pi+1

pi+2

d=3

Propriedades das B-Splines


Dados n+1 pontos (p0 ... pn) , composta de
(n-d+1) curvas Bzier de grau d emendadas
com continuidade d-1 nos n+d+1 ns u0 ,
u1 , ... , un+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 polgono
de controle
Invarincia sob transformaes afim

Efeito dos Ns
Os intervalos entre ns influenciam a
importncia dos pontos de controle
Exemplo: B-spline Qudrica

Inserindo Ns
Podemos ver que as B-splines uniformes em geral
no passam pelos pontos de controle
Entretanto, se repetirmos ns podemos fazer a
curva se aproximar dos pontos de controle
Para fazer a interpolao do primeiro ponto usando
uma B-Spline cbica, fazemos u0 = u1 = u2 = u3
Para fazer uma B-spline cbica passando por 4
pontos podemos usar o vetor de ns: 0, 0, 0, 0, 1,
1, 1, 1
De fato, com este vetor de ns, teremos uma
Bzier cbica

Curvas Racionais
Funes so razes
Avaliados em coordenadas homogneas:

x (t ) y (t ) z (t )
[ x (t ), y (t ), z (t ), w(t )]
,
,

w
(
t
)
w
(
t
)
w
(
t
)

NURBS (Non-Uniform Rational B-Splines): x(t), y(t),


z(t) e w(t) so B-splines no uniformes

Vantagens:
Invariantes sob transformaes perspectivas e
portanto podem ser avaliadas no espao da imagem
Podem representar perfeitamente sees cnicas
tais como crculos, elipses, etc

Parametrizao de um Crculo
Por exemplo, uma parametrizao conhecida do
crculo dada por
1 u2
x(u )
1 u2
2u
y (u )
1 u2
Podemos expressar essa parametrizao em
coordenadas homogneas por:

x(u ) 1 u 2
y (u ) 2u
w(u ) 1 u 2

OpenGL e Curvas Paramtricas


OpenGL define o que so chamados de avaliadores
que podem avaliar uma curva Bzier para um valor
do parmetro
Para definir os pontos de controle:
glMap1f()

Para avaliar um ponto:


glEvalCoord(param)

Para avaliar uma seqncia de pontos:


glMapGrid1f(n, t1,t2)
glEvalMesh1f(mode, p1, p2)

Essas rotinas avaliam a curva em intervalos


regulares no espao de parmetros
No necessariamente a melhor maneira!

Você também pode gostar