Curvas e Superfícies
Baseado em materiais preparados por Marcelo Gattass – Depto. de Informática – PUC-Rio
e
André Maués Brabo Pereira – Depto. de Eng. Civil – UFF
(adaptado por Luiz Fernando Martha para a disciplina CIV2802 – Sistemas Gráficos para Engenharia)
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
Curvas e Superfícies - Parte 1
2
Ao estudar geometria analítica, é comun 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- y2representa 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 yem 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
Curvas e Superfícies - Parte 1
4
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 xe calculando f(x).
Se as funções f(x) forem restritas a funções elementares como polinômios, então para cada xexiste 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 xpode 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) = 0pode 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
Curvas e Superfícies - Parte 1
6
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 e Superfícies - Parte 1
8
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 e Superfícies - Parte 1
10
Curvas
Requisito 4: Pouca Oscilação
polinômio de grau elevado
Curvas
Curvas
Requisito 5: Versatilidade
Curvas
Requisito 6: Amostragem Uniforme
∆s1 ∆s2 ∆s3 ∆s4 ∆sn
∆s
i≈ ∆s
jCurvas – Requisito 7:
Formulação matemática tratável
Curvas e Superfícies - Parte 1
12
Solução
Curva representada por partes através de polinômios de grau baixo (geralmente 3)
z z z z y y y y x x x x d t c t b t a t z d t c t b t a t y d t c t b t a t x + + + = + + + = + + + = 2 3 2 3 2 3 ) ( ) ( ) (
[ ]
[
u u]
global u ou local t n , 1 , 0 0 ∈ ∈ t=0 t=1 Parametrização t=0 t=1 t=0 t=1t=0 t=1 u0 u1 u2 un z z z z y y y y x x x x d t c t b t a t z d t c t b t a t y d t c t b t a t x + + + = + + + = + + + = 2 3 2 3 2 3 ) ( ) ( ) ( continuidade no ponto comum dos trechosGeometria Diferencial
s P(u) ) ( ) ( Pu du d u R = ou P(s) ) ( ) ( ˆ Ps ds d s T = ou uT
du
ds
R
=
ˆ
)
(u
s
s
=
R
du
ds
=
Parâmetro de comprimento: u Parâmetro genérico:Requisitos da parametrização
P0 P1 P(u) 1 0)
1
(
)
(
u
u
P
u
P
P
+
−
=
1 0(
)
))
(
1
(
)
(
u
f
u
P
f
u
P
P
+
−
=
(1-u) ua (1-f(u)) f(u) ub ua ub 0 1 0 ) (u = P du d)
(
)
(
2 1 1 2u
s
u
s
u
u
Se
>
⇒
>
uContinuidade Geométrica e
Paramétrica
Descontínua Contínua: C0e G0 ) 1 ( ) 0 ( 2 1 R R = Contínua: C1e G1 ) 1 ( ) 0 ( 2 1 T T =C
0e G
1 ) 1 ( ) 0 ( 2 1 R R ≠ Geométrica ) 1 ( ) 0 ( 2 1 T T ≠C
1e G
0 1(0) 2(1) R =R ParamétricaCurvas e Superfícies - Parte 1
14
Curvas de Bézier
P. de Casteljau, 1959 (Citroën)
P. de Bézier, 1962 (Renault) - UNISURF Forest 1970: Polinômios de Bernstein
i i n n i
t
t
i
n
t
B
−
−
=
(
1
)
)
(
,∑
==
n i i n it
V
B
t
P
0 ,(
)
)
(
x P(t) y z t=0 t=1 V0 V1 V2 V3 Vn-1 Vn onde:)!
(
!
!
i
n
i
n
i
n
−
=
coef. binomial pol. BernsteinBézier Cúbicas
3 0 0 3 3 , 0 (1 ) (1 ) 0 3 ) (t t t t B − = − = −x
P(t)∑
==
3 0 3 ,(
)
)
(
i i it
V
B
t
P
y
z
V0 V1 V2 V3 t t t t t B1,3 (1 )31 1 3(1 )2 1 3 ) ( − = − = − 2 2 2 3 3 , 2 (1 ) 3(1 ) 2 3 ) (t t t t t B − = − = − 3 3 3 3 3 , 3 (1 ) 3 3 ) (t t t t B − = = − =∑
i i t B,3()[
(1 )]
1 3 = + −t t 3 3 2 2 1 2 0 3)
1
(
3
)
1
(
3
)
1
(
)
(
t
t
V
t
t
V
t
t
V
t
V
P
+
−
+
−
+
−
=
Polinômios Cúbicos de Bernstein
1 1 0 t B0,3 (1-t)3 3 1 0 t B1,3 3(1-t)2t 1 1 0 t B3,3 t3 1 0 t B2,3 3(1-t) t2 -3 1 1 0 t B0,3 + B1,3 + B2,3 + B3,3Propriedades da Bézier Cúbica
3 3 2 2 1 2 0 3 ) 1 ( 3 ) 1 ( 3 ) 1 ( ) (t t V t tV tt V t V P + − + − + − =
[
]
[
]
3 3 2 2 1 2 0 2 ) 1 ( 6 3 ) 1 ( 3 ) 1 ( 6 ) 1 ( 3 ) (t t V tt t V t ttV t V P dt d + − + − + − + − − + − − = 0)
0
(
V
P
=
3)
1
(
V
P
=
1 03
3
)
0
(
V
V
P
dt
d
+
−
=
3 23
3
)
1
(
V
V
P
dt
d
+
−
=
x P(t) y z V0 V1 V2 V3 R(0) R(1)Curvas e Superfícies - Parte 1
16
Controle da Bézier Cúbica
Fecho Convexo
1
)
(
0 0=
=
∑
∑
= = n i i n i i iV
com
t
P
α
α
Demonstração
Indução 1 ) (t =α0V0+α1V1 α0+α1= Pok
n=1 1 ) ( ) ( ) ( ) ( ) ( 1 ) ( 2 1 0 2 2 1 1 0 1 0 1 0 0 1 0 2 1 0 2 2 1 1 0 0 = + + + + + + + = = + + + + = α α α α α α α α α α α α α α α α α α V V V t P V V V t P ) (t P é interiorok
n=2 n=3 ...Equação do Foley
− − − − − = z y x z y x z y x z y x V V V V V V V V V V V V t t t t P 3 3 3 2 2 2 1 1 1 0 0 0 2 3 0 0 0 1 0 0 3 3 0 3 6 3 1 3 3 1 1 ) ()
(t
P
0V
1V
V
2 3V
3 3 2 2 1 2 0 3)
1
(
3
)
1
(
3
)
1
(
)
(
t
t
V
t
t
V
t
t
V
t
V
P
+
−
+
−
+
−
=
Curvas e Superfícies - Parte 1
18
Redução de n=3 para n=2
3 3 2 2 1 2 0 33
(
1
)
3
(
1
)
)
1
(
)
(
t
t
V
t
t
V
t
t
V
t
V
P
+
−
+
−
+
−
=
1 0 1 0(
t
)
(
1
t
)
V
t
V
V
+
−
=
2 1 1 1(
t
)
(
1
t
)
V
t
V
V
+
−
=
3 2 1 2(
t
)
(
1
t
)
V
t
V
V
+
−
=
1 2 2 1 1 1 0 2)
1
(
2
)
1
(
)
(
t
t
V
t
t
V
t
V
P
+
−
+
−
=
[
]
[
]
[
2 3]
2 2 1 1 0 2)
1
(
)
1
(
)
1
(
2
)
1
(
)
1
(
)
(
V
t
V
t
t
V
t
V
t
t
t
V
t
V
t
t
t
P
+
−
+
+
−
−
+
+
−
−
=
)
(
1 0t
V
)
(
1 1t
V
(
)
1 2t
V
Bezier n=2Redução de n=2 para n=1
1 1 1 0 2 0(
t
)
(
1
t
)
V
t
V
V
+
−
=
1 2 2 1 1 1 0 2)
1
(
2
)
1
(
)
(
t
t
V
t
t
V
t
V
P
+
−
+
−
=
[
] [
1]
2 1 1 1 1 1 0(
1
)
)
1
(
)
1
(
)
(
t
t
t
V
t
V
t
t
V
t
V
P
+
−
+
+
−
−
=
Bezier n=1 1 2 1 1 2 1(
t
)
(
1
t
)
V
t
V
V
+
−
=
1 1 2 0)
1
(
)
(
t
t
V
t
V
P
+
−
=
1 0V
1 1V
1 2V
2 0V
2 1V
)
(t
P
Cálculo de um Ponto
1 0V
1 1V
1 2V
2 0V
2 1V
)
(t
P
0V
1V
2V
3V
1 1V
1 0V
1 2V
2 0V
2 1V
P
(t
)
(1-t) t)
(
)
(
)
1
(
)
(
, 1 1, 1 ,t
t
B
t
t
B
t
B
in=
−
in−+
i− n− Mostre que: 0V
1V
V
2 3V
Subdivisão de Bézier Cúbicas
= 3 2 1 0 3 2 1 0 1 3 3 1 0 2 4 2 0 0 4 4 0 0 0 8 8 1 V V V V V V V V L L L L = 3 2 1 0 3 2 1 0 8 0 0 0 4 4 0 0 2 4 2 0 1 3 3 1 8 1 V V V V V V V V R R R R 1 0 1 2 1 2 1 V V VL = + . . . L
V
1 H 0 0 V VL = 1 V 2 V LV
2 R LV
V
3 0=
RV
1 RV
2 3 3 V VR =Curvas e Superfícies - Parte 1
20
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 ( ) (t t V t tV tt V t V P + − + − + − =[
]
[
]
3 2 2 2 1 2 0 2 3 3 ) 1 ( 6 ) 1 ( 6 ) 1 ( 3 ) 1 ( 3 ) (t t V t ttV tt t V t V P dt d + − − + − − − + − − = 3 2 2 2 1 2 0 2 3 ) 2 3 ( 3 ) 1 4 3 ( 3 ) 1 ( 3 t V t t V t t V t V + + − + + − + − − = 3 2 2 1 0 2 2 3 ) 2 6 ( 3 ) 4 6 ( 3 ) 1 ( 6 ) (t t V t V t V t V P dt d + + − + − + − =(
0 1 2)
2 1 0 2 2 2 6 6 12 6 ) 0 ( V V V V V V P dt d + − = + − =(
1 2 3)
3 2 1 2 2 2 6 6 12 6 ) 1 ( V V V V V V P dt d + − = + − =(
1 0)
1 0 2 3 3 3 ) 0 ( V V V V P dt d − = + − =(
3 2)
3 2 2 3 3 3 ) 1 ( V V V V P dt d − = + − =Nova notação
0 V 1 − nc p 2 − nc r 0 p 1 p 2 p 2 − nc p 0 r 1 r 2 r 1 − nc l 2 l 1 l 2 − nc l 1 V 2 V 3 V 4 V 5 V V6 7 V 4 − n V Vn−1 Vn 3 − n V Vn−2Derivadas na nova notação
1 3 1 2 2 3 ) 1 ( 3 ) 1 ( 3 ) 1 ( ) ( = − i+ − i+ − i+ + i+ i t t t t tt t P p r l p
(
1)
2 2 2 6 ) 0 ( = i− i+ i+ i P dt d l r p(
1 1)
2 2 2 6 ) 1 ( = i− i+ + i+ P dt d p l r(
i i)
i P dt d p r − = 3 ) 0 ((
1 1)
3 ) 1 ( = i+ − i+ i P dt d l px
y
z
)
(t
P
i i p i r 1 + i l 1 + i pCurvas e Superfícies - Parte 1
22
Construção de uma curva que passa
por 2 pontos
n=2
0 ) 0 ( '' = P 0 ) 1 ( '' = P 0 p 1 p 0 r 1 l(
2
)
0
6
p
0−
r
0+
l
1=
(
2)
0 6 r0− l1+p1 =(
1 0)
03
1
p
p
r
=
−
(
1 0)
13
2
p
p
l
=
−
Construção de uma curva que passa
por 3 pontos
0 p 0 r 2 p 1 r 1 p 1 l 2 l 0 2 0 1 0− r +l = p 0 ) 0 ( '' 0 = P 0 ) 1 ( '' 1 = P 0 1 0 2 2 2 1− l +p = r 1 1 1 ) 1 ( −ρ l +ρr =p 1 0 0 + = ρ
=
−
−
−
−
−
2 1 0 2 1 1 00
2
1
0
0
1
2
2
1
0
)
1
(
0
0
0
1
2
p
p
p
l
r
l
r
ρ
ρ
) 0 ( '' ) 1 ( '' 1 0 P P = 2 1 1 1 1 0 2l p p 2r l r − + = − +Método construtivo: dados n pontos
acrescentar mais um
0 p 1 p 1 − n p n p 1 + n p 0 r 1 r n r 1 − n r 1 + n l 1 − n l 1 l n l 1 0 0 + = ρ n n n r p l + = −ρ) ρ 1 ( 1 1 2 2 + − − n+ n= n− n+ n n l p p r l r 0 2 1+ 1= − n+ n+ n l p r − = − − − − + − + 1 1 1 2 1 0 1 2 2 0 ) 1 ( n n n n n n p r p l r lρ
ρ
Interpolação: dados p
0…p
n, encontre l’s e r’s
1 p 1 − n p n p 1 + n p 0 r 1 r n r 1 − n r 1 + n l 1 − n l 1 l n l 0 p
Curvas e Superfícies - Parte 1
24
0 d 1 d 2 d np−2 dBezier interpolation
0 p 1 p 2 p 2 − np p 1 − np p 0 r 1 r 2 − np r 2 r 1 − np l 2 l 1 l 2 − np l Given: np points 1 1 0,p, ,pnp− p Find: 2(np-1) points 1 2 1,l, ,lnp− l 2 1 0,r, ,rnp− r Criteria: 0 ''0= p ⇒ 6(
p0−2r0+l1)
=0 ⇒ 2r0−l1=p0 0 ''np−1= p ⇒6(
rnp−2−2lnp−1+pnp−1)
=0 ⇒ −rnp−2+2lnp−1=pnp−1 right i i left i i d dp' = −1p' ⇒ 3di(
pi−li)
=3di−1(
ri−pi)
⇒ dili+di−1ri=(di−1+di)pi right i left i'' p'' p = ⇒6(
ri−1−2li+pi) (
=6pi−2ri−1+li)
⇒ −ri−1+2li−2ri−1+li=0Bezier interpolation
Criteria:0 1 0 2r−l=p 1 1 2
2
− − −+
=
−
r
npl
npp
np i i i i i i il
d
d
d
d
+
−1r
=
(
−1+
)
p
0
2
2
1 1+
−
+
=
−
r
i−l
ir
i−l
i + + + = − − − − − − − − − − − − − − − − − 1 2 2 3 2 2 1 1 1 0 0 1 2 2 2 2 1 1 0 1 2 1 2 0 1 0 ) ( 0 ) ( 0 ) ( 2 1 0 0 0 0 0 0 1 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2 n n n n nc nc nc n n d d d d d d l l l l d d d d d d p p p p p r r r r 2 − np r 0 d 1 d 2 d np−2 d 0 p 1 p 2 p 2 − np p 1 − np p 0 r 1 r 2 r 1 − np l 2 l 1 l 2 − np lresulting linear system:
B-Splines
• vértices + nós 0 V 1 V 2 V 3 V 4 V n V + + + + + + • • • • • • ) (u P i n i p i u V N u P∑
= = 0 , ( ) ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( 1, 1 1 1 1 1 , , N u u u u u u N u u u u u N i p i p i p i p i i p i i p i + − + + + + + − + − − + − − = . 1 0 0 : . pordefinição obs =p = grau do polinômio Ni,p(u)
controla a continuidade ( Cp-1 ) u0 ≤ u1≤ u2 ≤ … ≤ um ∈ = + contrário caso u u u se u N i i i 0 ) [ 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 N
i,p(u)
•
Não negativa: N
i,p(u)≥0 para qualquer u, i, e p.
•
Partição da unidade: ∑ N
i,p(u)=1 para todo u∈[u
0,u
m].
•
Suporte local: N
i,p(u)=0 se u∉[u
i, u
i+p+1]. Mais ainda,
in qualquer intervalo dos nós no máximo p+1 das
N
i,p(u) são não zero.
•
Diferenciabilidade: todas as derivadas de N
i,p(u)
existem no interior de um intervalo de nós (onde é
polinômial) . Nos nós N
i,p(u) é p-k diferenciável, onde k
é a multiplicidade do nó.
•
Extremo: exceto para o caso p=0, N
i,p(u) tem apenas
Curvas e Superfícies - Parte 1
26
Spline
Uniforme
)
(
)
)
1
(
(
)
(
)
(
)
(
, 1 1, 1 ,N
u
pd
u
d
p
u
u
N
pd
u
u
u
N
i p i p i i p i − + −−
+
+
+
−
=
u
j+1- u
j=d
)
(
)
(
)
(
)
(
)
(
)
(
)
(
1, 1 1 1 1 1 , ,N
u
u
u
u
u
u
N
u
u
u
u
u
N
i p i p i p i p i i p i i p i + − + + + + + − +−
−
+
−
−
=
Splines
Uniformes
p=0 e p=1
∉ ∈ = + + ) [ 0 ) [ 1 ) ( 1 1 0 , i i i i i u u u se u u u se u N p=0 0 ui-d ui ui+d ... n Ni,0(u) ... p=1(
)
∈ ∈ − + ∈ − ∈ = + + + + ] [ 0 ) [ ) 2 ( ) [ ) 0 [ 0 ) ( 2 2 1 1 1 , m i i i i i i i i i u u u se u u u se d u d u u u u se d u u u u se u N ) ( ) 2 ( ) ( ) ( ) ( , 1 1, 1 1 , N u d u d u u N d u u u N i i p p i i i − + − − + + − = Ni,2(u) ui-d ui ui+d ui+2dSplines
Uniformes
p=2
Ni,1(u) Ni+1,1(u)
Ni-1,1(u) ∈ ∈ − + − ∈ + − − + + − + − ∈ − ∈ = + + + + + + ] , [ 0 ) , [ 2 ) 3 ( ) , [ 2 )) ( )( 3 ( ) 2 )( ( ) , [ 2 ) ( ) , 0 [ 0 ) ( 3 3 2 2 2 2 1 2 1 2 2 2 , 1 m i i i i i i i i i i i i i i u u u se u u u se d u d u u u u se d d u u u d u u d u u u u u u se d u u u u se u N ui-d ui ui+d ui+2d ui+3d p=2 ( ) 2 ) 3 ( ) ( 2 ) ( ) ( ,1 1,1 2 , N u d u d u u N d u u u N i i i i i + − + + − =
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
/2d2 (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))/2d 2 (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))]/6d 2 (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 1, 1 ,N
u
pd
u
d
p
u
u
N
pd
u
u
u
N
i p i p i i p i − + −−
+
+
+
−
=
Curvas e Superfícies - Parte 1
28
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/6Funções da base
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 u1 u2 u3 ... um-4 u0 um-3 um-2 u N0,3(u) N2,3(u) N-1,3(u) ... t 2 3 1 2 3 2 3 1 3 6 6 1 3 3 3 6 4 6 3 6 ) 1 ( ) ( − + + + + + + − + + − + − = i i i i i V t V t t t V t t V t t P 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
- − − − − = + + + + + + − − − z i y i x i z i y i x i z i y i x i z i y i x i V V V V V V V V V V V V t t t t P , 3 , 3 , 3 , 2 , 2 , 1 , , , , 1 , 1 , 1 2 3 0 1 4 1 0 3 0 3 0 3 6 3 1 3 3 1 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 V n+2=V1 V2 V3 V4 V-1= Vn
B-Spline Não Periódica
Foley
-• vértices + nós 0 V 1 V 2 V 3 V Vn−1 n V + + + + + + • • • • • • i=0 i=1 i=2 i=3 1 V • i=n-1 Vn−1 1 − n V • 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) = VnCurvas e Superfícies - Parte 1
30
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=3 i=4i=5 i=6 i=7
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}
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)
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 = n n P P P P P P V V V V V V 4 3 2 1 0 4 3 2 1 0 4 1 0 0 0 1 1 4 1 0 0 0 0 1 4 1 0 0 0 0 1 4 1 0 0 0 0 1 4 1 1 0 0 0 1 4 6 1 • vértices + nós
Curvas e Superfícies - Parte 1
32
B-Spline Não Periódica
Foley
-• vértices + nós 0 V 1 V 2 V 3 V Vn−1 n V + + + + + + • • • • • • i=0 i=1 i=2 i=3 1 V • i=n-1 Vn−1 1 − n V • 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 = n n P P P P P P V V V V V V 4 3 2 1 0 4 3 2 1 0 1 0 0 0 0 0 1 4 1 0 0 0 0 1 4 1 0 0 0 0 1 4 1 0 0 0 0 1 4 1 0 0 0 0 0 1 6 1
Funções Racionais
]
1
,
0
[
1
2
,
1
1
)
(
2 2 2∈
+
+
−
=
u
u
u
u
u
u
P
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.0Cônicas
c
bt
at
et
dt
x
c
bt
at
e
dt
y
ey
dty
cy
bty
y
at
ty
x
ey
dx
cy
bxy
ax
+
+
+
−
=
+
+
+
−
=
=
+
+
+
+
=
=
+
+
+
+
2 2 2 2 2 2 2 2 20
0
x ycô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 i i i i i i n i p i w z w y w x w u N u w u z u w u y u w u x u w 0 , ( ) ) ( ) ( ) ( ) ( ) ( ) ( ) (∑
∑
= = = n i i i i n k p k k p i i z y x u N w u N w u z u y u x 0 0 , , ) ( ) ( ) ( ) ( ) (∑
∑
= = = = n i n k p k k p i i p i i i i p i u N w u N w u R onde z y x u R u z u y u x 0 0 , , , , ) ( ) ( ) ( ) ( ) ( ) ( ) (Curvas e Superfícies - Parte 1
34
Cônicas como NURBS
} 1 , 1 , 1 , 0 , 0 , 0 { ) ( ) ( : ) ( ) ( ) ( ) ( ) ( ) ( ) ( 2 , 2 , 2 2 , 2 1 2 , 1 0 2 , 0 2 2 2 , 2 1 1 2 , 1 0 0 2 , 0 = = + + + + = U com u N u B onde w u B w u B w u B V w u B V w u B V w u B u P i i 0 V 2 V 1 V w0=1 w1=s/(1-s) w2=1 w1=0 0.2 -0.2 1 3 s Elipse (w1<1) Parábola (w1=1) Hipérbola (w1>1) Faux et al. w0w2/w1 - determina a cônica 0 V 2 V 1 V w0=1 w1=s/(1-s) w2=1 w1=0 0.2 -0.2 1 3 s Elipse (w1<1) Parábola (w1=1) Hipérbola (w1>1) S M 1 2 1 ) 1 ( ) ( V s M s S e S P + − = =
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}