Upload
others
View
18
Download
0
Embed Size (px)
Citation preview
3D-s számítógépes geometria
5. B-spline görbék és felületek
3D-s számítógépes geometria 1
Dr. Várady TamásBME, Villamosmérnöki és Informatikai KarIrányítástechnika és Informatika Tanszék
http://cg.iit.bme.hu/portal/node/312https://www.vik.bme.hu/kepzes/targyak/VIIIAV01
� B-spline görbékbázisfüggvények
poláris formulák
Tartalom
3D-s számítógépes geometria 2
tulajdonságok
egyszerű műveletek
� B-spline felületek
Bézier görbék -összefoglaló
n-ed fokú Bézier görbe:
kontroll poligon:
)(=)(0=
tBtn
kk
n
k
cr ∑
nccc K,, 10
c0
c1
c3
c2
c0
c0
c1c1 c2
c0
c1c2
c3
c4
3Bézier görbék
Bernstein bázisfüggvények:
....
:,)1(4:,)1(6:,)1(4:,)1(:,))1((4
:,)1(3:,)1(3:,)1(:,))1((3
:,)1(2:,)1(:,))1((2
:),1(:),)1((1
1=)(,1=))1((
,)(1=)(
34
3
34
3
224
2
34
1
44
0
4
33
3
23
2
23
1
33
0
3
22
2
2
1
22
0
2
1
1
1
0
0=
tBttBttBttBtBttn
tBttBttBtBttn
tBttBtBttn
tBtBttn
tBtt
ttk
ntB
n
k
n
k
n
knkn
k
−−−−+−→=
−−−+−→=
−−+−→=
−+−→=
+−
−
∑
−c0
c1
c3
c2
c5
c4
c6
c7
c4
Bézier vs. B-spline
p0
p1
p3
p2
p5
p4
p0
p1
p2
p3
p4 p5
p6p7
u0
u1u2
u3 u4
u5
?B-spline görbe
43D Számítógépes Geometria
)()(7
0
uNun
ii
i∑=
= pr],[
],,,,[,3
7,0
*
51
*
0
pp
uuun
K
K=
u0 u1 u2 u3 u4 u50 1/5 2/5 3/5 4/5 1
)()( 55
0
uBui
ii∑
=
= pr],[
],1,0[,5
5,0pp
n
K
=
Cél: szakaszokból álló (piecewise), simán kapcsolódó vektorpolinomoklétrehozása
B-spline bázisfüggvények1
0,1 Cn =
1,2 Cn =
0 1 2 3 4 5
3
6
1
=
=
=
S
K
n
7
2
=
=
K
n
5B-spline bázisfüggvények
fokszám: nparametrizálás − csomóvektor (knots) (K)
# bázisfüggvények = # kontroll pontok
# "valódi" domén intervallumok = # görbe-szegmensek (S)
],[;0)(1++
∈≥nii
n
iuuuuN
2,3 Cn =
.],,,[ 110 −Kuuu K
iP↔
0 1 2 3 4 5 6
0 1 2 3 4 5 6 7
4
7
=
=
S
K
3
8
3
=
=
=
S
K
n
B-spline bázisfüggvények2
egyenletes (uniform) csomóvektor:
nem egyenletes (non-uniform) csomóvektor:
bázisfüggvények
],,,[ 110 −Kuuu K
]1,,1,0[ −KK
],[,1)(n
nuuuuN ∈=∑
6B-spline bázisfüggvények
folytonosság a csomókban:multiplicitás:
belső csomónál:
],[,1)( 10
nKni
n
i uuuuN −−=
∈=∑
],,,,,[11110 −−++ ===
Krjjjuuuuuu KKK
1−nC
)1( −−→ rSS
rnnCCr
−− →1,
B-spline bázisfüggvények3interpoláció a végeken (lásd előző ábra):
tartóintervallum (support):
rekurzív formula:
2,,0,0
),[1)(
10 −= ∈
= +Ki
uuuuN
ii
iK
−−
],,,[ 1110 −−− ===== KnKjn uuuuuu KKKK
],[ 1++∈ nii uuu
7B-spline bázisfüggvények
periodikus bázisfüggvények:
)()()( 1
1
11
11uN
uu
uuuN
uu
uuuN
n
i
ini
nin
i
ini
in
i
−
+
+++
++−
+ −
−+
−
−=
Kuu =0
1u
1−Ku SLK ==
?Bázisfüggvények
Tulajdonságok:• affin invariancia• konvex burok • Cn-1 folytonos a csomókban• folytonosság csökkenthető (csomó multiplicitás)• szigorúan lokálisan módosítás• egyenes reprodukció
B-spline görbék)(=)(
1
0=
uNun
ii
K
i
Pr ∑−
?B-spline görbe
P0
P1
P2
P
u=1
u=3
u=0
u=4
8B-spline görbék
• egyenes reprodukció• változást csökkentő tulajdonság
Harmadfokú B-spline görbe• végponti (pozició, tangens) interpoláció• harmadfokú görbedarabok• a súlyfüggvények a csomóvektortól függnek• minden csomóhármas meghatároz egy
kontrollpontot, az i-edik kontroll pont Grevilleabszcisszája:
ji
n
ji
un
+∑1=
1=ξ
Példa: n=3, K=6, S=3
;4=;3
11=;
3
8=;
3
4=;
3
1=;0=
)4,4,4()4,4,3()4,3,1()3,1,0()1,0,0()0,0,0(
111210ξξξξξξ
P3
[(0),0,0,0,1,3,4,4,4,(4)]
P4
P5u=3
kontroll pontok
(i) Descartes koordináták (pozició):
(ii) polár koordináták (paraméterezés)
• lineáris:• másodfokú:
Poláris forma1
),(
)(
bai
ai
PP
PP
=
=
),,(,),(zyxiyxi
PPPPP == PP
P(0,0,0)
[(0),0,0,0,1,3,4,4,4,(4)]
u=1
u=3
u=0
u=4
P(0,0,1)
P(0,1,3)
P(1,3,4)P(3,4,4)
P(4,4,4)
P*
9Poláris forma
• másodfokú:
• harmadfokú:),,(
),(
cbai
bai
PP
PP
=
=
a poláris forma tulajdonságai:• görbepont:
• permutáció invariáns:
• egyenes két ponton át: n-1 koordináta egyezik
• affin kombináció:
• példa:
),,(),,(),,(
),,(
213132321,,
;)(
uuuuuuuuu
uuuu
PPP
Pr
K=
=
),,(),,(),,( 212121 wvuuwuuvuu βαβα +=+ PPP
[(0),0,0,0,1,3,4,4,4,(4)]
)8.0,3,1()4,3,1()3,1,0( 2.02).01(* PPPP =×+×−=
n-ed fokú Bézier:
• a kontroll pontok poláriskoordinátái:
Poláris forma2 - Bézier görbék
],[,)( bauu ∈r
= PP
P(2,4,4)
P(2,2,4)
P(4,4,4)
P(4,4,7) P(4,7,7)
P(7,7,7)
10Poláris forma
• lineáris:
• másodfokú:
• harmadfokú:
egyébként,ha
,)( ),,,(21
buinkau
u
kk
uuuin
=−≤=
= KPP
),,(3),,(2),,(1),,(0
),(2),(1),(0
)(1)(0
,,,
,,
,
bbbbbabaaaaa
bbbaaa
ba
PPPPPPPP
PPPPPP
PPPP
====
===
==
P(2,2,2) [2,4], [4,7]
Bézier − de Casteljau algoritmus
a poláris forma segítségével
� ismételt lineáris interpoláció�
�
Bézier görbe kiértékelése
,3,210 ,, cccc1
2
1
1
1
0 ,, ccc22 ,cc
111011001000
111000 ttt
10 tttt c
c1
c3
c2
c11
c10
c12
c20
c21
c30
11Poláris forma
�
�
2
1
2
0 ,cc3
0c10 tttt
ttt
P(000)
P(001)
P1(00t)
P2(0tt)
P(011)
P(111)
P1(0t1)
P1(t11)
P2(1tt)P3(ttt)
r(t)=P3(ttt)
c0
Ujjgyakorlat*- B-spline görbék
P(0,0,0)
P( , , )P( , , ) P(4,4,4)
?
?
Harmadfokú interpoláló B-spline, egyenletes csomóvektor [0,4]
Feladat:
12B-spline algoritmusok
P(0,0,0)
[(0),0,0,0,1,2,3,4,4,4,(4)]
P( , , )
P( , , )
P( , , )?
Feladat:
1. poláris koordináták megadása
2. belső szegmens végpontok meghatározása
Ujjgyakorlat - B-spline görbék
P
P(0,0,1)P(0,1,2) P(4,4,4)
P(0,0,0)
P(0,0,1)P(0,1,2)
P
P(4,4,4)
13B-spline algoritmusok
P(0,0,0)
[(0),0,0,0,1,2,3,4,4,4,(4)]
P(1,2,3)
P(2,3,4)
P(3,4,4)
P(0,0,0)
[(0),0,0,0,1,2,3,4,4,4,(4)]
P(1,2,3)
P(2,3,4)
P(3,4,4)
)1,1,1()2,1,1()1,1,0(
)2,1,1()3,2,1()2,1,0(
)1,1,0()2,1,0()1,0,0(
,
,
,
PPP
PPP
PPP
⇒
⇒
⇒
B-spline − csomó beszúrás
� a görbe alakja nem változik
� +1 szabadságfok
B-spline - Algoritmusok1
P(0,0,0)
P(0,0,1)P(0,1,1.8)
P
P(0,1,3)
14B-spline algoritmusok
� osztás n szakaszon
� n=3 esetén:
� folytonosság: ∞
C
P(0,0,0)
[(0),0,0,0,1,3,4,4,4,(4)]
P(1,1.8,3)
P(4,4,4)
P(1.8,3,4)P(3,4,4)
P(1,3,4)
→ [(0),0,0,0,1,1.8,3,4,4,4,(4)]
knk
k
k
kkkkk
uu
uu
iiik
−
−=
+−=
+−=
+
+
α
αα
1,,1
,)1(1
*PPP
?Csomóbeszúrás?
Ujjgyakorlat* - csomó beszúrás
Feladat:
P(0,0,1)P(0,1,4)
15B-spline algoritmusok
1. új csomó beszúrása u=3-nál 2. a kontroll poligon újraszerkesztése
P(0,0,0)
[(0),0,0,0,1,4,6,6,6,(6)]
P(1,4,6)
P(6,6,6)
P(4,6,6)
[(0),0,0,0,1,3,4,6,6,6,(6)]
Ismétlés - polár koordináták
P0 [0,6]
P1P2
P3P0
[0,6,9]
P1
P2
P3
P4
16Polár koordináták
P(0,0,0)
[0,0,0,6,9,9,9]
P(0,0,6)
P(0,6,9)
P(6,9,9)
P(9,9,9)
P(0,6,3)
(5,5)
(11,8)(7,6)
P(0,0,0)
[0,0,0,6,6,6]
P(0,0,6)P(0,6,6)
P(6,6,6)
P(0,2,6)
P(0,0,2)
Bézier B-spline
Ujjgyakorlat - csomó beszúrás
P(0,0,1)P(0,1,4) P(0,0,1)
P(0,1,3)
P(1,3,4)
17B-spline algoritmusok
P(0,0,0)
[(0),0,0,0,1,4,6,6,6,(6)]
P(1,4,6)
P(6,6,6)
P(4,6,6)
[(0),0,0,0,1,3,4,6,6,6,(6)]
P(0,0,0)
[(0),0,0,0,1,4,6,6,6,(6)]
P(3,4,6)
P(6,6,6)
P(4,6,6)
[(0),0,0,0,1,3,4,6,6,6,(6)]
B-spline − de Boor algoritmus
• n-szer ismételt csomó-beszúrás
B-spline - Algoritmusok2
P(0,0,0)
P(0,0,1)P(0,1,2)
P
P(0,1,3)
P(1,2,2)
P
18B-spline algoritmusok
• n-szer ismételt csomó-beszúrás
görbe kettévágása → de Boor
),...,,()( uuuu Pr =
P(0,0,0) P(1,2,3)
P(4,4,4)
P(2,3,4)P(3,4,4)
P(1,3,4)
[(0),0,0,0,1,2,2,2,3,4,4,4,(4)] →
P(2,2,2)
P(2,2,3)
r(2)=P(2,2,2)
?de Boor
kapcsolódó Bézier szegmensek
előállítása
• példa:
• cél:
B-spline - Algoritmusok3
]3,1[,)( ∈uuB
r
)3,3,(3)3,3,(1)3,1,(1)1,1,(1 ,,, PPPP
P(0,0,0)
P(0,0,1)P(0,1,1)
P(1,1,3)
P(0,1,3)
P(1,1,1)
19B-spline algoritmusok
• cél:
• lépések:
)3,3,(3)3,3,(1)3,1,(1)1,1,(1 ,,, PPPP
{ } { }{ } { }{ } { } K)1,1,(1)3,1,(1)1,1,(0
)1,1,(0)3,1,(0)1,0,(0
)3,3,(1)3,1,(1)4,3,(1)3,1,(0
,
,
,,
PPP
PPP
PPPP
⇒
⇒
⇒
[(0),0,0,0,1,3,4,4,4,(4)]
P(4,4,4)
P(3,3,4)P(3,4,4)P(1,3,4)
P(1,3,3)P(3,3,3)
Bézier − B-spline: összehasonlításBézier görbék
• egyszerű formula• belül C∞ folytonos• csak “kvázi” lokális• nagy n-re − belül gyengébb tervezési kontroll lehetőség, relatíve nagy konvex burok• szegmensek illesztése nehéz
B-spline görbék
• bonyolultabb• a csomókban Cn-1 folytonosság• szigorúan lokális• erős belső tervezési kontroll lehetőség, szűkebb konvex burok• szegmensek automatikusan illeszkednek• zárt görbék• tartalmazza a Bézier reprezentációt
20Összehasonlítás
B-spline felületektermészetes kétparaméteresfelületegyenlet (tensor product):
két határ-interpoláló csomóvektor:
)()(=),(1
0
1
0=
vNuNvum
j
n
iij
vL
j
uL
i
Ps ∑∑−
=
−
],,,[ 1110 −−− =====uKnuKjn uuuuuu KKKK
],,,[ ===== uuvvvv KKKK
c0
0P00
P10
PUV
P01
PU0
P0V
Q0
QV
21B-spline felületek
konstans paraméter vonal:
tulajdonságok:• affin invariancia• konvex burok • Cn-1 - Cm-1 folytonos a csomók mentén• szigorúan lokálisan módosítás
],,,[ 1110 −−− =====vKmvKjm uuvvvv KKKK
)()()()(=),( 0
1
0=
1
00
1
0=0 vNuuNvNvu
m
jj
vL
j
uL
i
n
iij
m
j
vL
j
QPs ∑∑∑−−
=
−
=
PU0
A következő előadás tartalma
� Coons felületek� lineáris� harmadfokú
� n-oldalú patch-ekn-oldalú poligonális domének
22Következő előadás
� n-oldalú poligonális domének� súlyfüggvények� oldal- és sarok-interpolánsok� leképzések
� Sketches - demó� Bézier háromszögek dióhéjban