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