Curvas e Superfícies
As Curvas de Hermite
))(),(),(()2,1,2,1,()( tzyytxTTPPtftP
P2
P1
T2
T1
10 t
Curvas e Superfícies: Curvas de Hermite
)2,1,2,1( TTPPP
zzzzz
yyyyy
xxxxx
dtctbtaPtz
dtctbtaPty
dtctbtaPtx
23
23
23
)(
)(
)(
Curvas e Superfícies: Curvas de Hermite
zzzzz
yyyyy
xxxxx
dtctbtaPtz
dtctbtaPty
dtctbtaPtx
23
23
23
)(
)(
)(
zzzzz
yyyyy
xxxxx
Tdcbattttz
Tdcbatttty
Tdcbattttx
] ][1 [)(
] ][1 [)(
] ][1 [)(
23
23
23
Curvas e Superfícies: Curvas de Hermite
))0(),0(),0(()1,1,1(1 zyxPPPP zyx
zzzzzz
yyyyyy
xxxxxx
ddcbaPz
ddcbaPy
ddcbaPx
0001)0(
0001)0(
0001)0(
23
23
23
),,()1,1,1(1 zyxzyx dddPPPP
Curvas e Superfícies: Curvas de Hermite
))1(),1(),1(()2,2,2(2 zyxPPPP zyx
zzzzzz
yyyyyy
xxxxxx
ddcbaPz
ddcbaPy
ddcbaPx
1112)1(
1112)1(
1112)1(
23
23
23
) , ,(
)2,2,2(2
zzzzyyyyxxxx
zyx
dcbadcbadcba
PPPP
Curvas e Superfícies: Curvas de Hermite
zzzzz
yyyyy
xxxxx
ddcbaz
ddcbay
ddcbax
P
] ][1 0 0 0[)0(
] ][1 0 0 0[)0(
] ][1 0 0 0[)0(
1
zzzzzzzz
yyyxyyyy
xxxxxxxx
dcbadcbaz
dcbadcbay
dcbadcbax
P
] ][1 1 1 1[)1(
] ][1 1 1 1[)1(
] ][1 1 1 1[)1(
2
Curvas e Superfícies: Curvas de Hermite
))1´(),1´(),1´(()2,2,2(2
))0´(),0´(),0´(()1,1,1(1
zyxTTTT
zyxTTTT
zyx
zyx
))(),(),(()2,1,2,1,()( tzyytxTTPPtftP
P2
P1
T2
T1
10 t
Curvas e Superfícies: Curvas de Hermite
zzzzzzzz
yyyyyyyy
xxxxxxxx
ctbtadtctbtaPtz
ctbtadtctbtaPty
ctbtadtctbtaPtx
23)´()´(
23)´()´(
23)´()´(
223´
223´
223´
zzzzz
yyyyy
xxxxx
Tdcbatttz
Tdcbattty
Tdcbatttx
] ][0 1 2 3[)´(
] ][0 1 2 3[)´(
] ][0 1 2 3[)´(
2
2
2
))1´(),1´(),1´(()2,2,2(2
))0´(),0´(),0´(()1,1,1(1
zyxTTTT
zyxTTTT
zyx
zyx
Curvas e Superfícies: Curvas de Hermite
))0´(),0´(),0´(()1,1,1(1 zyxTTTT zyx
zzzzz
yyyyy
xxxxx
cdcbaz
cdcbay
cdcbax
] ][0 1 0 0[)0´(
] ][0 1 0 0[)0´(
] ][0 1 0 0[)0´(
),,(1 zyx cccT
zzzzz
yyyyy
xxxxx
Tdcbatttz
Tdcbattty
Tdcbatttx
] ][0 1 2 3[)´(
] ][0 1 2 3[)´(
] ][0 1 2 3[)´(
2
2
2
Curvas e Superfícies: Curvas de Hermite
))1´(),1´(),1´(()2,2,2(2 zyxTTTT zyx
zzzzzzzz
yyyyyyyy
xxxxxxxx
dcbadcbaz
dcbadcbay
dcbadcbax
23] ][0 1 2 3[)1´(
23] ][0 1 2 3[)1´(
23] ][0 1 2 3[)1´(
)23 ,23 ,23(2 zzzzyyyyxxxx dcbadcbadcbaT
zzzzz
yyyyy
xxxxx
Tdcbatttz
Tdcbattty
Tdcbatttx
] ][0 1 2 3[)´(
] ][0 1 2 3[)´(
] ][0 1 2 3[)´(
2
2
2
Curvas e Superfícies: Curvas de Hermite
Em resumo e colocando em forma matricial, temos ...
xxxx
x
xxxx
x
x
x
x
x
H
x
x
x
x
dcba
c
dcba
d
d
c
b
a
T
T
P
P
x
230123
0100
1111
1000
2
1
2
1
x
x
x
x
x
H
T
T
P
P
2
1
2
1
y
y
y
y
y
H
T
T
P
P
2
1
2
1
z
z
z
z
z
H
T
T
P
P
2
1
2
1
Curvas e Superfícies: Curvas de Hermite
x
x
x
x
x
H
T
T
P
P
2
1
2
1
y
y
y
y
y
H
T
T
P
P
2
1
2
1
z
z
z
z
z
H
T
T
P
P
2
1
2
1
x
x
x
x
x
T
T
P
P
H
2
1
2
1
1
y
y
y
y
y
T
T
P
P
H
2
1
2
1
1
z
z
z
z
z
T
T
P
P
H
2
1
2
1
1
Curvas e Superfícies: Curvas de Hermite
x
x
x
x
x
T
T
P
P
H
2
1
2
1
1
y
y
y
y
y
T
T
P
P
H
2
1
2
1
1
z
z
z
z
z
T
T
P
P
H
2
1
2
1
1
0123
0100
1111
1000
H
0001
0100
1233
1122
1H
Curvas e Superfícies: Curvas de Hermite
x
x
x
x
x
x
x
x
x
T
T
P
P
d
c
b
a
2
1
2
1
0001
0100
1233
1122
x
x
xxxx
xxxx
x
x
x
x
x
P
T
TTPP
TTPP
d
c
b
a
1
1
2122313
212212
Curvas e Superfícies: Curvas de Hermite
x
x
xxxx
xxxx
x
x
x
x
x
P
T
TTPP
TTPP
d
c
b
a
1
1
2122313
212212
y
y
yyyy
yyyy
y
y
y
y
y
P
T
TTPP
TTPP
d
c
b
a
1
1
2122313
212212
z
z
zzzz
zzzz
z
z
z
z
z
P
T
TTPP
TTPP
d
c
b
a
1
1
2122313
212212
Curvas e Superfícies: Curvas de Hermite
Juntando as idéias ...
x
x
x
x
x
T
T
P
P
H
2
1
2
1
zzzzz
yyyyy
xxxxx
Tdcbattttz
Tdcbatttty
Tdcbattttx
] ][1 [)(
] ][1 [)(
] ][1 [)(
23
23
23
]2121[]1 [)(
]2121[]1 [)(
]2121[]1 [)(
23
23
23
zzzz
yyyy
xxxx
TTPPHttttz
TTPPHtttty
TTPPHttttx
Curvas e Superfícies: Curvas de Hermite
Finalmente ...
2
1
2
1
))(),2(),32(),132(()( 23232323
T
T
P
P
ttttttttttP
xxxx TttTtttPttPtttx 2)(1)2(2)32(1)132()( 23232323
yyyy TttTtttPttPttty 2)(1)2(2)32(1)132()( 23232323
zzzz TttTtttPttPtttz 2)(1)2(2)32(1)132()( 23232323
Curvas e Superfícies: Curvas de Hermite
Finalmente ...
xxxx TttTtttPttPtttx 2)(1)2(2)32(1)132()( 23232323
yyyy TttTtttPttPttty 2)(1)2(2)32(1)132()( 23232323
zzzz TttTtttPttPtttz 2)(1)2(2)32(1)132()( 23232323
P2
P1
T2
T1
10 t
2)(1)2(2)32(1)132()( 23232323 TttTtttPttPtttP
Curvas e Superfícies
As Curvas de Bézier
0B
1B
2B
3B
4B
5B
•Desenvolvida por Pierre Bézier durante seus trabalhos em projetos de automóveis para a Renault francesa no início da década de 1960.
• A grande maioria dos Softwares de Computação Gráfica disponíveisno mercado usam o conceito de Curvas de Bézier. Entre eles:Adobe, Corel Draw,AutoCad, Paint Shop Pro, 3D Studio Max
Curvas e Superfícies: as curvas de Bézier
0B
1B
2B
3B
4B
5B
•Esse tipo de curva, por não usar o conceito de vetor e apenas pontos, é mais
compreensível pelos usuários.
• Para ajuste por u polinômio de grau n, a curva de Bézier pode ser gerada por3, 4, até n-1 pontos de controle.
• Geralmente, é suficiente usar 4 pontos, gerando uma curva cúbica.
• A curva de Bézier passa pelo primeiro e último ponto, e usa os demais para construir sua tangente.
Curvas e Superfícies: as curvas de Bézier
0B
1B
2B
3B
4B
5B
10 ,)()(0
,
ttJBtPn
iini
iniiniin tt
ini
ntt
i
ntJ
1
)!(!
!1)(,
n
iin tJ
0, 1)(
Curvas e Superfícies: as curvas de Bézier
10 1)(0
,
ttJn
iin
Essa propriedade é chamada de propriedade normalizante, e força a curva gerada a ficar inteiramente dentro da figura convexa(convex hull) definida pelos pontos de controle Bi
0B
1B
2B
3B
5B
0B
1B 2B
3B4B
5B
Curvas e Superfícies: as curvas de Bézier
0B
1B
2B3B
40 BB
1B
2B3B
4B
Conexão de vários segmentos de curvas de graus menores parasimplificação da expressão
Curvas e Superfícies: as curvas de Bézier
Níveis de continuidade da união entre duas curvas
sem continuidadecontinuidade C0
continuidade C1continuidade C2
Curvas e Superfícies: as curvas de Bézier
Como exemplo didático apenas, supomos n = 2. Nesse caso, temostrês pontos e controle: B0, B1 e B2
00 ,)()(0
,
ttJBtPn
iini 11
, 1)!(!
!1)(
nini
in ttini
ntt
i
ntJ
2
1
02
2
1
022
221
20
022
111
200
2
00
001
022
121
1)1(2)1()(
)1(2)1()(
)1(!0!2
!2)1(
!1!1
!2)1(
!2!0
!2)(
)1()!2(!
!2)1(
)!(!
!)(
B
B
B
tt
B
B
B
tttttP
tBttBtBtP
ttBttBttBtP
ttii
Bttini
nBtP
i
inii
n
i
inii
Curvas e Superfícies: as curvas de Bézier
De uma forma mais compacta e elegante, temos a curva de Bézierquando n=2.
BBGM
T B
B
B
tttP
2
1
02
001
022
121
1)(
• T é o vetor de potências da curva de Bézier de grau n = 2
• MB é a Matriz de coeficientes da curva de Bézier de grau n = 2
• GB é a Matriz de pontos de controle que definem a geometriada curva de Bézier de grau n = 2
Curvas e Superfícies: as curvas de Bézier
De uma forma análoga, as matrizes da curva de Bézier quando n=3.
BB GM
T
B
B
B
B
ttttP
3
2
1
0
23
0001
0033
0363
1331
1)(
Que leva à expressão:
33
22
12
03 )1(3)1(3)1()( BtBttBttBttP
Curvas e Superfícies
•Desenvolvida em 1967 por Schenberg, são até hoje os tipos mais populares em Computação Gráfica.
• Uma B-Spline é uma versão da curva de Bézier que não passa pelos pontos de controle, o que permite ela ser gerada para qualquer número de pontos de controletornando o grau do polinômio independente do número de pontos bases.
0B
1B
2B
3B
4B
5B
B-Splines
Curvas e Superfícies: B-Splines
• A forma básica da B-Spline é bastante semelhante à curva de Bézier. Nas B-Splinesum conjunto Ni,k(t) combina o efeito dos pontos de controle Bi para gerar a curva.
0B
1B
2B
3B
4B
5B
n
ikii tNBtP
0, )()(
Curvas e Superfícies: B-Splines
)()(1
)(
intervalos demais nos 0
para 1)(
1,111
1,,
10,
tNtt
tttN
tt
ttN
ttttN
kiiki
kiki
iki
iki
iii
n
ikii tNBtP
0, )()(
O parâmetro k controla a ordem de continuidade da curva, e n o número de pontosde controle Bi usados.
Os parâmetros são chamados nós e podem ser qualquer seqüência crescente uniforme, não-uniforme, periódica ou não-periódica.
mttt ,,, 10
Curvas e Superfícies: B-Splines
21 set -2
10 set )(2, t
ttN i
n
ikii tNBtP
0, )()(
para k = 2
Curvas e Superfícies: B-Splines
32 se )3(2
1
21 se 2
3-t-
4
3
10 se 2
1
)(
2
2
2
3,
tt
t
tt
tN i
n
ikii tNBtP
0, )()(
para k = 3
Curvas e Superfícies: B-Splines
43 se )4(6
1
32 se 2-t -2-t2
1-
3
2
21 se 2-t -2-t2
1-
3
2
10 se 6
1
)(
3
23
23
3
4,
tt
t
t
tt
tN i
n
ikii tNBtP
0, )()(
para k = 4
Curvas e Superfícies: Curvas Racionais
Forma Inteira Forma Racional
Bézier
n
iini tJB
0, )(
n
iini
n
iinii
tJw
tJBw
0,
0,
)(
)(
B-Spline
n
ikni tNB
0, )(
n
ikii
n
ikiii
tNw
tNBw
0,
0,
)(
)(
As curvas vistas até agora possuem uma versão racional, que são normalizadas por pesos wi
A vantagem da representação racional é a invariância com relação à projeção
Curvas e Superfícies: Curvas Racionais
De forma geral, para cada ponto da curva temos:
n
iin
Wi
w tJBtP0
, )()( para as curvas de Bézier
n
iki
Wi
w tNBtP0
, )()( para as curvas B-Splines
Curvas e Superfícies: Curvas Racionais
Para o caso específico da B-Spline, se o conjunto de nós for não-uniforme, e a curva tratar-se de uma superfície racional, ela é chamada de Non Uniform Rational Base Spline, mais conhecida como NURBSAs curvas racionais, principalmente as NURBS, têm se tornado muito populares, sobretudo em sistemas complexos como CAD.
Controlando os pesos, podemos controlar a suavidade da curva próximo aos pontos de controle correspondentes.
0B
1B
2B
3B
4B
5B
6B1.03 w
5.0
0.4
Curvas e Superfícies: Superfícies Bézier
As superfícies de Bézier são uma extensão direta das curvas de Bézier,uma vez que basta apenas acrescentar mais uma dimensão.A expressão para as superfícies de Bézier é a seguinte:
1,0 )()(),(0 0
,,,
tstJsJBtsPn
i
m
jmjniji
TMG),( TBBBSMtsP
]1ttt[MG]1[),( 23TBB
23BMssstsP
0001
0033
0363
1331
BM
3,32,31,30,3
3,22,21,20,2
3,12,11,10,1
3,02,01,00,0
PPPP
PPPP
PPPP
PPPP
GB
Curvas e Superfícies: Superfícies B-Splines
As superfícies de B-Splines, como as superfícies de Bézier, são uma extensão direta das curvas de B-Splines, uma vez que basta apenas acrescentar mais uma dimensão. A expressão para as superfícies de Bézier é a seguinte:
1,0 )()(),(0 0
,,,
tstNsNBtsPn
i
m
jljkiji
0,0P
0,3P 1,3P 2,3P 3,3P
3,2P
3,1P
3,0P0,2P
0,1P
1,0P 2,0P
Curvas e Superfícies: Superfícies Racionais
),( tsP Forma Inteira Forma Racional
Bézier
n
i
m
jmjniji tJsJB
0 0,,, )()(
n
i
m
jmjniji
n
i
m
jmjnijiji
tJsJw
tJsJBw
0 0,,,
0 0,,,,
)()(
)()(
B-Spline
n
i
m
jljkiji tNsNB
0 0,,, )()(
n
i
m
jljkiji
n
i
m
jljkijiji
tNsNw
tNsNBw
0 0,,,
0 0,,,,
)()(
)()(
Assim como as curvas, as superfícies possuem a versão racional, e da mesma forma são normalizadas por pesos wi
Curvas e Superfícies: NURBS em OpenGL
Para desenhar uma curva de Bézier em OpenGL, são necessários 2 passos básicos:
1- Definir um avaliador através da função glMap12 - Avaliar o polinômio criado em 1 através da função glEvalCoord1
glMap1(Glenum target, Type t0, Type t1, Glint Stride, Glint order, TYPE *points)
• target: define que tipo de ponto tem a curva, exemplo: GL_MAP1_VERTEX_3• t0: valor mínimo da faixa a ser avaliada, exemplo, 0.0• t1: valor máxima da faixa a ser avaliada, exemplo, 1.0• stride: número de pontos-flutuantes entre cada par de ponto de controle sequencial• ordem: significa que o grau do polinômio criado é n = ordem -1• *points: ponteiro para o primeiro elemento de um vetor de pontos de controle
glEvalCoord1(Type u): esta função avalia o polinômio criado com glMap1 para a faixa de valores t0-t1.
Curvas e Superfícies: NURBS em OpenGL
Está curioso por mais detalhes interessantes? ...
... não perca as aulas de LAB!!!
Recommended