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) = [C
x
(t) C
y
(t) C
z
(t)]
T
Superfcie em 3D dada por
S(u, v) = [S
x
(u, v) S
y
(u, v) S
z
(u, v)]
T
Continuidade
Normalmente queremos curvas e
superfcies suaves
Critrio de suavidade associado com
critrio de continuidade algbrica
Continuidade C
0
funes paramtricas
so contnuas, isto , sem pulos
Continuidade C
1
funes paramtricas
tm primeiras derivadas contnuas, isto
, tangentes variam suavemente
Continuidade C
k
funes paramtricas
tm ksimas derivadas contnuas
Alternativamente, G
k
: continuidade
geomtrica
Independente de parametrizao
Assumir curva parametrizada por
comprimento de arco



C
0
C
1
C
2
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 p
0
e p
1
dados
A soluo natural um segmento de reta
que passa por p
0
e p
1
cuja parametrizao
mais comum
p (u) = (1 u)

p
0
+ u p
1

Podemos pensar em p (u) como uma
mdia ponderada entre p
0
e

p
1

Observe que os polinmios (1 u)

e u
somam 1 para qualquer valor de u
So chamadas de funes de mistura
(blending functions)
p
0
p
1
u
Algoritmo de De Casteljau
Para generalizar a idia para trs pontos p
0
,
p
1
e p
2
consideramos primeiramente os
segmentos de reta p
0
-p
1
e p
1
p
2
p
01
(u) = (1 u)

p
0
+ u p
1
p
11
(u) = (1 u)

p
1
+ u p
2
Podemos agora realizar uma interpolao
entre p
01
(u) e p
12
(u)
p
02
(u) = (1 u)

p
01
(u) + u p
11
(u)
= (1 u)

2
p
0
+ 2 u (1 u)

p
1
+ u
2
p
2


Algoritmo de De Casteljau
p
0

p
1

p
2

p
11

p
01

u = 0.25
p
02

Algoritmo de De Casteljau
p
0

p
1

p
2

p
11
p
01

u = 0.5
p
02

Algoritmo de De Casteljau
p
0

p
1

p
2

p
11

p
01

u = 0.75
p
02

Algoritmo de De Casteljau
p
0

p
1

p
2

p
02
(u)
Algoritmo de De Casteljau
A curva obtida pode ser entendida como a mistura
dos pontos p
0
, p
1
e p
2
por intermdio de trs funes
quadrticas:
b
02
(u) = (1 u)

2
b
12
(u) = 2

u (1 u)

b
22
(u) = u
2
Aplicando mais uma vez a idia podemos definir uma
cbica por 4 pontos
p
02
(u) = (1 u)

2
p
0
+ 2 u (1 u)

p
1
+ u
2
p
2

p
12
(u) = (1 u)

2
p
1
+ 2 u (1 u)

p
2
+ u
2
p
3
p
03
(u) = (1 u)

p
02
(u) + u p
12
(u)
= (1 u)

3
p
0
+ 3 u (1 u)
2

p
1
+ 3 u
2
(1 u)

p
2
+ u
3
p
3


Algoritmo de De Casteljau
p
0

p
1

p
2

p
02
(u)
p
12
(u)
p
3

u = 0.25
p
03

Algoritmo de De Casteljau
p
0

p
1

p
2

p
02
(u)
p
12
(u)
p
3

u = 0.5
p
03

Algoritmo de De Casteljau
p
0

p
1

p
2

p
02
(u)
p
12
(u)
p
3

u = 0.75
p
03

Algoritmo de De Casteljau
p
0

p
1

p
2

p
02
(u)
p
12
(u)
p
3

p
03
(u)
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
b
03
(u) = (1 u)

3
b
13
(u) = 3 u (1 u)
2

b
23
(u) = 3 u
2
(1 u)
b
33
(u) = u
3
Em geral, uma curva de grau n pode ser
construda desta forma e ser expressa por

=
=
n
j
j n j n
u b u
0
0
) ( ) ( p p
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 b
i n
(u) = c
i
u
i
(1 u)
ni
Se escrevermos as constantes c
i
para os diversos polinmios,
teremos
1
o
grau: 1 1
2
o
grau: 1 2 1
3
o
grau: 1 3 3 1
4
o
grau: 1 4 6 4 1
Vemos que o padro de formao corresponde ao Tringulo de
Pascal e portanto, podemos escrever

i n i
n i
u u
i
n
u b

|
|
.
|

\
|
= ) 1 ( ) (
Polinmios de Bernstein
Polinmios de Bernstein de grau 3
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 0.2 0.4 0.6 0.8 1
u
b03(u)
b13(u)
b23(u)
b33(u)
Forma Matricial da Base Bzier
Podemos escrever a equao para uma curva
de Bzier cbica na forma
(
(
(
(

=
(
(
(
(

= =
1 3 3 1
0 3 6 3
0 0 3 3
0 0 0 1
] 1 [ ) ( ) (
3
2
1 `
0
3 2
03
B
B
B
u u u u u
M
M
p
p
p
p
M p p
Bzier base da es coeficient de matriz a onde

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 p
0
e

p
n
tm a direo dos
segmentos de reta p
0
p
1
e

p
n-1
p
n
, respectivamente
Para cbicas, as derivadas so 3(p
1
p
0
) e 3(p
2
p
3
)
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 =
u
1
, u
2
... u
k
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

p
00

p
10
p
20

p
30

u = 0.5
p
01

p
11

p
21

p
02
p
12

p
03

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

| |
(
(
(
(

=
(
(
(
(

'
'
=
1 1 0 0
1 2 1 0
2 3 0 0
2 3 0 1
) 1 (
) 0 (
1 ) (
1
0
3
2
H
H
u u u u
M
p
p
p
p
M p
onde

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 C
0
: ltimo ponto da primeira = primeiro ponto da
segunda
Continuidade C
1
: C
0
e segmento p
2
p
3
da primeira com mesma
direo e comprimento que o segmento p
0
p
1
da segunda
Continuidade C
2
: C
1
e + restries sobre pontos p
1
da primeira e
p
2
da segunda
p
0

p
1
p
2

p
2

p
3

p
0

p
1

p
2

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 C
d-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


u
B
i
(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


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

u
B
i
(u)
B
i+1
(u)
B
i1
(u)
u
i1
u
i
u
i+1
u
i+2
u
i+3
u
i+4
Funes da Base B-Spline
Queremos exprimir curvas como pontos mesclados por
intermdio de funes da base B-Spline


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 Cox-de
Boor que exprime as funes da base B-Spline de grau k como
uma intepolao linear das funes de grau k-1

=
=
m
i
i d i
u B u
0
,
) ( ) ( p p
Recorrncia Cox-de Boor
1 , 1
1 1
1
1 , ,
1
0 ,
) (
contrrio. caso 0
, para 1
) (
+
+ + +
+ +

+
+

< s
=
d k
k d k
d k
d k
k d k
k
d k
k k
k
B
u u
u u
B
u u
u u
u B
u u u
u B
u
u
i1
u
i
u
i+1
u
i+2
u
i+3
u
i+4
B
i,0
(u)

B
i+1,0
(u)

B
i+2,0
(u)

B
i,1
(u)

B
i+1,1
(u)

B
i+2,0
(u)

B
i,2
(u
)

B
i+1,2
(u)

B
i,3
(u
)

Recorrncia Cox-de Boor
1 , 1
1 1
1
1 , ,
1
0 ,
) (
0
, 1
) (
+
+ + +
+ +

+
+

< s
=
d k
k d k
d k
d k
k d k
k
d k
k k
k
B
u u
u u
B
u u
u u
u B
u u u
u B
contrrio. caso
para
p
i
p
i+1
p
i+2
p
i+3

=
=
m
i
i d i
u B u
0
,
) ( ) ( p p
d = 0
(assumir que para u = u
i

Spline de grau 0 passa por p
i
)


p

(u
i
u<u
i+1
)
p

(u
i+1
u<u
i+2
)
p

(u
i+2
u<u
i+3
)
p

(u
i+2
u<u
i+4
)
Recorrncia Cox-de Boor
1 , 1
1 1
1
1 , ,
1
0 ,
) (
0
, 1
) (
+
+ + +
+ +

+
+

< s
=
d k
k d k
d k
d k
k d k
k
d k
k k
k
B
u u
u u
B
u u
u u
u B
u u u
u B
contrrio. caso
para
p
i
p
i+1
p
i+2
p
i+3

=
=
m
i
i d i
u B u
0
,
) ( ) ( p p
d = 1 p

(u
i
u<u
i+1
)
p

(u
i+1
u<u
i+2
)
p

(u
i+2
u<u
i+3
)
d = 2
Recorrncia Cox-de Boor
1 , 1
1 1
1
1 , ,
1
0 ,
) (
0
, 1
) (
+
+ + +
+ +

+
+

< s
=
d k
k d k
d k
d k
k d k
k
d k
k k
k
B
u u
u u
B
u u
u u
u B
u u u
u B
contrrio. caso
para
p
i
p
i+1
p
i+2
p
i+3

=
=
m
i
i d i
u B u
0
,
) ( ) ( p p
d = 3
Recorrncia Cox-de Boor
1 , 1
1 1
1
1 , ,
1
0 ,
) (
0
, 1
) (
+
+ + +
+ +

+
+

< s
=
d k
k d k
d k
d k
k d k
k
d k
k k
k
B
u u
u u
B
u u
u u
u B
u u u
u B
contrrio. caso
para
p
i
p
i+1
p
i+2
p
i+3

=
=
m
i
i d i
u B u
0
,
) ( ) ( p p
Propriedades das B-Splines
Dados n+1 pontos (p
0
... p
n
) , composta de (n-d+1)
curvas Bzier de grau d emendadas com
continuidade d-1 nos n+d+1 ns u
0
, u
1
, ... , u
n+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 u
0
= u
1
= u
2
= u
3
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:


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
(

) (
) (
,
) (
) (
,
) (
) (
)] ( ), ( ), ( ), ( [
t w
t z
t w
t y
t w
t x
t w t z t y t x
Parametrizao de um Crculo
Por exemplo, uma parametrizao conhecida do crculo
dada por




Podemos expressar essa parametrizao em coordenadas
homogneas por:


2
2
2
1
2
) (
1
1
) (
u
u
u y
u
u
u x
+
=
+

=
2
2
1 ) (
2 ) (
1 ) (
u u w
u u y
u u x
+ =
=
=
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