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 diferencovatelnosti. 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ě:
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).
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.
Křivka pro ekvidistantní uzlový vektor (0, 1, 2, 3, 4, 5, 6, 7).
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.