Hlavní navigace

Křivky NURBS (3)

23. 3. 2006
Doba čtení: 2 minuty

Sdílet

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).

root_podpora

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.

Byl pro vás článek přínosný?