// Persistence of Vision Ray Tracer Scene Description File // File: brush.pov // Vers: 3.1 // Desc: Wooden handled hairbrush on semi-reflective white tiles // Date: Jan 29, 2001 // Auth: Michael Koopman (mkoopman@hotmail.com) #include "colors.inc" #include "textures.inc" #include "woods.inc" #include "stones.inc" #declare Bristles = union { cylinder { <0, 0, 0>, <0, 4, 0>, 0.05 pigment { Gray20 } } #declare bristlecount=0; #while (bristlecount < 360) cylinder { <0, 0, 0>, <0, 4, 0>, 0.05 rotate z*7.5 rotate y*bristlecount pigment { Gray20 } } #declare bristlecount = (bristlecount + 30); #end } #declare bristlerow = union { #declare bristleztrans = 11; #while (bristleztrans < 26) object { Bristles translate <0, 0, bristleztrans> } #declare bristleztrans = (bristleztrans + 1); #end } background { MidnightBlue } default { pigment { DMFWood4 rotate y*7 turbulence 0.1 scale 5 } finish { phong 1 } } /* camera { location <0, 30, 5> look_at <0, 0, 5> orthographic } */ camera { location <-20, 15, 0> look_at <0, 1, 10> } light_source { <-25, 15, 15> rgb <0.7, 0.7, 0.7> area_light <0, 3, 0>, <0, 0, 3>, 5, 5 adaptive 1 jitter } light_source { <10, 15, -15> rgb <0.3, 0.3, 0.3> area_light <0, 3, 0>, <3, 0, 0>, 5, 5 adaptive 1 jitter } #declare FinishedBrush = union { torus { 2, 0.5 } cylinder { <0, -0.5, 0>, <0, 0.5, 0>, 2 } box { <-2, -0.5, 0>, < 2, 0.5, 5> } cylinder { <-2, 0, 0>, <-2, 0, 5>, 0.5 } cylinder { <2, 0, 0>, <2, 0, 5>, 0.5 } difference { cylinder { <0, -0.5, 0>, <0, 0.5, 0>, 2 scale <1, 1, 2> translate z*5 } box { <-5, -5, -5>, < 5, 5, 5> } } difference { torus { 2, 0.5 scale <1, 1, 2> translate z*5 } box { <-5, -5, -5>, < 5, 5, 5> } } difference { box { <-4, -0.5, 9>, < 4, 0.5, 11> } cylinder { <-4, -3, 9>, <-4, 3, 9>, 2.5 } cylinder { < 4, -3, 9>, < 4, 3, 9>, 2.5 } } cylinder { <-1.5, 0, 9>, < 1.5, 0, 9>, 0.5 } sphere { 0, 0.5 translate <-1.5, 0, 9> } sphere { 0, 0.5 translate < 1.5, 0, 9> } difference { torus { 2.5, 0.5 translate <-4, 0, 9> } box { <-10, -5, 0>, < 10, 5, 9> } box { <-10, -5, 0>, <-2.55, 5, 15> } } difference { torus { 2.56, 0.5 translate < 4, 0, 9> } box { <-10, -5, 0>, < 10, 5, 9> } box { < 10, -5, 0>, < 2.56, 5, 15> } } sphere { 0, 0.5 translate <-2.5, 0, 10.88> } sphere { 0, 0.5 translate < 2.5, 0, 10.88> } cylinder { <-2.5, 0, 10.88>, <-2.5, 0, 25.5>, 0.5 } cylinder { < 2.5, 0, 10.88>, < 2.5, 0, 25.5>, 0.5 } box { <-2.5, -0.5, 10.88>, < 2.5, 0.5, 25.5> } cylinder { <-2.5, 0, 25.5>, < 2.5, 0, 25.5>, 0.5 } sphere { 0, 0.5 translate <-2.5, 0, 25> } sphere { 0, 0.5 translate < 2.5, 0, 25> } #declare bristlextrans = -2.25; #while (bristlextrans < 2.26) object { bristlerow translate x*bristlextrans } #declare bristlextrans = (bristlextrans + 1); #end object { Bristles translate <-1, 0, 10> } object { Bristles translate <0, 0, 10> } object { Bristles translate < 1, 0, 10> } } object { FinishedBrush rotate y*7 translate x*-4 } //**********************************************// #declare tilegrout = box { <-100, -5, -30>, < 100, -0.55, 40> pigment { White } } #declare tilerow = union { #declare tilextrans = -100; #while (tilextrans < 100) superellipsoid { <0.25, 0.25> scale 2 translate y*-2.5 translate x*tilextrans } #declare tilextrans = (tilextrans + 3.5 ); #end } #declare tileledge = union { #declare tileztrans = -30; #while (tileztrans < 40) object { tilerow translate z*tileztrans } #declare tileztrans = (tileztrans + 3.5 ); #end } object { tileledge texture { T_Grnt20 scale 2 } finish { phong 1 reflection 0.15 } } object { tilegrout } object { tileledge // texture { T_Grnt20 } finish { phong 1 reflection 0.15 } pigment { White } rotate x*-90 translate y*-0.4 translate z*38 translate x*0.5 } object { tilegrout rotate x*-90 translate y*-0.4 translate z*38 translate x*0.5 } object { tileledge // texture { T_Grnt20 } finish { phong 1 reflection 0.15 } pigment { White } rotate x*-90 rotate y*90 translate y*-0.4 translate x*17 translate z*-0.3 } object { tilegrout rotate x*-90 rotate y*90 translate y*-0.4 translate x*17 translate z*-0.5 } box { <-500, 100, -500>, < 500, 101, 500> pigment { White } }