pondělí 11. listopadu 2013

Bézierova a Fergusonova kubika

Od pohledu tatáž křivka, může být určena více způsoby. Ukážeme si vztah mezi dvěma z nich a vzájemný převod z jedné do druhé.

Úvod

Mějme křivku


kterou potřebujeme nějak definovat. Můžeme určit, že první a poslední body budou místa, kde začíná a končí. Nazvěme je $P_0$ a $P_3$. Dle vzhledu můžeme soudit, že půjde vyjádřit váhovými funkcemi třetího stupně. Potřebujeme tedy ještě další dva body, které nám jednoznačně definují tvar.

Fergusonova kubika

V jednom ze způsobů, můžeme určit směrové vektory v počátečním a koncovém bodě. Ty nám určí míru zvlnění křivky, takže jejich vhodnou volbou docílíme požadovaného tvaru.


Křivku nám vygenerují následující váhové funkce označené pro přehlednost indexem $f$: \begin{align*} w_{0,f}(t)&=2t^3-3t^2+1 \\ w_{1,f}(t)&=-2t^3+3t^2 \\ w_{2,f}(t)&=t^3-2t^2+t \\ w_{3,f}(t)&=t^3-t^2 \end{align*} Pro dosazení do vzorce ovšem nemůže použít přímo body $P_1$ a $P_2$, ale z nich vyjádřené směrové vektory. Tedy pokud nemáme místo bodů zadány vektory přímo. Dostaneme \begin{align*} \overrightarrow{u} = (P_1-P_0) \\ \overrightarrow{v} = (P_3-P_2) \end{align*}

Bézierova kubika

Jako druhou možnost uvažujme použití řídícího polygonu. Nebudeme přímo určovat tečný vektor, ale vyhrazovat oblast, ve které se křivka nachází.


Váhové funkce označíme indexem $b$: \begin{align*} w_{0,b}(t)&=(1-t)^3 \\ w_{1,b}(t)&=3t(1-t)^2 \\ w_{2,b}(t)&=3t^2(1-t) \\ w_{3,b}(t)&=t^3 \end{align*} Chceme ukázat, že jde tatáž křivka zadat jako Bézierova, nebo i Fergusonova. Ferguson pracuje se směrovými vektory, které souvisejí s derivací (derivace je směrnice tečny), takže zderivujme Bézierovy váhové funkce. \begin{align*} w_{0,b}(t)'&=(-t^3+3t^2-3t+1)'=-3t^2+6t-3 \\ w_{1,b}(t)'&=(3t^3-6t^2+3t)'=9t^2-12t+3 \\ w_{2,b}(t)'&=(-3t^3+3t^2)'=-9t^2+6t \\ w_{3,b}(t)'&=3t^2 \end{align*} Zajímají nás směrové vektory v prvním a posledním bodě. To znamená v bodech s hodnotou $t=0$ a $t=1$. Pro $t=0$: \begin{align*} w_{0,b}(0)'&=-3\cdot0^2+6\cdot0-3=-3 \\ w_{1,b}(0)'&=9\cdot0^2-12\cdot0+3=3 \\ w_{2,b}(0)'&=-9\cdot0^2+6\cdot0=0 \\ w_{3,b}(0)'&=3\cdot0^2=0 \end{align*} \[ \overrightarrow{v_1} = -3P_0+3P_1=3(P_1-P_0) \] Pro $t=1$: \begin{align*} w_{0,b}(1)'&=-3\cdot1^2+6\cdot1-3=0 \\ w_{1,b}(1)'&=-9\cdot1^2+12\cdot1-3=0 \\ w_{2,b}(1)'&=-9\cdot1^2+6\cdot1=-3 \\ w_{3,b}(1)'&=3\cdot1^2=3 \end{align*} \[ \overrightarrow{v_2} = -3P_2+3P_3=3(P_3-P_2) \]

Srovnání obou přístupů

Zkusme teď dosadit body definující Bézierovu křivku do vzorce pro výpočet Fergusonovy. První a poslední budou shodné, lišit se u obou budou body definující směr. Bézierova kubika vypadá následovně: \[ P_b(t)=w_{0,b}(t)P_0+w_{1,b}(t)P_1+w_{2,b}(t)P_2+w_{3,b}(t)P_3 \] a Fergusonova takto: \[ P_f(t)=w_{0,f}(t)P_0+w_{1,f}(t)P_3+w_{2,f}(t)3(P_1-P_0)+w_{3,f}(t)3(P_3-P_2) \] Roznásobme, ať můžeme dát dohromady všechny koeficienty. \begin{align*} P_f(t)&=w_{0,f}(t)P_0+w_{1,f}(t)P_3+w_{2,f}(t)3P_1-w_{2,f}(t)3P_0+w_{3,f}(t)3P_3-w_{3,f}(t)3P_2= \\ &=w_{0,f}(t)P_0-w_{2,f}(t)3P_0+w_{2,f}(t)3P_1-w_{3,f}(t)3P_2+w_{1,f}(t)P_3+w_{3,f}(t)3P_3= \\ &=(w_{0,f}(t)-3w_{2,f}(t))P_0+(3w_{2,f}(t))P_1+(-3w_{3,f}(t))P_2+(w_{1,f}(t)+3w_{3,f}(t))P_3 \end{align*} Po vytknutí a seřazení členů dostáváme čtyři body a v závorkách pak váhové funkce. Ukážeme si, že se každá z nich rovná odpovídající funkci definujíci Bézierovu křivku. Dosadíme v první závorce: \begin{align*} w_{0,f}(t)-3w_{2,f}(t)&=2t^3-3t^2+1-3(t^3-2t^2+t)=\\ &=2t^3-3t^2+1-3t^3+6t^2-3t=\\ &=1+3t^2-3t-t^3=\\ &=(1-t)^3 \end{align*} Jak vidíme, vyšla nám pro bod $P_0$ stejná funkce jako je $w_{0,b}(t)$. Pokračujme s dalšími: \begin{align*} 3w_{2,f}(t)&=3(t^3-2t^2+t)=\\ &=3t^3-6t^2+3t=\\ &=3t(t^2-2t+1)=\\ &=3t(1-t)^2 \\ -3w_{3,f}(t)&=-3(t^3-t^2)=\\ &=-3t^3+3t^2=\\ &=3t^2(-t+1)=\\ &=3t^2(1-t) \\ w_{1,f}(t)+3w_{3,f}(t)&=-2t^3+3t^2+3(t^3-t^2)=\\ &=-2t^3+3t^2+3t^3-3t^2=\\ &=t^3 \end{align*} Pro závorku u každého bodu nám vyšla odpovídající váhová funkce $w_{i,b}$ po dosazení vah $w_{i,f}$. Můžeme tedy říct, že křivku zadanou jedním způsobem jsme schopni zadat i způsobem druhým. Na obrázku je pak vztah mezi řídícími body Fergusonovy a Bézierovy kubiky ukázán názorně.


Literatura a odkazy

KOLCUN, A. Parametrické vyjadrenie kriviek a plôch. Učební texty, Ostrava 2008.

http://herakles.zcu.cz/education/zpg/cviceni.php?no=11

Žádné komentáře:

Okomentovat