Você está na página 1de 44

Introduo Computao Grfica

Introduo Computao Grfica


Curvas
Curvas
Claudio Esperana
Paulo Roma Cavalcanti
Modelagem Geomtrica
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
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
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
1
C
0
C
2
Interpolao x Aproximao
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
Algoritmo de
De
De
Casteljau
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
Algoritmo de
De
De
Casteljau
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
Algoritmo de
De
De
Casteljau
Casteljau
p
1
p
11
p
01
u = 0.25
p
02
p
2
p
0
Algoritmo de
Algoritmo de
De
De
Casteljau
Casteljau
p
1
p
11
p
01
u = 0.5
p
02
p
2
p
0
Algoritmo de
Algoritmo de
De
De
Casteljau
Casteljau
p
1
p
11
p
01
u = 0.75
p
02
p
2
p
0
Algoritmo de
Algoritmo de
De
De
Casteljau
Casteljau
p
1
p
02
(u)
p
2
p
0
Algoritmo de
Algoritmo de
De
De
Casteljau
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
Algoritmo de
De
De
Casteljau
Casteljau
p
3
p
1
p
02
(u)
p
12
(u)
p
03
p
0
u = 0.25
p
2
Algoritmo de
Algoritmo de
De
De
Casteljau
Casteljau
p
3
p
1
p
02
(u)
p
12
(u)
p
03
p
0
u = 0.5
p
2
Algoritmo de
Algoritmo de
De
De
Casteljau
Casteljau
p
3
p
1
p
02
(u)
p
12
(u)
p
03
p
0
u = 0.75
p
2
Algoritmo de
Algoritmo de
De
De
Casteljau
Casteljau
p
3
p
1
p
02
(u)
p
12
(u)
p
03
(u)
p
0
p
2
Algoritmo de
Algoritmo de
De
De
Casteljau
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
Curvas de
Bzier
Bzier
e Polinmios de
e Polinmios de
Bernstein
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
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
Forma Matricial da Base
Bzier
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
Propriedades de Curva de
Bzier
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
Propriedades de Curva de
Bzier
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
Desenhando Curvas
Bzier
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
Subdiviso de Curvas
Bzier
Bzier
Como saber se trecho da curva reto?
! Encontrar o polgono de controle do trecho
! Parar se vrtices do polgono forem
aproximadamente colineares
p
10
p
20
u = 0.5
p
01
p
11
p
21
p
02
p
12
p
03
p
30
p
00
Curvas de
Curvas de
Hermite
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
Curvas de
Hermite
Hermite
No caso de cbicas, temos o ponto inicial e final
alm dos vetores tangentes
0 1
*
*
*
*
+
,
-
-
-
-
.
/
#
#
#
#
"
*
*
*
*
+
,
-
-
-
-
.
/
2
2
"
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 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
Emendando Curvas
Bzier
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
3
p
0
p
1
p
2
p
2
p
1
p
2
p
0
Splines
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
Curvas
B
B
-
-
Spline
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
B
i
(u)
u
Curvas
Curvas
B
B
-
-
Spline
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
B
i
(u)
B
i+1
(u)
B
i1
(u)
u
Curvas
Curvas
B
B
-
-
Spline
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
B
i
(u)
B
i+1
(u)
B
i1
(u)
u
i
u
i+1
u
i+2
u
i+3
u
i+4
u
i1
u
Funes da Base
Funes da Base
B
B
-
-
Spline
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
Recorrncia
Cox
Cox
-
-
de
de
Boor
Boor
1 , 1
1 1
1
1 , ,
1
0 ,
) (
contrrio. caso 0
, para 1
) (
# 3
3 3 3
3 3
#
3
3
#
#
3
#
#
"
4
5
6
7 8
"
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
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)
u
i1
u
i
u
i+1
u
i+2
u
i+3
u
i+4
u
Recorrncia
Recorrncia
Cox
Cox
-
-
de
de
Boor
Boor
1 , 1
1 1
1
1 , ,
1
0 ,
) (
0
, 1
) (
# 3
3 3 3
3 3
#
3
3
#
#
3
#
#
"
4
5
6
7 8
"
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
!
"
"
m
i
i d i
u B u
0
,
) ( ) ( p p
p(u
i+2
!u<u
i+4
)
p
i+3
p
i
p
i+1
p
i+2
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+2
!u<u
i+3
)
p(u
i+1
!u<u
i+2
)
Recorrncia
Recorrncia
Cox
Cox
-
-
de
de
Boor
Boor
1 , 1
1 1
1
1 , ,
1
0 ,
) (
0
, 1
) (
# 3
3 3 3
3 3
#
3
3
#
#
3
#
#
"
4
5
6
7 8
"
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
!
"
"
m
i
i d i
u B u
0
,
) ( ) ( p p
p
i+2
p
i+3
p(u
i
!u<u
i+1
)
p(u
i+2
!u<u
i+3
)
p
i
d = 1
p
i+1
p(u
i+1
!u<u
i+2
)
Recorrncia
Recorrncia
Cox
Cox
-
-
de
de
Boor
Boor
1 , 1
1 1
1
1 , ,
1
0 ,
) (
0
, 1
) (
# 3
3 3 3
3 3
#
3
3
#
#
3
#
#
"
4
5
6
7 8
"
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
!
"
"
m
i
i d i
u B u
0
,
) ( ) ( p p
p
i+2
p
i+3
p
i
d = 2
p
i+1
Recorrncia
Recorrncia
Cox
Cox
-
-
de
de
Boor
Boor
1 , 1
1 1
1
1 , ,
1
0 ,
) (
0
, 1
) (
# 3
3 3 3
3 3
#
3
3
#
#
3
#
#
"
4
5
6
7 8
"
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
!
"
"
m
i
i d i
u B u
0
,
) ( ) ( p p
p
i+2
p
i+3
p
i
d = 3
p
i+1
Propriedades das
Propriedades das
B
B
-
-
Splines
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
Efeito dos Ns
Os intervalos entre ns influenciam a importncia
dos pontos de controle
! Exemplo: B-spline Qudrica
Inserindo Ns
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
Curvas
Racionais
Racionais
Funes so razes
! Avaliados em coordenadas homogneas:
! NURBS (Non-UniformRational 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
*
+
,
-
.
/
9
) (
) (
,
) (
) (
,
) (
) (
)] ( ), ( ), ( ), ( [
t w
t z
t w
t y
t w
t x
t w t z t y t x
Parametrizao
Parametrizao
de um
de um
Crculo
Crculo
Por exemplo, uma parametrizao conhecida do crculo
dada por
Podemos expressar essa parametrizao emcoordenadas
homogneas por:
2
2
2
1
2
) (
1
1
) (
u
u
u y
u
u
u x
3
"
3
#
"
2
2
1 ) (
2 ) (
1 ) (
u u w
u u y
u u x
3 "
"
# "
OpenGL
OpenGL
e Curvas Paramtricas
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:
gl Map1f ( )
! Para avaliar um ponto:
gl Eval Coor d( par am)
! Para avaliar uma seqncia de pontos:
gl MapGr i d1f ( n, t 1, t 2)
gl Eval Mesh1f ( 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