8.4. DALSˇ´I OBJEKTY
Geometrie na poˇc´ıtaˇci
8.4
Implicitn´ı plochy, v´ yˇ skov´ a pole, matematick´ e funkce
8.4.1
Implicitn´ı plochy
Jsou definov´any hustotou ˇca´stic v dan´e oblasti, plocha se vytvoˇr´ı, pokud hustota pˇrekroˇc´ı zadanou hodnotu (pr´ah - threshold). V PovRAY umoˇzn ˇuje pr´aci s implicitn´ımi plochami objekt blob. Vytv´aˇr´ıme jej z komponent - koule a v´alce, jimˇz kromˇe obvykl´ ych parametr˚ u (stˇred, polomˇer) pˇrid´av´ame dalˇs´ı parametr - strength (intenzita, s´ıla) obvykle 1, povoleny jsou i z´aporn´e hodnoty - s´ıla jedn´e komponenty odeb´ır´a ˇc´astice druh´e. Jsou doplnˇen´ım mnoˇzinov´ ych operac´ı, kter´e sice neumoˇzn ˇuje vytvoˇren´ı numericky naprosto pˇresn´ ych ploch, zato vizu´alnˇe obvykle velmi zdaˇril´ ych. blob { threshold hodnota komponenta komponenta ... }
Pˇ r. Implicitn´ı plocha tvoˇren´a v´alcovou a dvojic´ı kulov´ ych komponent. #include ”colors.inc” camera{location -3*z look at 0} light source{-10*z color rgb 1} light source{< 100, 0, −100 > color rgb .7 shadowless} background{color White}
blob { threshold 0.6 cylinder{< .75, −.65, 0 >, < .75, .65, 0 >, 1, 1 pigment{color Red}} sphere{< −.37, .65, 0 >, 1, 1 pigment{color Green}} sphere{< −.37, −.65, 0 >, 1, 1 pigment{color Blue}} }
8.4.2
V´ yˇ skov´ e pole
S´ıt’ troj´ uheln´ık˚ u, jejichˇz v´ yˇsky (y k´oty) vrchol˚ u se vypoˇc´ıtaj´ı na z´akladˇe informac´ı y naˇcten´ ych z extern´ıho souboru tvoˇr´ı v PovRAY objekt hight field. Jako zdrojov´ soubor m˚ uˇzeme pouˇz´ıt libovoln´ y ˇcernob´ıl´ y (barevn´ y bude konvertov´an na ˇcernob´ıl´ y) obr´azek form´atu gif, tga (u jin´ ych form´at˚ u m˚ uˇze doj´ıt ke komplikac´ım zp˚ usoben´ ych komprimac´ı). Rozmˇery obr´azku nejsou podstatn´e, nebot’ PovRAY na jeho z´akladˇe vytvoˇr´ı v´ yˇskov´e pole vepsan´e do jednotkov´e krychle, kter´e do potˇrebn´ ych rozmˇer˚ u uprav´ıme pomoc´ı scale. Jak uˇz n´azev napov´ıd´a, v´ yˇskov´a pole se pouˇz´ıvaj´ı k modelov´an´ı ter´enu. Jako zdrojov´e obr´azky mohou slouˇzit mapy povrchu, u kter´ ych vrstevnice nahrad´ıme oblastmi s r˚ uznou intenzitou ˇsed´e (b´ıl´a = 1, ˇcern´a = 0). ˇ Dlouh´a, Cervenka 2013
75
ˇ VSB-TU Ostrava
Geometrie na poˇc´ıtaˇci
KAPITOLA 8. 3D GEOMETRIE V POVRAY
height field{ format obrazku ”nazev obrazku” water level hodnota //odrezani spodni casti smooth //vyhlazeni povrchu [OBJECT M ODIF IERS] }
#include ”colors.inc” camera {location < 30, 50, −40 > look at < 70, 0, 80 >} light source{< 0, 100, −100 > color rgb .8} light source{< 0, 50, 0 > color rgb .5 shadowless} background{White}
height field{ gif ”hf-vzor.gif” water level 0.1 smooth pigment{color Red} scale< 100, 50, 100 > }
Pozn´ amka 8.4.1 Bez vloˇzen´ı souboru hf-vzor.gif do sloˇzky, ve kter´e se nach´az´ı zdrojov´y k´od sc´eny, pˇr´ıklad nefunguje.
ˇ Dlouh´a, Cervenka 2013
76
ˇ VSB-TU Ostrava
8.4. DALSˇ´I OBJEKTY
Geometrie na poˇc´ıtaˇci
Matematick´ e funce Ve spojen´ı s cyklem while n´am umoˇzn ˇuj´ı vytv´aˇret dalˇs´ı rozmanit´e plochy a tˇelesa. PovRAY dok´aˇze pracovat s prakticky libovolnou matematickou funkc´ı, at’ je zadan´a parametricky nebo implicitnˇe. Uvedeme zde jenom nˇekolik m´alo uk´azek.
Kvadratick´ a funkce #include ”colors.inc” camera{location< 0, 5, −15 > look at< 0, 5, 0 >} light source{< 0, 25, −25 > color rgb 1} background{color White}
#declare krok = -5; #while (krok < 5) sphere{
,1 pigment{color Red}} #declare krok= krok+0.1; #end
Paraboloid #include ”colors.inc” camera{location< 0, 5, −15 > look at< 0, 5, 0 >} light source{< 0, 25, −25 > color rgb 1} background{color White}
#declare kvadrat = union{ #declare krok = 0; #while (krok < 5) sphere{,1} #declare krok= krok+0.1; #end }
#declare krok = 0; #while (krok < 24) object{kvadrat rotate 15*krok*y pigment{color Red}} #declare krok= krok+.1; #end
Pozn´ amka 8.4.2 Hladkost objektu na obr´azku byla doc´ılena nastaven´ım pˇr´ırustku na 0.001. V´ypoˇcet ale trval v´ıce neˇz 10 minut na poˇc´ıtaˇci s procesorem Intel Q9500 pˇri 100% zat´ıˇzen´ı vˇsech 4 v´ypoˇcetn´ıch jader. ˇ Dlouh´a, Cervenka 2013
77
ˇ VSB-TU Ostrava
Geometrie na poˇc´ıtaˇci
KAPITOLA 8. 3D GEOMETRIE V POVRAY
Elipsa Vyuˇzijeme parametrizaci elipsy. #include ”colors.inc” camera{location< 0, 10, −8 > look at0} light source{< 0, 10, −15 > color rgb 1} background{color White}
#declare krok = 0; #while (krok < 72) sphere{<7*cos(krok),0,3*sin(krok)>, 1 pigment{color Red}} #declare krok= krok+1; #end
Pozn´ amka 8.4.3 Vyuˇzit´ım goniometrick´ych funkc´ı m˚ uˇzeme vytvoˇrit analogii rotace, kdy se nepohybujeme po kruˇznici ale elipse.
ˇ Sroubovice ˇ Sroubov´ y pohyb vznik´a sloˇzen´ım rovnomˇern´eho posuvn´eho a rotaˇcn´ıho pohybu. #include ”colors.inc” camera{location< 0, 20, −20 > look at< 0, 10, 0 >} light source{< 0, 25, −25 > color rgb 1} background{color White}
#declare krok = 0; #while (krok < 18) sphere{<5*cos(krok),krok,5*sin(krok)>, 1 pigment{color Red}} #declare krok= krok+1; #end
8.4.3
ˇ sen´ Reˇ e pˇ r´ıklady
ˇ ezovka Retˇ Jedn´a se o kˇrivku, kterou vytvoˇr´ı ˇretˇez zavˇeˇsen´ y na sv´ ych konc´ıch nebo napˇr. elekx trick´e dr´aty, zadanou rovnic´ı y = a cosh( a ). Vytvoˇr´ıme model zavˇeˇsen´ı visut´eho mostu.
ˇ Dlouh´a, Cervenka 2013
78
ˇ VSB-TU Ostrava
8.4. DALSˇ´I OBJEKTY
Geometrie na poˇc´ıtaˇci
#include ”colors.inc” background{color White}
#declare a=50; #declare r=1; #declare d=5;
#declare krok = -a; #while (krok <= a+d) // nosne lano (roura) cylinder{,,r pigment{color rgb Red}} // mostovka cylinder{krok*x,(krok+d)*x,r pigment{color rgb Blue}} // svisla nosna lana cylinder{,krok*x,r/2 pigment{color rgb Yellow}}
#declare krok = krok + d; #end
// posledni svisle lano cylinder{,(krok)*x,r/2 pigment{color rgb Yellow}} camera{orthographic location<0,2*a,-2*a> look at <0,a,0>} light source{ color rgb .7} light source{-100*z color rgb .5 shadowless} background{color White}
ˇ Dlouh´a, Cervenka 2013
79
ˇ VSB-TU Ostrava
Geometrie na poˇc´ıtaˇci
KAPITOLA 8. 3D GEOMETRIE V POVRAY
Vinut´ y sloupek Je to plocha, kterou vytvoˇr´ı kruˇznice pˇri ˇsroubov´em pohybu.
camera{location< 0, 20, −25 > look at< 0, 10, 0 >} light source{< 0, 10, −25 > color rgb 1} background{color rgb< 1, 1, 1 >}
// vytvorime kruznici z kulicek, mohli bychom pouzit i elipsu #declare kruh = union{ #declare krok = 0; #while (krok < 48) sphere{< 3 ∗ cos(krok), 0, 3 ∗ sin(krok) >, 1 } #declare krok= krok+1; #end }
// kruznice nechame sroubovat kolem osy y, nastavime i barevny posun #declare krok = 0; #while (krok < 20) object{kruh translate< cos(krok/2), krok, sin(krok/2)¿ pigment{color rgb< 1 − krok/20, krok/20, 0 >}} #declare krok= krok+1; #end
ˇ Dlouh´a, Cervenka 2013
80
ˇ VSB-TU Ostrava
8.4. DALSˇ´I OBJEKTY
Geometrie na poˇc´ıtaˇci
8.4.4
´ Ulohy k procviˇ cen´ı
1. Zvlnˇ en´ a plocha
2. Miska
plocha vytvoˇren´a z kuliˇcek pomoc´ı funkc´ı sinus, cosinus a posunut´ı
plocha vytvoˇren´a z kuliˇcek pomoc´ı funkce cosinus a rotace
3. Cykloida
4. Blob
kˇrivka s parametrizac´ı c = [rt + dcos(t), r − dsin(t)]
implicitn´ı plocha vytvoˇren´a z pˇeti koul´ı (8.1.5 2. Pyramida z koul´ı)
5. Ostrov
ostrov vytvoˇren´ y pomoc´ı v´ yˇskov´eho pole z obr´azku vlevo (pˇr´ıpadnˇe si vytvoˇrte vlastn´ı podklad) ˇ Dlouh´a, Cervenka 2013
81
ˇ VSB-TU Ostrava