NURBS křivka – applet

Neuniformní racionální B-spline křivky (zkráceně NURBS) jsou zobecněním tzv. B-spline křivek. Termín neuniformní znamená, že vzdálenosti uzlů ve smyslu parametru nemusí být u těchto křivek konstantní tak, jako například u Bézierových křivek.

Either scripts and active content are not permitted to run or Adobe Flash Player version 11.1.0 or greater is not installed.

Get Adobe Flash Player

Ovládání apletu

Applety pro vykreslení křivek mají dva módy editace bodů. První je mód vkládání bodů a jejich editace (tlačítko plus) a druhý mód odebírání bodů (tlačítko mínus). Obě tlačítka jsou přepínací, takže může být nastaven buď jeden nebo druhý mód. Při aktivním módu vkládání klikem do vykreslovací plochy vložíme bod. Rovněž můžeme kliknout na již vložené body a označit je tím k editaci např. vah. Pokud je zapnut mód odebírání bodů, klikem do vykreslovací plochy se nestane nic a klikem na bod se daný bod odstraní. Kliknutím a tažením bodu v prvním režimu vkládání můžeme bod přemístit, křivka se přitom vykresluje v reálném čase se změnou bodu. Vyčistit vykreslovací plochu můžeme pomocí tlačítka reset, kterým vrátíme vše do počátečního stavu. U appletů, u kterých je možné kreslit libovolné množství bodů, např. tento applet, se křivka vykreslí buď kliknutím na tlačítko vykreslit křivku nebo kliknutím na pravé tlačítko myši do vykreslovací plochy. Pravé tlačítko ovšem funguje jen u aplikací tedy nikoli na internetu v internetovém prohlížeči. Applet je udělaný tak, že se dá libovolně zvětšovat, takže při maximalizaci dosáhneme velké vykreslovací plochy. Checkbox zobrazit polygon zobrazí nebo skryje konvexní obálku křivky.

Teorie

NURBS křivka je určena n + 1 body Pi, kde i = 0, ... , n, řádem B-spline k a uzlovým vektorem U délky n + k + 1. Uzlový vektor je pak tvořen posloupností neklesajících reálných čísel. Hodnoty v uzlovém vektoru se mohou i opakovat. Pokud máme křivku s určitým stupněm a n kontrolním body, pak stejná křivka stejného stupně může být vyjádřena také za pomocí n+1 kontrolních bodů. Pokud chceme provést tuto operaci, změní však kontrolní body svoji pozici a je vložen uzel do uzlového vektoru. Křivka NURBS je určena vztahem

rovnice 1

kde wi je váha i-tého bodu řídícího polygonu a N{i,k} jsou normalizované B-spline bázové funkce definované obecně takto.

rovnice 2

pro ti &lq; t{i + 1 + k}, kde 0 ≤ i ≤ n. Pro první stupeň B-spline pak platí.

rovnice 3

Jiný zápis pro křivku využívá racionální B-spline báze.

rovnice 4

Nyní můžeme rovnici zapsat zjednodušeně.

rovnice 5

U Bézierových křivek jsme si definovali jejich explicitní vyjádření v podobě Bernsteinových polynomů, NURBS křivky mají následující vlastnosti:

rovnice 6

První vztah zaručuje nezápornost polynomů B-spline báze. První a druhý pak zaručují, že výsledná křivka bude ležet v konvexní obálce řídícího polygonu. Třetí vztah je rekurentní definicí bázového polynomu řádu k a zárověn je základem de Boorova algoritmu pro výpočet křivky NURBS.

Dále jsou křivky NURBS invariantní vůči transformacím a vůči rovnoběžnému a středovému promítání. Pomocí váhových koeficientů wi můžeme přesně vyjádřit kuželosečky jako podíl polynomů.


(c) 2012 Jakub Malina, Pavel Rajmic, Ústav telekomunikací, FEKT, VUT v Brně