KŘIVKY A PLOCHY
JANA ŠTANCLOVÁ
[email protected] Obrázky (popř. slajdy) převzaty od RNDr. Josef Pelikán, CSc., KSVI MFF UK
Obsah
– matematický popis křivek a ploch • křivky v rovině – implicitní tvar křivky, explicitní vyjádření, parametrický tvar, tečný vektor, tečna ke křivce
• křivky v prostoru • plochy
– modelování křivek a ploch • aproximace, interpolace • interpolační křivky a plochy – Fergusonovy kubiky
• aproximační křivky a plochy – Beziérovy křivky a plochy – Coonsovy (B-spline) křivky a plochy – β-spline křivky a plochy
2/67
Jana Štanclová,
[email protected]
Matematický popis křivek a ploch
MATEMATICKÝ POPIS KŘIVEK A PLOCH
3/67
Jana Štanclová,
[email protected]
Křivky v rovině
1.
implicitní tvar křivky –
rovnice F(x,y) = 0 •
–
př. • •
4/67
F spojitá funkce dvou proměnných přímka: ?? kru nice: ?? kružnice:
Jana Štanclová,
[email protected]
Křivky v rovině
1.
implicitní tvar křivky –
rovnice F(x,y) = 0 •
–
př. • •
5/67
F spojitá funkce dvou proměnných přímka: ax + by + c = 0 kru nice: x2 + y2 – r2 = 0 kružnice:
Jana Štanclová,
[email protected]
Křivky v rovině
1.
implicitní tvar křivky –
rovnice F(x,y) = 0 •
–
př. • •
2.
přímka: ax + by + c = 0 kru nice: x2 + y2 – r2 = 0 kružnice:
explicitní vyjádření křivky – –
jedna souřadnice funkcí druhé proměnné y = Y(x) dosazování přípustných hodnot za x → body na křivce [x,Y(x)] •
6/67
F spojitá funkce dvou proměnných
př. přímka: ??
Jana Štanclová,
[email protected]
Křivky v rovině
1.
implicitní tvar křivky –
rovnice F(x,y) = 0 •
–
př. • •
2.
přímka: ax + by + c = 0 kru nice: x2 + y2 – r2 = 0 kružnice:
explicitní vyjádření křivky – –
jedna souřadnice funkcí druhé proměnné y = Y(x) dosazování přípustných hodnot za x → body na křivce [x,Y(x)] •
–
7/67
F spojitá funkce dvou proměnných
př. přímka: y = kx + q
lze vyjádřit všechny křivky ??
Jana Štanclová,
[email protected]
Křivky v rovině
1.
implicitní tvar křivky –
rovnice F(x,y) = 0 •
–
př. • •
2.
přímka: ax + by + c = 0 kru nice: x2 + y2 – r2 = 0 kružnice:
explicitní vyjádření křivky – –
jedna souřadnice funkcí druhé proměnné y = Y(x) dosazování přípustných hodnot za x → body na křivce [x,Y(x)] •
–
př. přímka: y = kx + q
lze vyjádřit všechny křivky ?? •
8/67
F spojitá funkce dvou proměnných
nelze: uzavřené křivky
Jana Štanclová,
[email protected]
Křivky v rovině
3.
parametrický tvar křivky – –
výhodné pro počítačovou geometrii poloha bodu na křivce vyjádřena parametrem → souřadnice bodů závislé na parametru
–
křivka K •
– – –
9/67
K = { [x,y]; x = X(t), y = Y(t), t ∈ < tmin, tmax > }
X(t) a Y(t) funkce závislosti souřadnic x, y na parametru t
počáteční bod: [ X(tmin) , Y(tmin) ] koncový bod: [ X(tmax) , Y(tmax) ] bod křivky: K(t) = [ X(t) , Y(t) ]
Jana Štanclová,
[email protected]
Křivky v rovině
3.
parametrický tvar křivky –
přímka • •
–
kružnice • •
10/67
x = ?? y = ??
x = ?? y = ??
Jana Štanclová,
[email protected]
Křivky v rovině
3.
parametrický tvar křivky –
přímka • •
x=t y = kt + q → parametr t ∈ R
–
kružnice • •
x = x0 + r cos(α) y = y0 + r sin(α)
→ parametr α ∈ <0,2π>
11/67
Jana Štanclová,
[email protected]
Křivky v rovině
•
tečný vektor K’ = [ X’(t) , Y’(t) ] ... vektor parciálních derivací – předpoklady • X(t) a Y(t) spojité a mají derivace • alespoň jedna z derivací X’(t) a Y’(t) v bodě t nenulová
– spojitá změna vektoru K’ křivky → hladký půběh křivky • nejsou „ostré vrcholy“
•
tečna křivky v bodě K(t) – přímka: T(u) = K(t) + u K‘(t)
12/67
Jana Štanclová,
[email protected]
Křivky v rovině
•
tečný vektor K’ = [ X’(t) , Y’(t) ] ... vektor parciálních derivací – předpoklady • X(t) a Y(t) spojité a mají derivace • alespoň jedna z derivací X’(t) a Y’(t) v bodě t nenulová
– spojitá změna vektoru K’ křivky → hladký půběh křivky • nejsou „ostré vrcholy“
•
tečna křivky v bodě K(t) – přímka: T(u) = K(t) + u K‘(t) bod křivky K(t)
tečný vektor K’(t) parametr
13/67
Jana Štanclová,
[email protected]
Křivky v rovině - příklad
•
příklad – spočítat tečnu v bodě [0,2] ke kružnici se středem v počátku a poloměrem 2
14/67
Jana Štanclová,
[email protected]
Křivky v rovině - příklad
•
příklad – spočítat tečnu v bodě [0,2] ke kružnici se středem v počátku a poloměrem 2
•
řešení – rovnice kružnice ??
15/67
Jana Štanclová,
[email protected]
Křivky v rovině - příklad
•
příklad – spočítat tečnu v bodě [0,2] ke kružnici se středem v počátku a poloměrem 2
•
řešení – rovnice kružnice x = 2 cos(α) y = 2 sin(α)
– tečný vektor kružnice ??
16/67
Jana Štanclová,
[email protected]
Křivky v rovině - příklad
•
příklad – spočítat tečnu v bodě [0,2] ke kružnici se středem v počátku a poloměrem 2
•
řešení – rovnice kružnice x = 2 cos(α) y = 2 sin(α)
– tečný vektor kružnice x = - 2 sin(α) y = 2 cos(α)
– tečna ke kružnici v bodě [0,2] ... tečna ke kružnici v bodě ??
17/67
Jana Štanclová,
[email protected]
Křivky v rovině - příklad
•
příklad – spočítat tečnu v bodě [0,2] ke kružnici se středem v počátku a poloměrem 2
•
řešení – rovnice kružnice x = 2 cos(α) y = 2 sin(α)
– tečný vektor kružnice x = - 2 sin(α) y = 2 cos(α)
– tečna ke kružnici v bodě [0,2] ... tečna ke kružnici v bodě α=π/2
18/67
Jana Štanclová,
[email protected]
Křivky v rovině - příklad
•
pokračování řešení: – rovnice tečny v bodě α = π/2 x = ?? y = ??
19/67
Jana Štanclová,
[email protected]
Křivky v rovině - příklad
•
pokračování řešení: – rovnice tečny v bodě α = π/2 x = 2 cos(π/2) – 2u sin(π/2) y = 2 sin(π/2) + 2u cos(π/2)
– po úpravách x = ?? y = ??
20/67
Jana Štanclová,
[email protected]
Křivky v rovině - příklad
•
pokračování řešení: – rovnice tečny v bodě α = π/2 x = 2 cos(π/2) – 2u sin(π/2) y = 2 sin(π/2) + 2u cos(π/2)
– po úpravách x = 0 – 2u = – 2u y = 2 + 0u = 2
[0,2]
→ přímka y = 2 (x libovolné)
21/67
Jana Štanclová,
[email protected]
Křivky v prostoru 1.
explicitní tvar křivky –
vyjádření souřadnic y a z v závislosti na souřadnici x y = Y(x), z = Z(x) → tento tvar nemusí vždy existovat
2.
parametrický tvar křivky – –
•
tečný vektor v bodě K(t) –
22/67
nejobvyklejší křivka: K = { [x,y,z] ; x=X(t), y=Y(t), z=Z(t), t ∈
}
vektor parciálních derivací K‘(t) = [X’(t),Y’(t), Z’(t)]
Jana Štanclová, [email protected]
Plochy (v prostoru) 1.
implicitní tvar plochy –
2.
explicitní tvar plochy – –
3.
23/67
rovnice F(x,y,z) = 0
jen pro některé plochy jedna souřadnice vyjádřena v závislosti na zbylých dvou proměnných z = Z(x,y)
parametrický tvar plochy – –
nejobvyklejší souřadnice závislé na hodnotách dvou parametrů u a v
– –
P = {[x,y,z]; x=X(u,v), y=Y(u,v), z=Z(u,v), u ∈ , v ∈ } X(u,v), Y(u,v), Z(u,v) ... parametrické funkce plochy P jeden z parametrů plochy fixován → ??
Jana Štanclová, [email protected]
Plochy (v prostoru) 1.
implicitní tvar plochy –
2.
explicitní tvar plochy – –
3.
24/67
rovnice F(x,y,z) = 0
jen pro některé plochy jedna souřadnice vyjádřena v závislosti na zbylých dvou proměnných z = Z(x,y)
parametrický tvar plochy – –
nejobvyklejší souřadnice závislé na hodnotách dvou parametrů u a v
– –
P = {[x,y,z]; x=X(u,v), y=Y(u,v), z=Z(u,v), u ∈ , v ∈ } X(u,v), Y(u,v), Z(u,v) ... parametrické funkce plochy P jeden z parametrů plochy fixován → parametrická rovnice křivky na ploše
Jana Štanclová, [email protected]
Modelování křivek a ploch
MODELOVÁNÍ KŘIVEK A PLOCH
25/67
Jana Štanclová, [email protected]
Modelování křivek a ploch •
idea – nelze zadat všechny body křivky/plochy → je jich nekonečně
– zadají se nejdůležitější nejd le it jší uzlové body • např. body, kde křivka/plocha mění směr, obrací se, ...
– typicky požadavek na hladkost křivky/plochy • bez ostrých vrcholů
•
základní metody – interpolace • křivka/plocha prochází uzlovými body
– aproximace • křivka/plocha nemusí procházet uzlovými body • křivka „probíhá“ okolo uzlových bodů a „kopíruje“ je
26/67
Jana Štanclová, [email protected]
Modelování křivek a ploch
Aproximace
27/67
Interpolace
Jana Štanclová, [email protected]
Fergusonovy kubiky
FERGUSONOVY KUBIKY
28/67
Jana Štanclová, [email protected]
Fergusonovy kubiky •
interpolační křivka – J. C. Ferguson, 1964
•
Fergusonova kubika – dva řídící body P0 a P1
• krajní body křivky → křivka jimi prochází • určují polohu křivky
– dva tečné vektory P‘0 a P’1 v řídících bodech P0 a P1
• směr a velikost tečných vektorů → míra vyklenutí křivky • větší velikost vektorů → křivka se více přimyká k vektoru
– rovnice křivky P(t) = P0F1(t) + P1F2(t) + P’0F3(t) + P’1F4(t) • kde F1,..., F4 jsou kubické Hermitovské polynomy F1(t) = 2t3 – 3t2 + 1 F3(t) = t3 – 2t2 + t F2(t) = -2t3 + 3t2 F4(t) = t3 – t2
29/67
Jana Štanclová, [email protected]
Fergusonovy kubiky vektor P‘0 konstantní ... vektor P’1 se mění
30/67
Jana Štanclová, [email protected]
Fergusonovy kubiky
applet:
31/67
http://www2.mat.dtu.dk/info/mathematics/VIDIGEO/applets/book5.html
Jana Štanclová, [email protected]
Fergusonovy kubiky
•
výhody – snadné navazování Fergusonových kubik ??
32/67
Jana Štanclová, [email protected]
Fergusonovy kubiky
•
výhody – snadné navazování Fergusonových kubik • poslední bod předchozího segmentu = první bod následujícího segmentu
– hladkost spojených dvou kubik ??
33/67
Jana Štanclová, [email protected]
Fergusonovy kubiky
•
výhody – snadné navazování Fergusonových kubik • poslední bod předchozího segmentu = první bod následujícího segmentu
– hladkost spojených dvou kubik • ztotožnění tečných vektorů ztotožněných bodů
•
nevýhody – poměrně nesnadná editace tečného vektoru ve 3D
34/67
Jana Štanclová, [email protected]
Beziérovy křivky
BEZIÉROVY KŘIVKY
35/67
Jana Štanclová, [email protected]
Beziérovy křivky
•
aproximační křivka
•
vlastnosti – křivka prochází prvním a posledním uzlem • k ostatním bod bodům m se k křivka ivka pouze p přibližuje ibli uje
– úsečky spojující dva krajní uzly se dotýkají křivky v koncových bodech • spojnice prvního a druhého bodu, posledního a předposledního bodu • jinak průběh křivky zcela hladký n
– rovnice P(t ) = ∑ Pi Bin (t ) i =0
• kde Bin jsou Bernsteinovy polynomy
n n −i Bin (t ) = t i (1 − t ) i
36/67
Jana Štanclová, [email protected]
Beziérovy křivky
applet:
http://www.math.ubc.ca/~cass/gfx/bezier.html
win → program Paint: • kliknout a táhnout → počáteční a koncový bod • kliknout a táhnout → vytváří se oblouk (a ještě jednou zopakovat)
37/67
Jana Štanclová, [email protected]
Beziérovy křivky
•
nevýhody – křivka určena velkým počtem bodů → složitý výpočet bodu na křivce • vnitřní bod křivky závisí na všech uzlech • posun jednoho uzlu → změna tvaru celé křivky
→ řešení: ??
38/67
Jana Štanclová, [email protected]
Beziérovy křivky
•
nevýhody – křivka určena velkým počtem bodů → složitý výpočet bodu na křivce • vnitřní bod křivky závisí na všech uzlech • posun jednoho uzlu → změna tvaru celé křivky
→ řešení: složitější křivky spojení několika kratších křivek – lepší výpočet kratších křivek – lokální oprava tvaru křivky – změna polohy jednoho uzlu → změna jednoho úseku křivky •
39/67
ostatní úseky nezměněny
Jana Štanclová, [email protected]
Beziérovy křivky
•
40/67
spojování dvou Beziérových křivek ??
Jana Štanclová, [email protected]
Beziérovy křivky
•
spojování dvou Beziérových křivek – ztotožnění krajních vrcholů → spojení křivek nemusí být hladké
•
41/67
hladké spojení ??
Jana Štanclová, [email protected]
Beziérovy křivky
•
spojování dvou Beziérových křivek – ztotožnění krajních vrcholů → spojení křivek nemusí být hladké
•
hladké spojení – 3 krajní body na jedné přímce • předposlední uzel křivky Q1 • poslední uzel křivky Q1 = první uzel křivky Q2 • druhý uzel křivky Q2
42/67
Jana Štanclová, [email protected]
Beziérovy křivky
•
v praxi – Beziérovy křivky druhého stupně • kvadratické křivky • definované 3 uzly
– Beziérovy křivky třetího stupně • kubické křivky • definované 4 uzly
•
použití – definice znakových fontů • hladký průběh obrysů písmen • jednoduché zadávání → možnost libovolně font zvětšovat bez znehodnocení
43/67
Jana Štanclová, [email protected]
Beziérovy plochy
BEZIÉROVY PLOCHY
44/67
Jana Štanclová, [email protected]
Beziérovy plochy
•
aproximační plochy – stejné principy jako Beziérovy křivky
•
zadány sítí bodů v prostoru – obdélníková tabulka bodů/uzlů libovolné velikosti – rohové uzly • poloha rohů plochy
– okrajové řady/sloupce uzlů • okrajové Beziérovy křivky
– vnitřní uzly • tvar uvnitř plochy
45/67
Jana Štanclová, [email protected]
Beziérovy plochy – editace uzlů
46/67
Jana Štanclová, [email protected]
Beziérovy plochy
•
nevýhody – vnitřní bod plochy závisí na všech ostatních uzlech definiční sítě → řešení: jako u Beziérových křivek
•
složitější plochy: spojování více plátů dohromady – plát = jedna Beziérova plocha – typicky • bikvadratický Beziérový plát – plocha zadaná 3× ×3 uzly
• bikubický Beziérový plát – plocha zadaná 4× ×4 uzly
– výhody • lokální oprava komplikované plochy • rychlejší výpočet i zobrazení
47/67
Jana Štanclová, [email protected]
Beziérových plochy – napojení plátů
•
48/67
napojení Beziérových plátů ??
Jana Štanclová, [email protected]
Beziérových plochy – napojení plátů
•
napojení Beziérových plátů – ztotožnění krajních řad/sloupců → napojení nemusí být hladké
•
49/67
hladké napojení ??
Jana Štanclová, [email protected]
Beziérových plochy – napojení plátů
•
napojení Beziérových plátů – ztotožnění krajních řad/sloupců → napojení nemusí být hladké
•
hladké napojení – vliv dalších řad uzlů sousedících se společným okrajem plátů • trojice uzlů na úsečkách • úsečky rozděleny prostředními uzly ve stejném poměru
50/67
Jana Štanclová, [email protected]
Speciální Beziérovy pláty
•
speciální plát ... „záplata“ – degenerace jedné/dvou okrajových křivek • okrajová křivka plátu = Beziérova křivka zadaná krajní řadou/sloupcem uzlů
– spojení těchto uzlů do jediného → degenerace křivky do jediného bodu → výsledná plocha má méně rohů a okrajových křivek
•
p íklad: trojúhelníkový plát příklad: – jeden dvojitý roh
51/67
Jana Štanclová, [email protected]
B-spline křivky
COONSOVY (B(B-SPLINE) KŘIVKY
52/67
Jana Štanclová, [email protected]
B-spline křivky •
aproximační křivky – princip zadání: podobný Beziérovým křivkám – bez omezující podmínky pro hladké napojení dvou křivek
•
zadány posloupností bodů – začátek za átek křivky k ivky → antitěžiště antit išt trojúhelníka ABC – směr křivky → v krajním bodě rovnoběžný se stranou trojúhelníka AC
53/67
Jana Štanclová, [email protected]
B-spline křivky •
aproximační křivky – princip zadání: podobný Beziérovým křivkám – bez omezující podmínky pro hladké napojení dvou křivek
•
zadány posloupností bodů – začátek za átek křivky k ivky → antitěžiště antit išt trojúhelníka ABC – směr křivky → v krajním bodě rovnoběžný se stranou trojúhelníka AC
54/67
Jana Štanclová, [email protected]
Prodlužování B-spline křivek
• • • •
55/67
první úsek ... P0P1P2P3 druhý úsek ... P1P2P3P4 společný bod ... antitěžistě trojúhelníka P1P2P3 směr ve společném bodě ... rovnoběžný s úsečkou P1P3 společný pro obě křivky → hladké spojení
Jana Štanclová, [email protected]
Prodlužování B-spline křivek
•
snadné napojování/prodlužování napojování/prodlu ování křivek k ivek – dvě spojené křivky → společné 3 definiční uzly
•
prodloužení křivky o jeden úsek – přidání jednoho nového uzlu
•
napojování B-spline křivek – zopakovány poslední tři uzly – na kraj přidán jeden nový uzel
56/67
Jana Štanclová, [email protected]
B-spline křivky
•
vliv definičního defini ního uzlu – na maximálně ?? úseky křivek
57/67
Jana Štanclová, [email protected]
B-spline křivky
•
vliv definičního defini ního uzlu – na maximálně 4 úseky křivek
•
oprava křivky → posun jednotlivých uzlů – posun jednoho uzlu → lokální oprava křivky • změna max. 4 sousedních částí křivek • zbytek křivky k nezměněn
58/67
Jana Štanclová, [email protected]
B-spline plochy
COONSOVY (B(B-SPLINE) PLOCHY
59/67
Jana Štanclová, [email protected]
B-spline plochy
•
aproximační plochy – zadány sítí bodů v prostoru • obdélníková tabulka bodů/uzlů libovolné velikosti
– B-spline plocha prochází volně zadanou soustavou uzlů
•
variabilita B-spline plochy – konstrukce složitějších tvarů → plochy složené z hodně plátů – dva sousední pláty → společné spole né 3 řady uzlů uzl • sestavená plocha vždy hladká • lokální opravy plochy → posuny definičních uzlů
– změna jednoho uzlu → změna ?? sousedních plátů
60/67
Jana Štanclová, [email protected]
B-spline plochy
•
aproximační plochy – zadány sítí bodů v prostoru • obdélníková tabulka bodů/uzlů libovolné velikosti
– B-spline plocha prochází volně zadanou soustavou uzlů
•
variabilita B-spline plochy – konstrukce složitějších tvarů → plochy složené z hodně plátů – dva sousední pláty → společné spole né 3 řady uzlů uzl • sestavená plocha vždy hladká • lokální opravy plochy → posuny definičních uzlů
– změna jednoho uzlu → změna 4 - 16 sousedních plátů – speciální pláty • pomocí vícenásobných uzlů
61/67
Jana Štanclová, [email protected]
B-spline plochy •
změna tvaru plochy – každý obrázek vznikl změnou polohy jediného uzlu
62/67
Jana Štanclová, [email protected]
β-spline křivky
β-SPLINE KŘIVKY
63/67
Jana Štanclová, [email protected]
β-spline křivky
•
aproximační křivky – zobecnění kubických B-spline křivek → variabilnější
•
úsek křivky – 4 řídící uzly • dva sousední úseky → společné 3 uzly
– sklon β1 • • • •
posunutí křivky vzhledem k řídícím uzlům standardně β1 = 1 β1 < 1 ... posun k prvnímu uzlu β1 > 1 ... posun k poslednímu uzlu
– napětí β2
• stupeň přesnosti aproximace → jak moc křivka přitahována/odpuzována od uzlů • β2 = 0 → klasická B-spline křivka
64/67
Jana Štanclová, [email protected]
β-spline křivky
•
65/67
změna tvaru křivky při posunutí jednoho řídícího uzlu
Jana Štanclová, [email protected]
β-spline plochy
β-SPLINE PLOCHY
66/67
Jana Štanclová, [email protected]
β-spline plochy
•
aproximační plochy – zobecnění bikubických B-spline ploch
•
β-spline plát zadán – 16 řídících uzlů – sklony β1u a β1v
• sklon plochy v obou směrech
– napětí plochy β2
• stupeň přesnosti aproximace → jak moc plocha přitahována/odpuzována od uzlů
67/67
Jana Štanclová, [email protected]