// Bathroom.pov // Author: Werner Vesterås // Created date: 07.08.03 #include "textures.inc" #declare D = 0.00001; #declare FocalBlur = true; #declare AreaLight = true; max_trace_level 15 camera { // orthographic location <-4, 15.5, 3> look_at <0, 8, 15> #if (FocalBlur) focal_point <0, 8, 15> variance 1/10000 aperture 1 blur_samples 200 #end //right x*image_width / image_height } union { #local A = 4; light_source { <0, 19.9 - D, 0>, color rgb <1, 1, 1> #if (AreaLight) area_light , <0, 0, A>, 10, 10 adaptive 1 jitter #end } box { <-10, 0, -15>, <10, 20, 15> pigment { color rgb <1, 1, 1> } finish { ambient 0.3 } } box { <-2, 19.9, -2>, <2, 20, 2> pigment { color rgb <1, 1, 0.9> } finish { ambient 1 } } } #declare Handle = #local V = 0; union { #while (V < 360) union { difference { cylinder { <0.25, 0, 0>, <-0.25, 0, 0>, 0.2 } torus { 0.4, 0.3 rotate <0, 0, 90> sturm } } sphere { <0, 0, 0>, 0.25 translate <0.35, 0, 0> } translate <0.5, 0, 0> rotate <0, V, 0> #local V = V + 90; } #end difference { sphere { <0, 0, 0>, 0.4 scale <1, 0.75, 1> } union { cylinder { <0, 0 - D, 0>, <0, 0.5, 0>, 0.2 } cylinder { <0, -0.5, 0>, <0, 0 + D, 0>, 0.15 } } } rotate <0, 45, 0> } #macro Nut(Bottom, Top, Radius) #local N = 6; #local A = 0; prism { linear_spline linear_sweep Bottom, Top, N, #while (A < 360) #local A = A + 360 / N; #end } #end #declare Hot_Knob = difference { union { cylinder { <0, -0.2, 0>, <0, 0.2, 0>, 1 } torus { 1, 0.2 sturm } } union { union { sphere { <0, 0, -1>, 0.2 } cylinder { <0, 0, -1>, <0, 0, 1>, 0.2 } sphere { <0, 0, 1>, 0.2 } translate <-0.5, 0, 0> } union { sphere { <0, 0, -1>, 0.2 } cylinder { <0, 0, -1>, <0, 0, 1>, 0.2 } sphere { <0, 0, 1>, 0.2 } translate <0.5, 0, 0> } union { cylinder { <-0.4, 0, 0>, <0.4, 0, 0>, 0.2 } } scale <0.6, 0.6, 0.6> translate <0, 0.2, 0> pigment { color rgb <0.8, 0, 0> } finish { specular 0.5 ambient 0.5 } } rotate <0, 45, 0> pigment { color rgb <1, 1, 1> } finish { specular 0.5 ambient 0.5 } } #declare CrossHandle = union { union { object { Handle } cylinder { <0, -1, 0>, <0, 0, 0>, 0.15 } } object { Hot_Knob scale <0.2, 0.2, 0.2> translate <0, 0.25, 0> } texture { Silver2 } } #declare Faucet = union { difference { intersection { blob { threshold 0.7 sphere { <0, 0, 0>, 1, 0.5 } cylinder { <0, 0, 0>, <0, 2, 0>, 0.5, 1 rotate <-22.5, 0, 0> } cylinder { <0, 0, 0>, <0, 1, 0>, 0.5, 1 rotate <0, 0, 45> } cylinder { <0, 0, 0>, <0, 1, 0>, 0.5, 1 rotate <0, 0, -45> } } plane { y, 2.5 rotate <0, 0, 22.5> } plane { -y, 0 } } union { cylinder { <0, 0, 0>, <0, 1.5, 0>, 0.085 rotate <0, 0, 45> } cylinder { <0, 0, 0>, <0, 1.5, 0>, 0.085 rotate <0, 0, -45> } } } union { cylinder { <0, 0, 0>, <0, 0.5, 0>, 0.202 translate <0, 1.5, 0> } union { difference { difference { torus { 0.5, 0.202 rotate <0, 0, 90> sturm } union { plane { y, 0 } plane { y, 0 rotate <45, 0, 0> } } } torus { 0.5, 0.2 rotate <0, 0, 90> sturm } } torus { 0.202, 0.025 translate <0, 0, -0.5> rotate <45, 0, 0> sturm } translate <0, 2, -0.5> } rotate <-22.5, 0, 0> } object { CrossHandle scale <0.5, 0.5, 0.5> translate <0, 1.5, 0> rotate <0, 0, 45> } object { CrossHandle scale <0.5, 0.5, 0.5> translate <0, 1.5, 0> rotate <0, 0, -45> } texture { Silver2 } } #macro Hole(Depth) union { difference { union { cylinder { <0, -Depth, 0>, <0, 0.1, 0>, 0.9 } torus { 0.9, 0.1 sturm } cylinder { <0, -Depth, 0>, <0, 0, 0>, 1 } } cylinder { <0, -Depth - D, 0>, <0, 0.1 + D, 0>, 0.5 } cylinder { <0, 0 - D, 0>, <0, 0.1 + D, 0>, 0.6 } } torus { 0.6, 0.1 sturm } texture { Silver2 } } #end #macro Sink(R) union { difference { merge { difference { difference { sphere { <0, 0, 0>, 0.8 + R translate <0, -R, 0> } plane { -y, R } } merge { sphere { <0, -R, 0>, 0.8 - R } cylinder { <0, -R, 0>, <0, 0 + D, 0>, 0.8 } } } torus { 0.8, R translate <0, -R, 0> sturm } difference { merge { cylinder { <0, 0, 0.15>, <0, 0, -1>, R translate <-0.8, -R, 0> } cylinder { <0, 0, 0.15>, <0, 0, -1>, R translate <0.8, -R, 0> } cylinder { <-0.8, 0, 0>, <0.8, 0, 0>, R translate <0, -R, 0.15> } sphere { <0, 0, 0>, R translate <-0.8, -R, 0.15> } sphere { <0, 0, 0>, R translate <0.8, -R, 0.15> } box { <-0.8, -R, -1>, <0.8, R, 0.15> translate <0, -R, 0> } translate <0, 0, 1> } cylinder { <0, -0.5, 0>, <0, 0 + D, 0>, 0.8 } } scale <5, 3, 3.5> translate <0, 0, -3.2> } cylinder { <0, 0, -1>, <0, 0, 1>, 0.25 translate <0, -0.5, -0.5> } cylinder { <0, -1, 0>, <0, 1, 0>, 0.5 translate <0, -3, -3.5> } } object { Hole(1) rotate <-90, 0, 0> scale <0.25, 0.25, 0.25> translate <0, -0.5, -0.65> } object { Hole(0.5) scale <0.5, 0.5, 0.5> translate <0, -2.35, -3.5> } pigment { color rgb <1, 1, 1> } translate <0, 0, 3.5> finish { ambient 0.5 specular 0.309333 roughness 0.006177 } } #end union { object { Faucet translate <0, 0, 3.6> } object { Sink(0.05) } box { <-4, 1, -0.05>, <4, 10, 0> translate <0, 0, 4.5> pigment { color rgb <1, 1, 1> } finish { brilliance 50 reflection { 1.0 } } } translate <0, 8, 10.5> }