Hlavní navigace

Křivky NURBS (3)

Jana Procházková 23. 3. 2006

Jak Oslík ve Shrekovi hýbá oušky? Naučte se ovládat nurbsy, jako to dělají filmoví tvůrci. Dnes si povíme o ovládání nurbs křivek pomocí změn v uzlovém vektoru.

Většina softwarů se snaží být co nejvíce uživatelsky přívětivá. Většina uživatelů pracuje pouze pomocí posunu bodů či tečen křivky. Nurbsy poskytují velké pole působnosti. Většina uživatelů však neví, co si má například pod pojmem uzlový vektor představit. Takže, jak ovládat nurbsy?

Změna uzlového vektoru

Nejobtížnější na ovládání je změna uzlového vektoru. Obecně je to neklesající posloupnost reálných čísel většinou v intervalu <0,1>. První a poslední složka se může opakovat nejvýše n+1 krát, kde n je stupeň křivky. To způsobí, že křivka prochází prvním a posledním řídícím bodem. Vnitřní uzly se mohou opakovat nejvýše n-krát. Výsledkem je vznik hrotu v bodu odpovídajícímu tomuto uzlu, tedy ztráta diferencovatel­nosti. Další nutná podmínka je, že se délka uzlového vektoru musí rovnat součtu počtu bodů a řádu křivky (stupeň + 1).

Jak vlastně uzlový vektor funguje? Pro ekvidistantní uzlový vektor (rozdíl sousedních čísel je konstantní) se průběžně mění vliv jednotlivých bodů. Bázové polynomy pro ekvidistantní uzlový vektor (0, 1, 2, 3, 4, 5, 6, 7) a stupeň křivky 2 vypadají následovaně:

nurbs7

Vezmeme-li parametr t=4.1, dostáváme hodnoty:

N22 = 0.405

N32 = 0.59

N42 = 0.005

Znamená to, že v čase t=4.1 má bod P2 vliv 40,5 % na tvar křivky, bod P3 má vliv 59 % a bod P4 0,5 %.

C(4.1) = P2N22 + P3N32 + P4N42 = 0.405 P2 + 0.59 P3 +0.005 P4

Pozorný čtenář si jistě všiml, že součet všech procent dává 100. To je jedna z vlastností bázových polynomů, jejich součet je vždy jedna.

Na následujícím obrázku jsou bázové funkce pro křivku stupně n=2 a neekvidistantní uzlový vektor (0,1,2,3.8,4,4­.2,6,7).

nurbs8

Pro použitý vektor položíme spočteme hodnotu bázových funkcí opět pro t=4.1 a dostaneme:

N22 = 0.125

N32 = 0.85

N42 = 0.025

Znamená to, že v parametru t=4.1 má bod P2 vliv 12,5 % na tvar křivky, bod P3 má vliv 85 % a bod P4 2,5 %. Je zřejmé, že se výrazně zvýšil vliv bodu P3. Výsledné křivky pro oba uzlové vektory jsou vykresleny na dvou následujících obrázcích.

nurbs9

Křivka pro ekvidistantní uzlový vektor (0, 1, 2, 3, 4, 5, 6, 7).

nurbs10

Křivka pro neekvidistantní uzlový vektor (0,1,2,3.8,4,4­.2,6,7).

Zmenšení intervalu tedy způsobí větší vliv daného bodu, ale na menší části křivky. Křivka se k bodu P3 přiblíží, ale na okolní body bude mít tento bod už menší vliv. Je to patrné z obrázku bázových funkcí, kde má graf funkce strmý vzestup i sestup na intervalu <3.8, 4.2>.

Myslím, že je zajímavé vědět, co se za uzlovým vektorem skrývá. V programech se většinou běžný uživatel s takovými úpravami nesetká. Ale pokud si nurbsy sami naprogramujete, můžete si všechny tyto vlastnosti vyzkoušet.

Našli jste v článku chybu?

19. 6. 2013 1:07

jdsulin (neregistrovaný)

Je to prave diky vaham jednotlivych bodu. V homogennim prostoru je to vytazeny polynom, pri prevodu zpatky do euklidovskeho prostoru se polynom promitne jako kruhovy oblouk

13. 1. 2007 17:53

uživatel si přál zůstat v anonymitě
zdá se, že slečna vycházela z nějaké starší implementace NURBS algoritmu, protože dle dokumentace k 3D programu Rhinoceros platí, že délka uzlového vektoru je rovna stupni křivky a počtu kontrolních bodů - 1. První a poslední složka uzlového vektoru se může opakovat nanejvýš n-krát (n je stupeň křivky, stejně jako vnitřní uzly.
Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Lupa.cz: Na koho se v Křišťálové Lupě nedostalo?

Na koho se v Křišťálové Lupě nedostalo?

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Babiš: E-shopy z EET možná vyjmeme

Babiš: E-shopy z EET možná vyjmeme

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0