pondělí 11. listopadu 2013

Od explicitně zadaných křivek k parametrickým – 2. část

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