Minulý díl jsme zakončili výpočtem souřadnic $x$ a $y$ ve tvaru
\begin{align*}
x(t)=a_{0,x}+a_{1,x}t+a_{2,x}t^2+a_{3,x}t^3 \\
y(t)=a_{0,y}+a_{1,y}t+a_{2,y}t^2+a_{3,y}t^3
\end{align*}
Rozebereme detailněji, co nám to přináší a propracujeme se až do srozumitelného zápisu. Po zbytek článku budeme používat křivky třetího stupně.
Parametrické zadání
Přepišme výrazy výše do maticového tvaru
\[
P(t)=TC=
\left[ \begin{array}{cccc}
1 & t & t^2 & t^3
\end{array} \right]
\left[ \begin{array}{cc}
a_{0,x} & a_{0,y} \\
a_{1,x} & a_{1,y} \\
a_{2,x} & a_{2,y} \\
a_{3,x} & a_{3,y}
\end{array} \right]
\]
kde $C$ určuje tvar a pozici křivky. Toto ovšem není ideální, protože nemůžeme jasně vidět, jaké vlastnosti bude mít, ani jakými body bude určena. Z uživatelského hlediska bude výhodné tyto charakteristiky oddělit.
Přepíšeme výpočet na
\[
P(t)=TMP=
\left[ \begin{array}{cccc}
1 & t & t^2 & t^3
\end{array} \right]
\left[ \begin{array}{cccc}
m_{0,0} & m_{0,1} & m_{0,2} & m_{0,3} \\
m_{1,0} & m_{1,1} & m_{1,2} & m_{1,3} \\
m_{2,0} & m_{2,1} & m_{2,2} & m_{2,3} \\
m_{3,0} & m_{3,1} & m_{3,2} & m_{3,3}
\end{array} \right]
\left[ \begin{array}{c}
P_0 \\
P_1 \\
P_2 \\
P_3
\end{array} \right]
\]
kde $M$ představuje druh křivky a $P$ vstupní body. Dostali jsme tedy rozklad $C=MP$ a zrušili nutnost definovat vlastnosti dohromady jednou maticí.
Po roznásobení uvidíme, že se nám původně nepřehledný tvar vyjasnil.
\[\begin{array}{ccc}
P(t)&=&(m_{0,0}+m_{1,0}t+m_{2,0}t^2+m_{3,0}t^3)P_0+ \\
&&(m_{0,1}+m_{1,1}t+m_{2,1}t^2+m_{3,1}t^3)P_1+ \\
&&(m_{0,2}+m_{1,2}t+m_{2,2}t^2+m_{3,2}t^3)P_2+ \\
&&(m_{0,3}+ m_{1,3}t+m_{2,3}t^2+m_{3,3}t^3)P_3
\end{array}\]
Každý bod má v konkrétním čase $t$ vliv na bod, který leží na křivce. Tento vliv je reprezentován polynomickou funkcí třetího stupně. Řekněme, že pro přehlednost nahradíme výpočet v závorce funkcí $w_i$ s parametrem $t$.
\[
P(t)=w_0(t)P_0+w_1(t)P_1+w_2(t)P_2+w_3(t)P_3
\]
Tento tvar už jasně a jednoduše popisuje křivku určenou body $P_i$ a váhovými funkcemi $w_i(t)$. Právě volba zmíněných funkcí, dokáže na těch samých bodech vykreslit různé druhy křivek jako třeba
Bézierovu, Fergusonovu (zde pozor, je třeba z bodů vyjádřit tečné vektory!), nebo Coonsovu.
Závěr
Ukázali jsme si, jak lze odvodit parametrické křivky i jejich výhody oproti explicitně zadaným funkcím. Uveďme jen pro úplnost výpočet souřadnic $x$ a $y$ ať ho můžeme porovnat s tvarem uvedeným na začátku.
\begin{align*}
P_x(t)=w_0(t)P_{0,x}+w_1(t)P_{1,x}+w_2(t)P_{2,x}+w_3(t)P_{3,x} \\
P_y(t)=w_0(t)P_{0,y}+w_1(t)P_{1,y}+w_2(t)P_{2,y}+w_3(t)P_{3,y}
\end{align*}
Literatura a odkazy
KOLCUN, A. Parametrické modelovanie kriviek a plôch. Učební texty, Ostrava 2008.
KOLCUN, A. Parametrick é vyjadrenie kriviek a plôch. Učební texty, Ostrava 2008.
ŽÁRA, J.; SOCHOR, J.; BENEŠ, B.; FELKEL, P. Moderní počítačová grafika. Computer press, Brno 2004.
http://herakles.zcu.cz/education/zpg/cviceni.php?no=11 - interaktivní zadávání křivek včetně teorie
Žádné komentáře:
Okomentovat