View
216
Download
0
Category
Preview:
Citation preview
Representação de Curvas
Baseado em material preparado por
Marcelo Gattass – Depto. de Informática – PUC-Rio
(adaptado para a disciplina CIV2802)
CIV2802 – Sistemas Gráficos para Engenharia
2018.1
Luiz Fernando Martha
André Pereira
Quatro tipos de representações para curvas e superfícies são comuns em Computação Gráfica e Projeto Geométrico: explícita, implícita, paramétrica e procedural.
Cada uma dessas alternativas será brevemente introduzida, entretanto apenas uma forma particular será enfatizada, a representação paramétrica, utilizada ao longo do curso.
Representações de
Curvas e Superfícies
Fonte:
Ao estudar geometria analítica, é comum utilizar coordenadas
retangulares e considerar equações da forma y = f(x). Os
gráficos (x, f(x)) dessas funções são curvas no plano. Por
exemplo, y = 3x + 1 representa uma linha reta, e y = x2
representa uma parábola (ver figura).
Similarmente, podem-se gerar superfícies ao considerar
equações da forma z = f(x,y): a equação z = 2x + 5y - 7
representa um plano no espaço, e z = x2 - y2 representa um
paraboloide hiperbólico.
Expressões da forma y = f(x) ou z = f(x,y) são chamadas de
representações explícitas porque elas expressam uma
variável explicitamente em termos das outras variáveis.
Representações
Explícitas
Nem todas as curvas e superfícies podem ser prontamente
capturadas por uma única expressão explícita. Por exemplo,
o círculo de raio unitário e centrado na origem é
representado implicitamente por todas as soluções da
equação x2 + y2 - 1 = 0. Se tentar resolver explicitamente
para y em termos de x, obtém-se
que representa apenas a metade superior do círculo.
Portanto, tem de usar duas fórmulas explícitas
para capturar o círculo inteiro. Muitas vezes é mais fácil ficar
com a equação implícita original em vez de resolver
explicitamente por uma das variáveis. Assim, x2 + y2 - 1 = 0
representa um círculo, e x2 + y2 + z2 - 1 = 0 representa uma
esfera. Equações da forma f(x, y) = 0 ou f(x, y, z) = 0 são
chamadas representações implícitas porque representam a
curva ou superfície implicitamente sem resolver
explicitamente por uma das variáveis.
Representações
Implícitas
Representações implícitas são mais gerais do que as
representações explícitas. A curva explícita y = f(x) é a mesma
curva implícita y - f(x) = 0, porém como já foi visto, nem
sempre é uma questão simples converter uma curva implícita
numa única fórmula explícita. Além disso, as equações
implícitas podem ser utilizadas para definir curvas e
superfícies fechadas ou curvas e superfícies que se auto-
interceptam, formas que são impossíveis de representar com
funções explícitas (figura no próximo slide).
Para curvas e superfícies fechadas, a equação implícita pode
também ser usada para distinguir o interior do exterior,
olhando para o sinal da expressão implícita. Por exemplo,
para pontos dentro do círculo unitário x2 + y2 - 1 < 0, e para
pontos fora do círculo unitário x2 + y2 - 1 > 0. Esta capacidade
de distinguir facilmente entre o interior e o exterior de uma
curva ou superfície fechada é frequentemente importante em
aplicações de modelagem de sólidos.
Representações
Implícitas
A lemniscata de Bernoulli: (x2+y2)2 - (x2-y2)2 = 0. Note que
diferentemente de funções explicitas, os gráficos de
equações implícitas podem se auto-interceptarem.
Representações
Implícitas
No entanto, as representações implícitas também têm suas
desvantagens. Dada uma representação explícita y = f(x),
pode-se facilmente encontrar muitos pontos da curva (x,f(x)),
selecionando valores para x e calculando f(x).
Se as funções f(x) forem restritas a funções elementares
como polinômios, então para cada x existe um único y
facilmente calculável. Assim, é uma questão simples
representar graficamente a curva y = f(x).
Por outro lado, pode não ser uma tarefa tão fácil encontrar
pontos na curva f(x,y) = 0. Para muitos valores de x pode não
existir um valor correspondente y, ou pode haver vários
valores de y, mesmo que as funções de f(x,y) sejam restritas
a polinômios em x e y.
Encontrar pontos em superfícies implícitas f(x,y,z) = 0 pode
ser ainda mais complicado. Assim, pode ser difícil renderizar
curvas e superfícies definidas implicitamente.
Representações
Implícitas
Existe outra forma padrão para representar curvas e superfícies,
que é mais geral do que a forma explícita e que é ainda fácil de
renderizar. Pode-se expressar curvas e superfícies
parametricamente, representando cada coordenada com uma
equação explícita em um novo conjunto de parâmetros. Para
curvas planas tem-se x = x(t) e y = y(t), para superfícies em 3D
tem-se x = x(s,t), y = y(s,t) e z = z(s,t). Por exemplo, as equações
paramétricas
representam o círculo unitário centrado na origem. Pode-se
facilmente verificar que x2(t) + y2(t) - 1 = 0. Da mesma forma, as
equações paramétricas
representam uma esfera unitária: x2(s,t) + y2(s,t) + z2(s,t) - 1 = 0.
Muitas vezes, restringe-se o domínio do parâmetro. Deste modo,
uma curva paramétrica é tipicamente a imagem de um segmento
de reta; uma superfície paramétrica, a imagem de uma região -
geralmente retangular ou triangular - do plano.
Representações
Paramétricas
A representação paramétrica tem várias vantagens. Assim como
a representação explícita, a representação paramétrica é fácil
de renderizar: basta avaliar as funções de coordenadas em
vários valores dos parâmetros. Assim como as equações
implícitas, equações paramétricas também podem ser usadas
para representar curvas e superfícies fechadas, bem como as
curvas e superfícies que se auto-interceptam. Além disso, a
representação paramétrica tem outra vantagem: é fácil estender
para dimensões maiores. Para ilustrar: caso deseja-se
representar uma curva em 3D, tudo o que precisa fazer é
introduzir uma equação adicional z = z(t). Assim, as equações
paramétricas
representam uma linha em 3D. A figura
ilustra uma curva paramétrica mais
complicada em 3D. A hélice:
x = cos(t), y = sin(t), z = t/5.
Representações
Paramétricas
A representação paramétrica tem suas próprias idiossincrasias.
A representação explícita de uma curva é única: o gráfico de
y = g(x) é a mesma curva como o gráfico de y - f(x) = 0 se e
somente se g(x) = f(x).
Analogamente, se restringir às funções polinomiais, então a
representação implícita f(x,y) = 0 é essencialmente única.
No entanto, a representação paramétrica de uma curva não é
única. Por exemplo, as equações
são duas representações paramétricas muito diferentes para o
círculo unitário x2 + y2 = 1. Além disso, para parametrizações
polinomiais ou racionais, sabe-se que para uma dada curva ou
superfície paramétrica encontra-se uma curva ou superfície
polinomial implícita. O inverso, no entanto, não é verdade.
Existem curvas e superfícies polinomiais implícitas que não
possuem parametrização polinomial ou racional. Assim, a forma
polinomial implícita é mais geral do que a forma paramétrica.
Representações
Paramétricas
No entanto, por causa de seu poder, simplicidade e facilidade
de uso, a representação paramétrica de curvas e superfícies
é a mais utilizada. Além disso, a representação paramétrica
funciona igualmente bem em um número arbitrário de
dimensões. Note-se que no caso unidimensional a
representação paramétrica é a mesma que a representação
explícita, portanto as representações explícitas serão
cobertas automaticamente como um caso especial.
As vezes será útil pensar sobre o caso especial de
representações explícitas, mas que não gere confusão,
porque as curvas paramétricas apresentam propriedades
geométricas tais como a auto-intersecção que nunca ocorre
em representações explícitas. Curvas paramétricas planares
(x(t), y(t)) são muito mais flexível do que os gráficos planares
(t,x(t)) de funções explícitas.
Representações
Paramétricas
Resta dizer que tipos de funções serão permitidas nas
representações paramétricas de interesse. A questão principal
é a seleção das funções paramétricas que devem ser
utilizadas para gerar curvas e superfícies adequadas.
Geralmente as funções utilizadas serão variantes de
polinômios: ou polinômios simples ou funções racionais
(razões de polinômios), ou ainda polinômios por partes
(splines) ou funções racionais por partes.
Polinômios têm muitas vantagens, especialmente quando
usados em conjunto com um computador. Polinômios são
fáceis de avaliar. Além disso, as funções mais complicadas
são geralmente avaliadas calculando alguma aproximação
polinomial, então não está se perdendo nada ao se restringir a
polinômios em primeiro lugar. Além disso, há uma teoria bem
desenvolvida de polinômios em análise numérica e teoria da
aproximação; computação gráfica e modelagem geométrica
empregam extensivamente conhecimentos dessa teoria.
Representações
Paramétricas
Ainda tem-se que mencionar as curvas ou superfícies
proceduralmente definidas. Em projetos geométricos, offsets,
composições e filetes são frequentemente especificados por
procedimentos em vez de fórmulas. Na modelagem de
sólidos, a geometria é frequentemente construída
proceduralmente através de operações booleanas, como
união, interseção e diferença. A maioria das superfícies
fractais e curvas que preenchem completamente um espaço
são definidas por algoritmos recursivos e não com fórmulas
explícitas.
Não serão discutidos quaisquer destes tipos de
procedimentos neste curso. Subdivisão é um outro
paradigma para a definição de curvas e superfícies,
explorando procedimentos recursivos. Uma vez que certas
técnicas de subdivisão estão intimamente relacionadas com
curvas e superfícies paramétricas, será mais negócio discutir
sobre esses métodos mais adiante neste curso.
Representações
Procedurais
Talvez a maneira mais fácil de descrever uma forma é
selecionar alguns pontos sobre essa forma. Dada uma
quantidade suficiente pontos, o olho tem uma tendência
natural de interpolar suavemente entre os dados. Aqui este
problema será estudado matematicamente. Dado um
conjunto finito de pontos no espaço afim, serão investigados
métodos para gerar curvas e superfícies polinomiais que
interpolam os pontos. Começa-se com esquemas para
curvas e, posteriormente, estende-se tais técnicas para
superfícies.
Curvas
Curvas
• Linhas
• Beziers
• B-Splines
• NURBS
• Outros tipos especiais de curvas:
Poli-linhas, arcos de círculo e arcos
de elipses
Curvas
Requisito 1: Independência de eixos
x
y
Curvas
Requisito 2: Valores Múltiplos
x
y
Curvas
Requisito 3: Controle Local
x
y
Curvas
Requisito 4: Pouca Oscilação
polinômio de grau elevado
Curvas
Requisito 5: Versatilidade
Curvas
Requisito 6: Amostragem Uniforme
∆s1
∆s2
∆s3
∆s4
∆sn
∆si ≈ ∆sj
Curvas – Requisito 7:
Formulação matemática tratável
Finalizando:
Solução
Curva representada por partes através de
polinômios de grau baixo (geralmente 3)
zzzz
yyyy
xxxx
dtctbtatz
dtctbtaty
dtctbtatx
+++=
+++=
+++=
23
23
23
)(
)(
)(
[ ]
[ ] globaluuu
ou
localt
n,
1,0
0∈
∈
t=0
t=1
Parametrização
t=0 t=1 t=0 t=1t=0 t=1
u0
u1 u
2un
zzzz
yyyy
xxxx
dtctbtatz
dtctbtaty
dtctbtatx
+++=
+++=
+++=
23
23
23
)(
)(
)(
continuidade no
ponto comum dos
trechos
Geometria Diferencial
s
P(u)
)()( uPdu
duR
��=ou P(s)
)()(ˆ sPds
dsT
�=
ou u
Tdu
dsR ˆ=�
)(uss =
Rdu
ds �=
Parâmetro de comprimento:
uParâmetro genérico:
Requisitos da parametrização
P0
P1
P(u)10)1()( PuPuuP���
+−=
10 )())(1()( PufPufuP���
+−=
(1-u)
ua
(1-f(u)) f(u)
ubua
ub0
1
0)( =uPdu
d �
)()( 1212 ususuuSe >⇒>
u
Continuidade Geométrica e
Paramétrica
Descontínua Contínua: C0 e G0
)1()0( 21 RR��
=
Contínua: C1 e G1
)1()0( 21 TT��
=
C0 e G1
)1()0( 21 RR��
≠
Geométrica
)1()0( 21 TT��
≠
C1 e G0
1 2(0) (1)R R=� �
Paramétrica
Curvas de Bézier
P. de Casteljau, 1959 (Citroën)
P. de Bézier, 1962 (Renault) - UNISURF
Forest 1970: Polinômios de Bernstein
iin
ni tti
ntB −−
= )1()(,
∑=
=n
i
ini VtBtP0
, )()(��
x
P(t)
y
z
t=0
t=1
V0
V1
V2
V3
Vn-1
Vn onde:
)!(!
!
ini
n
i
n
−=
coef. binomial
pol. Bernstein
Bézier Cúbicas
3003
3,0 )1()1(0
3)( ttttB −=−
= −
x
P(t)
∑=
=3
0
3, )()(i
ii VtBtP��
y
z
V0
V1
V2
V3
tttttB 2113
3,1 )1(3)1(1
3)( −=−
= −
2223
3,2 )1(3)1(2
3)( tttttB −=−
= −
3333
3,3 )1(3
3)( ttttB =−
= −
=∑i
i tB )(3,[ ] 1)1(
3=+− tt
3
3
2
2
1
2
0
3 )1(3)1(3)1()( VtVttVttVttP�����
+−+−+−=
Polinômios Cúbicos de Bernstein
1
10 t
B0,3
(1-t)3
3
10 t
B1,3
3(1-t)2t
1
10 t
B3,3
t3
10 t
B2,3
3(1-t) t2
-3
1
10 t
B0,3 + B1,3 + B2,3 + B3,3
Propriedades da Bézier Cúbica
3
3
2
2
1
2
0
3 )1(3)1(3)1()( VtVttVttVttP�����
+−+−+−=
[ ] [ ] 3
3
2
2
1
2
0
2 )1(63)1(3)1(6)1(3)( VtVtttVtttVttPdt
d �����+−+−+−+−−+−−=
0)0( VP��
=
3)1( VP��
=
10 33)0( VVPdt
d ���+−=
32 33)1( VVPdt
d ���+−=
x
P(t)
y
z
V0
V1
V2
V3
R(0)
R(1)
Controle da Bézier Cúbica
Fecho Convexo
1)(00
== ∑∑==
n
i
i
n
i
ii comVtP αα��
Demonstração
Indução
1)( 101100 =++= αααα VVtP���
� ok
n=1
1)()()(
)()(
1)(
210221
10
10
10
010
210221100
=+++
++
++=
=++++=
αααααα
α
αα
ααα
αααααα
VVVtP
VVVtP
����
����
)(tP�
é interior � ok
n=2
n=3
...
Equação do Foley
−−
−
−−
=
zyx
zyx
zyx
zyx
VVV
VVV
VVV
VVV
ttttP
333
222
111
000
23
0001
0033
0363
1331
1)(�
)(tP�
0V�
1V� 2V
�
3V�
3
3
2
2
1
2
0
3 )1(3)1(3)1()( VtVttVttVttP�����
+−+−+−=
Redução de n=3 para n=2
3
3
2
2
1
2
0
3 )1(3)1(3)1()( VtVttVttVttP�����
+−+−+−=
10
1
0 )1()( VtVttV���
+−=
21
1
1 )1()( VtVttV���
+−=
32
1
2 )1()( VtVttV���
+−=
1
2
21
1
1
0
2 )1(2)1()( VtVttVttP����
+−+−=
[ ] [ ][ ]32
2
2110
2
)1(
)1()1(2)1()1()(
VtVtt
VtVtttVtVtttP��
�����
+−+
+−−++−−=
)(1
0 tV�
)(1
1 tV�
)(1
2 tV�
Bezier n=2
Redução de n=2 para n=1
1
1
1
0
2
0 )1()( VtVttV���
+−=
1
2
21
1
1
0
2 )1(2)1()( VtVttVttP����
+−+−=
[ ] [ ]1
2
1
1
1
1
1
0 )1()1()1()( VtVttVtVtttP�����
+−++−−=
Bezier n=1
1
2
1
1
2
1 )1()( VtVttV���
+−=
1
1
2
0)1()( VtVttP���
+−=
1
0V�
1
1V�
1
2V�
2
0V�
2
1V�
)(tP�
Cálculo de um Ponto
1
0V�
1
1V�
1
2V�
2
0V�
2
1V�
)(tP�
0V�
1V�
2V�
3V�
1
1V�
1
0V�
1
2V�
2
0V�
2
1V� )(tP
�
(1-t)
t
)()()1()( 1,11,, tBttBttB ninini −−− +−=Mostre que:
0V�
1V� 2V
�
3V�
Subdivisão de Bézier Cúbicas
=
3
2
1
0
3
2
1
0
1331
0242
0044
0008
8
1
V
V
V
V
V
V
V
V
L
L
L
L
�
�
�
�
�
�
�
�
=
3
2
1
0
3
2
1
0
8000
4400
2420
1331
8
1
V
V
V
V
V
V
V
V
R
R
R
R
�
�
�
�
�
�
�
�
1012
1
2
1VVV
L���
+=
. . .L
V1
�
H�
00 VVL��
=
1V�
2V�
LV2
�
RL VV 03
��=
RV1
�
RV2
�
33 VV R��
=
Construção de uma Bezier
u=1/2
P(1/2)
Curve fitting
3
3
2
2
1
2
0
3 )1(3)1(3)1()( VtVttVttVttP�����
+−+−+−=
[ ] [ ] 3
2
2
2
1
2
0
2 33)1(6)1(6)1(3)1(3)( VtVtttVtttVttPdt
d �����+−−+−−−+−−=
3
2
2
2
1
2
0
2 3)23(3)143(3)1(3 VtVttVttVt����
++−++−+−−=
3
2
2102
2
3)26(3)46(3)1(6)( VtVtVtVttPdt
d �����++−+−+−=
( )2102102
2
266126)0( VVVVVVPdt
d �������+−=+−=
( )3213212
2
266126)1( VVVVVVPdt
d �������+−=+−=
( )0110
2 333)0( VVVVPdt
d �����−=+−=
( )2332
2 333)1( VVVVPdt
d �����−=+−=
Nova notação
0V
1−ncp
2−ncr
0p
1p
2p
2−ncp
0r
1r
2r
1−ncl
2l
1l
2−ncl
1V
2V
3V
4V
5V 6V 7V
4−nVnV1−nV3−nV 2−nV
Derivadas na nova notação
1
3
1
223 )1(3)1(3)1()( ++ +−+−+−= iiiii tttttttP plrp�
( )12
2
26)0( ++−= iiiiPdt
dlrp
�
( )112
2
26)1( ++ +−= iiiPdt
dplr
�
( )iiiPdt
dpr −= 3)0(
�
( )113)1( ++ −= iiiPdt
dlp
�
x
y
z
)(tPi
�
ip
ir
1+il
1+ip
Construção de uma curva que passa
por 2 pontos
n=2
0)0('' =P�
0)1('' =P
0p
1p
0r
1l
( ) 026 100 =+− lrp
( ) 026 110 =+− plr
( )0103
1ppr −=
( )0113
2ppl −=
Construção de uma curva que passa
por 3 pontos
0p
0r
2p
1r
1p1l
2l
02 100 =+− lrp
0)0(''0 =P�
0)1(''1 =P�
0�
1�
02 221 =+− plr
111)1( prl =+− ρρ
10
0
��
�
+=ρ
=
−
−−
−
−
2
1
0
2
1
1
0
0
2100
1221
0)1(0
0012
p
p
p
l
r
l
r
ρρ
)0('')1('' 10 PP��
=
211110 22 lrpplr +−=+−
Método construtivo: dados n pontos
acrescentar mais um
0p
1p
1−np
np
1+np
0r
1r
nr
1−nr
1+nl
1−nl
1l
nl
10
0
��
�
+=ρ
nnn prl =+− ρρ)1(
11 22 +− +−=+− nnnnnn lrpplr
02 11 =+− ++ nnn plr
−=
−
−−
−
+
−
+ 1
1
1210
122
0)1(
n
n
n
n
n
n
p
r
p
l
r
lρρ
Interpolação: dados p0…pn , encontre l’s e r’s
1p
1−np
np
1+np
0r
1r
nr
1−nr
1+nl
1−nl
1l
nl
0p
0d
1d
2d2−npd
Bezier interpolation
0p
1p
2p
2−npp
1−npp
0r
1r
2−npr
2r
1−npl
2l
1l
2−npl
Given: np points
110 ,,, −npppp �
Find: 2(np-1) points
121 ,,, −nplll �
210 ,,, −nprrr �
Criteria:
0'' 0 =p ⇒ ( ) 026 100 =+− lrp ⇒0102 pr =−l
0'' 1=−npp ⇒ ( ) 026 112 =+− −−− npnpnp l pr ⇒ 112 2 −−− =+− npnpnp l pr
rightiileftii dd '' 1pp −= ⇒ ( ) ( )iiiiii dld prp −=− −133 ⇒ iiiiiii dddld pr )( 11 +=+ −−
rightilefti '''' pp = ⇒ ( ) ( )iiiiii ll +−=+− −− 11 2626 rppr ⇒ 022 11 =+−+− −− iiii ll rr
Bezier interpolation Criteria:
0102 pr =−l
112 2 −−− =+− npnpnp l pr
iiiiiii dddld pr )( 11 +=+ −−
022 11 =+−+− −− iiii ll rr
+
+
+
=
−
−−
−−
−−
−
−
−−−
−
−
−−−
1
223
221
110
0
1
2
2
2
2
1
1
0
12
12
01
0
)(
0
)(
0
)(
21000000
12210000
000000
00122100
000000
00001221
000000
00000012
n
nnn
nc
nc
ncnn dd
dd
dd
l
l
l
l
dd
dd
dd
p
p
p
p
p
r
r
r
r
2−npr
0d
1d
2d2−npd
0p
1p
2p
2−npp
1−npp
0r
1r
2r
1−npl
2l
1l
2−npl
resulting linear system:
solve for l and r
B-Splines
• vértices
+ nós
0V�
1V�
2V�
3V� 4V
�
nV�
+
+ +
+
+ +
•
•
•
••
•
)(uP�
i
n
i
pi VuNuP��
∑=
=0
, )()(
)()(
)()(
)(
)()( 1,1
11
1
1,, uNuu
uuuN
uu
uuuN pi
ipi
pi
pi
ipi
ipi −+
+++
++
−
+ −
−+
−
−=
.10
0:. definiçãoporobs =
p = grau do polinômio Ni,p(u)
controla a continuidade ( Cp-1 )
u0 ≤ u1 ≤ u2 ≤ … ≤ um
∈
=+
contráriocaso
uuuseuN
ii
i0
)[1)(
1
0,
U={u0, u1, ..., um}
m=n+p+1
u0 u2 ui ui+1 um... u
Ni,0(u)
u1...
ui = nós (knots)
[ui,ui+1] = trechos (spans)
Propriedades de Ni,p(u)
• Não negativa: Ni,p(u)≥0 para qualquer u, i, e p.
• Partição da unidade: ∑ Ni,p(u)=1 para todo u∈[u0,um].
• Suporte local: Ni,p(u)=0 se u∉[ui, ui+p+1]. Mais ainda, in qualquer intervalo dos nós no máximo p+1 das Ni,p(u) são não zero.
• Diferenciabilidade: todas as derivadas de Ni,p(u)existem no interior de um intervalo de nós (onde é polinômial) . Nos nós Ni,p(u) é p-k diferenciável, onde ké a multiplicidade do nó.
• Extremo: exceto para o caso p=0, Ni,p(u) tem apenas um ponto de máximo.
Spline Uniforme
)())1((
)()(
)( 1,11,, uNpd
udpuuN
pd
uuuN pi
i
pi
i
pi −+−
−+++
−=
uj+1- uj =d
)()(
)()(
)(
)()( 1,1
11
1
1,, uNuu
uuuN
uu
uuuN pi
ipi
pi
pi
ipi
ipi −+
+++
++
−
+ −
−+
−
−=
Splines Uniformes
p=0 e p=1
∉
∈=
+
+
)[0
)[1)(
1
1
0,
ii
ii
iuuuse
uuuseuN
p=0
0 ui-d ui ui+d n...
Ni,0(u)
...
p=1
( )
∈
∈−+
∈−
∈
=
+
++
+
][0
)[)2(
)[
)0[0
)(
2
21
1
1,
mi
ii
i
ii
i
i
i
uuuse
uuused
udu
uuused
uu
uuse
uN
)()2(
)()(
)( 1,11,1, uNd
uduuN
d
uuuN pi
ipi
ii −+−
−++
−=
Ni,2(u)
ui-d ui ui+d ui+2d
Splines Uniformes
p=2
Ni,1(u) Ni+1,1(u)Ni-1,1(u)
∈
∈−+
−
∈+−−++−+−
∈−
∈
=
+
++
++
+
],[0
),[2
)3(
),[2
))()(3()2)((
),[2
)(
),0[0
)(
3
322
2
212
12
2
2,1
mi
ii
i
ii
iiii
ii
i
i
uuuse
uuused
udu
uuused
duuuduuduuu
uuused
uu
uuse
uN
ui-d ui ui+d ui+2d ui+3d
p=2)(
2
)3()(
2
)()( 1,11,2, uN
d
uduuN
d
uuuN i
ii
ii +
−++
−=
Polinômios da B-Spline Uniforme
u ui ui+d ui+2d ui+3d ui+4d
Ni,0 (u) 0 1 0 0 0 0
Ni+1,0 (u) 0 0 1 0 0 0
Ni,1 (u) 0 (u-ui) (ui+2d-u) 0 0 0
Ni+1,1 (u) 0 0 (u-(ui+d)) (ui+3d-u) 0 0
Ni,2 (u) 0 (u-ui)2/2d
2 (u-ui)(ui+2d-u)/2d2 +
(ui+3d-u)(u-(ui+d))/2d2 (ui+3d-u)2/2d2
0 0
Ni+1,2 (u) 0 0 (u-(ui+d))2/2d2 (u-(ui+d))(ui+3d-u)/2d2 +
(ui+4d-u)(u-(ui+2d))/2d2 (ui+4d-u)2/2d2 0
Ni,3 (u) 0 (u-ui)3/6d3
[(u-ui)2(ui+2d-u) +
(u-ui)(ui+3d-u)(u-(ui+d))
+(ui+4d-u)(u-(ui+d))2 ]
/6d3
[(u-ui) (ui+3d-u)2 +
(ui+4d-u)(u-(ui+d))(ui+3d-u)
+ (ui+4d-u)2(u-(ui+2d))]/6d2
(ui+4d-u)3/6d3 0
t t=(u-ui)/d t = (u-(ui+d))/d t = (u-(ui+2d))/d t=(u-(ui+3d))/d
Ni,3 (t) 0 t6/6 (-3t3+3t2+3t+1)/6 (3t3-63t2+4)/6 (1-t)3/6 0
)())1((
)()(
)( 1,11,, uNpd
udpuuN
pd
uuuN pi
i
pi
i
pi −+−
−+++
−=
Segmentos da B-spline cúbica
p(t)
0,0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,0 0,2 0,4 0,6 0,8 1,0t
t3/6
(-3t3+3t2+3t+1)/6(3t3-6t2+4)/6
(1-t)3/6
Funções da base
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
u1 u2 u3 ... um-4u0uum-3 um-2
N0,3(u) N2,3(u)N-1,3(u) ...
t
2
3
1
2323
1
3
66
1333
6
463
6
)1()( ++− +
+++−+
+−+
−= iiiii V
tV
tttV
ttV
ttP
�����
For i = 0, ..., n
For t = 0, ..., 1
Nn-1,3(u)
um-1 um
N1,3(u)
i=0
t
i=1
t
i=n
Nn,3(u) Nn+1,3(u)
B-Spline Periódica
- Foley -
−
−
−−
=
+++
+++
−−−
ziyixi
ziyixi
ziyixi
ziyixi
VVV
VVV
VVV
VVV
ttttP
,3,3,3
,2,2,1
,,,
,1,1,1
23
0141
0303
0363
1331
1)(�
Para cada par Vi, Vi+1 , i=0,...,n
Para cada t=0,...,1
Periódica:
i=0, ... , n
V-1 = Vn
Vn+1 = V0
Vn+2 = V1
Vn+1= V0 Vn+2 =V1
V2
V3
V4
V-1= Vn
B-Spline Não Periódica
- Foley -
• vértices
+ nós
0V�
1V�
2V�
3V� 1−nV
�
nV�
+
++
+
+ +
•
•
•
•
••
i=0
i=1 i=2
i=3
1V�
•
i=n-1 1−nV�
1−nV�
•
i=0
P(0) = (V-1+ 4V0+ V1)/6
P’’(0) = V-1 -2V0+ V1 = 0
⇒ V-1 = 2V0 - V1
i=0; P(0) = V0
i=n-1
P(1) = (Vn-1+ 4Vn+ Vn+1)/6
P’’(1) = Vn-1-2Vn+ Vn+1
⇒ Vn+1 = 2Vn - Vn-1
i=n-1; P(1) = Vn
Base Periódica
B-Spline Cúbica Uniforme Periódica
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.0 0.2 0.4 0.6 0.8 1.0
u
N(u
,i,p
)
N(u,0,3)
N(u,1,3)
N(u,2,3)
N(u,3,3)
N(u,4,3)
N(u,6,3)
N(u,7,3)
U = {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0}
V-1= V7
V8= V0
V9= V1
V2 V3
V4
V-3=V5
V-2= V6
i=0
i=1
i=2
i=3i=4
i=5
i=6
i=7
1
, , 1 1, 1
1 1
( )( )( ) ( ) ( )
( ) ( )
i pii p i p i p
i p i i p i
u uu uN u N u N u
u u u u
+ +
− + −
+ + + +
−−= +
− −
Base Não Periódica
B-Spline Cúbica Uniforme e Aperiódica
0.0
0.2
0.4
0.6
0.8
1.0
0.0 0.2 0.4 0.6 0.8 1.0
u
N(u
,i,p
)
N(u,0,3)
N(u,1,3)
N(u,2,3)
N(u,3,3)
N(u,4,3)
N(u,6,3)
N(u,7,3)
U= {0, 0, 0, 0, 1/4, 2/4, 3/4, 1, 1, 1, 1}
1
, , 1 1, 1
1 1
( )( )( ) ( ) ( )
( ) ( )
i pii p i p i p
i p i i p i
u uu uN u N u N u
u u u u
+ +
− + −
+ + + +
−−= +
− −
Bézier e B-Spline
Bézier através da B-Spline Cúbica
U ={0,0,0,0,1,1,1,1}
0.0
0.2
0.4
0.6
0.8
1.0
0.0 0.2 0.4 0.6 0.8 1.0
u
N(u
,i,p
)
N(u,0,3)
N(u,1,3)
N(u,2,3)
N(u,3,3)
1
, , 1 1, 1
1 1
( )( )( ) ( ) ( )
( ) ( )
i pii p i p i p
i p i i p i
u uu uN u N u N u
u u u u
+ +
− + −
+ + + +
−−= +
− −
B-Spline Periódica
- Interpolação -
Vn+1= V0 Vn+1 =V1
V2
V3
V4
V-1= Vn
Para i=0,..., n
Pi(0) = (Vi-1+ 4Vi+ Vi+1)/6;
P0(0) P1(0)
P2(0)
P3(0)
P4(0)
Pn(0)
Considere os nós
como os pontos dados
=
nn P
P
P
P
P
P
V
V
V
V
V
V
�
�
�
�
�
�
�
�
�
�
�
�
4
3
2
1
0
4
3
2
1
0
410001
141000
014100
001410
000141
100014
6
1
• vértices
+ nós
B-Spline Não Periódica
- Foley -
• vértices
+ nós
0V�
1V�
2V�
3V� 1−nV
�
nV�
+
++
+
+ +
•
•
•
•
••
i=0
i=1 i=2
i=3
1V�
•
i=n-1 1−nV�
1−nV�
•
P0 = V0 ; Pn = Vn ;
Para i=1,..., n-1
Pi(0) = (Vi-1+ 4Vi+ Vi+1)/6;
Considere os nós
como os pontos dados
=
nn P
P
P
P
P
P
V
V
V
V
V
V
�
�
�
�
�
�
�
�
�
�
�
�
4
3
2
1
0
4
3
2
1
0
100000
141000
014100
001410
000141
000001
6
1
Funções Racionais
]1,0[
1
2,
1
1)(
22
2
∈
++
−=
u
u
u
u
uuP�
2
2
2
1
1)cos(
1
2)sin(
)2/tan(
u
u
u
u
u
+
−=
+=
=
α
α
αDa trigonometria:
0
0.2
0.4
0.6
0.8
1.0
0.2 0.4 0.6 0.8 1.0
Cônicas
cbtat
etdtx
cbtat
edty
eydtycybtyyat
tyx
eydxcybxyax
++
+−=
++
+−=
=++++
=
=++++
2
2
2
2222
22
0
0
x
y
cônica qualquer escrita num sistema de
eixos cuja origem é um ponto da cônica
Qualquer cônica pode ser representada parametricamente
como uma fração de polinômios quadráticos
NURBS
Non Uniform Rational B-Splines
yh
xh
w
w=1
x
y
=
∑=
i
ii
ii
ii
n
i
pi
w
zw
yw
xw
uN
uw
uzuw
uyuw
uxuw
0
, )(
)(
)()(
)()(
)()(
∑∑=
=
=
n
i
i
i
i
n
k
pkk
pii
z
y
x
uNw
uNw
uz
uy
ux
0
0
,
,
)(
)(
)(
)(
)(
∑∑=
=
=
=
n
in
k
pkk
pii
pi
i
i
i
pi
uNw
uNwuRonde
z
y
x
uR
uz
uy
ux
0
0
,
,
,,
)(
)()()(
)(
)(
)(
Cônicas como NURBS
}1,1,1,0,0,0{)()(
:
)()()(
)()()()(
2,2,
22,212,102,0
222,2112,1002,0
==
++
++=
UcomuNuB
onde
wuBwuBwuB
VwuBVwuBVwuBuP
ii
����
0V�
2V�
1V�
w0=1
w1=s/(1-s)
w2=1w1=0
0.2
-0.2
1
3
sElipse (w1<1)
Parábola (w1=1)
Hipérbola (w1>1)
Faux et al.
w0w2 /w1 - determina a cônica
0V�
2V�
1V�
w0=1
w1=s/(1-s)
w2=1w1=0
0.2
-0.2
1
3
sElipse (w1<1)
Parábola (w1=1)
Hipérbola (w1>1)
S�
M�
1
21
)1(
)(
VsMsS
eSP���
��
+−=
=
Círculo através de NURBS
U={0, 0, 0, 1/4, 1/4, 1/2, 1/2, 3/4, 3/4, 1, 1, 1}{ } }1,2
2,1,
2
2,1,
2
2,1,
2
2,1{=w
∑∑=
=
=
=
8
08
0
2,
2,
2,2,
)(
)()()(
)(
)(
i
k
kk
ii
i
i
i
i
uNw
uNwuRonde
y
xuR
uy
ux
-1
-0.8
-0.6
-0.4
-0.2
0.2
0.4
0.6
0.8
1
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
n=8
p=2
m=12
(x0 , y0)
(x1 , y1)(x2 , y2)(x3 , y3)
(x4 , y4)
(x5 , y5)(x6 , y6)
(x7, y7)
(x8 , y8)
Recommended