5. PLOCHY V POČÍAČOVÉ GRAFICE Cíl Po prostudování této kapitoly budete umět popsat plochy používané v počítačové grafice řešit příklady z praxe, kdy jsou použity plochy Výklad Interpolační plochy - plochy, které procházejí křivkami resp. body, které plochu určují. V technické praxi se používají převážně plochy přímkové, kdy jednotlivé body tvořících křivek jsou spojeny úsečkami. Plochy, které neprocházejí všemi zadanými body se nazývají aproximační. 5.. Bilineární plochy- plochy určené dvěma okrajovými křivkami. Jsou dány dvě okrajové křivky a, a určené vektorovými funkcemi a (w), a (w) parametru w z intervalu w <, >. Rovnice R(u,w)=( u). a (w) + u. a (w), u,w <, >. (5.) obsahuje křivky a a a jako své okrajové parametrické w u - křivky, R R, w aw aw aw, w a w Rovnice (5.) je tedy interpolační plochou procházející křivkami a, a. Parametrické u-křivky plochy (5.) jsou pro každé W I úsečky, R uw u a W a W, spojující body A a A určené vektory a (W) a a (W). Spojnice krajních bodů křivek tvoří okrajové křivky plochy. První krajnice je určená vektory a () a a (), druhá a () a a (). Obr. 5.. Obr.5.2 76
Příklad. Pro x = u y = w x, y <, > z = (-z). a (Y) + x. a (Y). Jde o přímkovou plochu určenou hraničními křivkami a a a, které leží v rovině x = a x =. Plocha je dále určena rovnicemi z = a (y) a z = a (y) v rovinách y = Y. Rovnice z x a Y x a Y určuje úsečky plochy, které spojují body A a A v nichž rovina y = Y protíná křivky a a a. 5.2. Bikubická plocha. Jestliže místo lineární funkce (přímky) ( - u) a u je použita kubická funkce F (u) a F (u), dostaneme kubickou plochu, která je křivkami F (u) a F (u),. R(t) = F (t).g + F (t).h + F 2 (t). g + F 3 (t). h... po úpravách 3 2 2 2 3 3 2 3 2 3 2 3 2 3 2 2 3 2 3 2 R t G H g h t G H g h t g t G t t G t t H t t t g t t h F F F 2 F 3 Rovnice (5.) bude:, R u w F u a w F u a w. (5.2) Protože F F a F F určeny rovnicí, jsou okrajové křivky pro u = resp. u =, resp. R u a w R w a w takže plocha (5.2 ) má dané křivky za své okrajové. Parametrická u - křivka je určena rovnicí,,, R u W F u a W F u a W. F (u) a F (u) jsou kubické funkce je R (u,w) kubická vektorová funkce a parametrická u -křivka plochy (5.2 ) je kubika. Obdobně pro x = u, y = w, z F x a y F x a y (5.3) je interpolační plocha spojující křivku z = a (y) v rovině x = s křivkou z = a (y) v rovině x =. 77
Hlavní křivkou ploch (5.3) v rovině y = Y je kubika Vektorová rovnice a explicitně z F x a Y F x a Y, R u w a u F w a u F w (5.4) z a x F y a x F y (5.5) jsou interpolační plochy obsahující křivky a a a. Příklad 2. Proložte bilineární a bikubickou plochu nad jednotkovým čtvercem, kde v rovině (y, z) je křivkou a - parabola a : z 4 y y a křivkou a je sinusoida a : z y sin 2 v rovině x =. Obr. 5.3 Obr.5.4 Explicitní rovnice dle (5.5) jsou: xa Y xa Y z z x 4y y x sin2 y Kubika: Ze(5.4) z F x a Y F x a Y 4 2 z F x y y F x sin y pro x, y <, > 2 3 3 2 4 2 3 3 2 sin 2 z x x y y x x y pro x,y <, > {krok =.} pro x, y <, > { krok =. } 78
5.3. Coonsova bilineární plocha je plocha určená (omezená) čtyřmi křivkami (křivočarý čtyřúhelník), které se musí v koncových bodech protínat. Křivky a, a, b a b jsou vektorové funkce a (w), a (w), b (u) a b (u), aby platilo: a b a b a b a b tj. křivky v bodech,, a se protínají - navazují na sebe. Rovnice u u a w w b u R u, w b u (5.6) a w w určuje tzv. Coonsovu bilineární plochu. Jde o interpolační plochu určenou křivkami a, a, b, a b. Zvolíme např. u = a dosadíme do (5.6), získáme vektorovou rovnici Obr.5.6 a w w b R, w b a w w a po vynásobení matic obdržíme R (,w) = a (w). Proto plocha (5.6) obsahuje křivku a, která je její okrajovou křivkou. Obdobně lze ukázat, že křivky a, b a b jsou okrajové křivky plochy. Jestliže položíme x = u, y = w jsou okrajové křivky a, a, b a b x =, x =, y = a y = určené explicitními rovnicemi které splňují podmínky z a y, z a y, z b x, z b x v rovinách (5.7) a () = b () =, a () = b () =, (5.8) a () = b () =, a () = b () =, kde body,, a jsou z-tové souřadnice 'těchto' bodů. 79
Rovnicí x x y a y b x z b x a y je určena interpolační plocha, obsahující křivky a, a, b a b. (5.9) Úlohy k řešení 5.. Dle (5.9) určete rovnici interpolační plochy, která obsahuje - parabolu z = 4y( -y) v rovině x = ; - sinusoidu z = 2y v rovině x = ; - přímku z = v rovině y = ; - půlkružnici z x x (Proveďte v kosoúhlém promítání.) Klíč. (Řešení.) Z (5.9) plyne x x Po vynásobení dostaneme: 5.4. Coonsova bikubická plocha v rovině y =. 4 sin2 z x y y y x x y Stejně jako v předešlém zvolíme křivky a, a, b a b, které budou tvořit křivočarý čtyřúhelník. Plocha, která je určena vektorovou rovnicí F u F u M F w F w (5.) v níž jsou funkce F (t) a F (t) určeny rovnicemi (5.9) a matice M je stejná jako v rovnici (5.6) je Coonsova bikubická plocha. Zvolíme u = a dosadíme do (5.). Jelikož F () =, F = dostaneme rovnici 4y y z x x sin2 y y y R (,w) = a (w). 8
Po vynásobení matic vzhledem k (5.4) dostaneme b edy křivka a je okrajovou křivkou plochy pro u =. Obdobně toto platí i pro ostatní okrajové křivky plochy. Zvolíme-li místo funkcí F (t) a F (t) lineární funkce -t a t, změní se rovnice (5.) na (5.6). Coonsova bikubická plocha je tedy zobecněním bilineární plochy. Jestliže x = u, y = w, jsou křivky a, a, b a b v rovinách x=, x=, y= a y= určeny explicitními rovnicemi (5.7) a splňují vztahy (5.8). Obr. 5.7 Obr. 5.8 F x F x M F y F y (5.) Rovnicí a w R, w b aw w F F w je určena interpolační plocha obsahující čtyřúhelník a, a, b a b. Zvolíme y = a dosadíme do (5.). Protože F () =, F ()= dostaneme: F (x) a () -. b (x) z b (x). - = F (x) a (), kde křivky a, a, b a b tvoří okraj plochy. Úlohy k řešení 5.2. Předcházející příklad na bilineární plochu proveďte jako plochu bikubickou 8
5.5. Bézierovy plochy Výklad Bézierova plocha je dána sítí m * n bodů. Hranice plochy tvoří Bézierovy křivky, které jsou určeny okrajovými lomenými čarami sítě. Obecně je tedy zadána plocha: ) Rohovými body sítě U m, U n, U m, U m n. 2) ečné roviny plochy v rohových bodech sítě jsou určeny rohovými stranami sítě, tj. jsou to roviny U U U, U n- U n U n, U m- U m U m a U m n- U m n U m- n. Pro síť 4 4 je plocha určena šestnácti uzlovými body U i j, pro i,j =,, 2, 3. Síť se skládá z devíti čtyřúhelníků akovéto síti je přiřazena plocha rovnicí R u, v B u B u B u B u M B w B w B w B w 2 3 2 3 (5.) V rovnici je M maticí polohových vektorů U i j, určených uzlovými body U i j j, pro i,j =,, 2, 3. : U U U U U U U U M U U U U U U U U 2 3 2 3 2 2 22 23 3 3 32 33 a funkce B (t), B (t), B 2 (t) a B 3 (t) jsou kubické polynomy B 3 (t), B 3 (t), B 23 (t) a B 33 (t), kde B (t) = ( - t) 3 Příklad 3. B (t) = 3t ( - t) 2 B 2 (t) = 3t 2 ( - t) B 3 (t) = t 3 U U Na obrázku 6.. a 6.. jsou dány uzlové body U i j, pro i, j =,, 2, 3 pro m = 3. U U m- U m Um U m- n- Obr. 5.9 U n- U n U n U m- n U m n (5.2) (5.3) 82
j. 6 bodů nad jednotkovým čtvercem. Matici M polohových vektorů rozepíšeme do matic M x, M y a M z, jejíž prvky jsou souřadnice těchto vektorů. Dostaneme: z x y x y Obr. 5. Obr. 5. 2 3 3 M x 3 3 3 3 2 M 2 2 2 2 y 3 3 3 3 3 3 2 3 3 2 3 3 Po dosazení do (5.) získáme nejprve parametrické rovnice 2 3 3 2 2 3 x B u 2 3 3 B u B u B w B w B w u u M Z y B u B u B u B w 2 3 3 B w B w w w 2 4 2 3 2 2 2 a proto lze rovnici (9.) použít ve zjednodušeném explicitním tvaru. Matici vektorů U i j nahradíme z-souřadnicemi z i j uzlových bodů U i j a explicitní rovnice plochy je 2 3 z 2 3 z B x B x B x B x M B y B y B y B y Po vynásobení matic a po úpravách vyjde explicitní vyjádření: 2 2 2 2 2 3 3 2 3 z 3x 3x 2x 3y 6x 9x 6x 3y 9x 6x x 3y 4x 2x x Obdobně síť 5 3. Bézierovu plochu můžeme vytvořit i pomocí sítě 5 3. edy U i j, i =,, 2, 3, 4 a j =,, 2. Plocha určená touto sítí má rovnici 83
B B Ru, w B B B 4 4 24 34 44 u u u u u U U U U U U U U U U U U U U U 2 2 2 2 22 3 3 32 4 4 42 B B B 2 2 22 w w w (5.4) Funkce B 4(u), i =,...,4 jsou kvartiky z (viz. Ferg. křivky) B 4 (u) = ( - u ) 4 B 24 (u) = 6u( - u ) 4 B 4 (u) = 4u( - u ) 4 B 34 (u) = 4u 3 ( - u ) B 44 (u) = u 4, (5.5) kde funkce B i 2 (w), pro i =,, 2 jsou paraboly (viz. Fergusonovy křivky kap.3.4.3.) 2 2 2 B w w 2 B w w w 2 B w w 22 Pro w = po dosazení (5.6) dostaneme: B 2 () =, B 2 () =, B 22 () =, tedy R u B u U B u U B u U B u U B u U, 4 4 24 2 34 3 44 4 (5.6) je rovnice Bézierovy křivky, která je určena okrajovou lomenou čarou sítě s vrcholy U,U,U 2,U 3, U 4. Obdobně pro parametry w =, u = a u = lze ukázat, že i ostatní okrajové strany plochy jsou Bézierovy křivky určené příslušnou okrajovou lomenou čarou. Příklad 4. Na následujícím obrázku 5.2 je zobrazena síť s patnácti uzly U i j, i =,, 2, 3, 4 z a j =,, 2, které jsou rozmístěny rovnoměrně v jednotkovém čtverci. Obdobně, jako v předcházejícím příkladě vyjádříme matici M vektorů U ij tak, že souřadnice uzlů U ij nahradíme z - souřadnicemi. x Obr. 5.2 y Matice M má tvar 84
M. Z rovnic (5.5) a (5.6) (po vynásobení a úpravách dostaneme explicitní tvar: Obr. 5.3 2 2 2 3 4 2 2 3 4 z x 6 8x 3x 2y 8x 2x 8x x y 6x 42x 44x 4 x. Plocha je zobrazena na obrázku 5.3. Úlohy k řešení 5.3. Zobrazte v různých druzích promítání Bézierovu plochu, která je dána sítí 3 4. Řešte obecně i pro body zadané souřadnicemi. 5.6. Coonsova B-spline plocha Výklad Coonsova B-spline plocha je určena sítí 4 4 uzlových bodů. U i j, i, j =,, 2, 3. uzlové body. Rovnice plochy je: R u, w C u C u C u C u M C w C w C w C w 2 3 2 3 / 36 (5.7) M je maticí (5.2), jejíž prvky jsou radiusvektory U i j uzlových bodů U i j a funkce C i (t), pro i =,, 2, 3 jsou kubické polynomy C (t) = - 3t + 3t 2 - t 3 = ( - t) 3 C 2 (t) = + 3t + 3t 2-3t 3 C (t) = 4-6t 2 + 3t 3 C 3 (t) = t 3 Určení okrajových křivek je stejné, jako v minulé části. Pro u = platí: 85
C () =, C () = 4, C 2 () =, C 3 () =. Po dosazení do rovnice (5.7) dostaneme: 3 2 3 i i 2i i R, w 4 M C w C w C w C w / 36 U 4 U U C w / 36 Jde tedy o B-spline kubiku, která je určená lomenou čarou s vrcholy P, danými vektory P U 4U U / 6, pro i =,, 2, 3. i i i 2i i ento vztah lze upravit (obdobně jako u 2D) do tvaru P 3 2 U U U U 2 i i i i i P 3 2 U U U U 2, z čehož plyne, že bod P i určený polohovým vektorem i i i i i Obr. 5.4 3 P i je antitěžištěm trojúhelníka U i, U i a U 2i. o je bod, který leží v jedné třetině těžnice jdoucí z vrcholu U i. Odvození okrajových křivek plochy provedeme obdobně jako při Obr. 5.5 Obr. 5.6 Obr. 4 86
rovinné křivce. Okrajovou křivkou plochy (5.7) je pro u = B-spline křivka, která je určena vrcholy P i, které získáme jako antitěžiště trojúhelníků U i,u i a U 2i pro i =,, 2, 3. Stejně je tomu i pro další okrajové křivky plochy. Jde tedy o B-spline křivky, které jsou určené antitěžišti ve čtyřech trojúhelnících. yto trojúhelníky tvoří příslušných dvanáct uzlových bodů. B-spline plocha je k původně zadaným bodům - sítí - ve volnějším vztahu, než B-spline křivka. Neprochází žádným bodem sítě. Na obrázku 6.4 je zadání a výsledek Coonsovy B-spline plochy, která je dána nad jednotkovým čtvercem 6-ti body. Výsledná plocha je zobrazena na obrázku 6.5. Vektory jednotlivých bodů - uzlů plochy - rozepíšeme do matic pro jednotlivé x, y a z souřadnice: 2 3 3 M x 3 3 3 3 2, M 2 2 2 2 y 3 3 3 3 3 3 2 3 3 2 3 3 Ze základní rovnice (5.7) dostaneme, M x x C u C u C u C u M C w C w C w C w z K 2 3 2 3 / 36 Po vynásobení matic a příslušných úpravách dostaneme: x u y w / 3 3 2 3 2 / 3 a obdobně z K C u C w K 3u 6u 4 3w 3w 3w / 36 2 Kontrolní otázky 5.. Charakterizujte typy ploch, které se používají v počítačové grafice? 2. Dejte příklad na použití Bézierových ploch. 3. Jak je určena Coonsova plocha? 87