/* elements.pov */ #macro torus030(MR,mr) intersection { torus { MR, mr rotate <90,0,0> } plane { <-1,0,0>, 0 rotate <0,0,0> } plane { <-1,0,0>, 0 rotate <0,0,150> } } #end #macro torus090(MR,mr) intersection { torus { MR, mr rotate <90,0,0> } plane { <-1,0,0>, 0 rotate <0,0,0> } plane { <-1,0,0>, 0 rotate <0,0,90> } } #end #macro torus180(MR,mr) difference { torus { MR, mr rotate <90,0,0> } box { <0,-1,-1> <1,1,1> } } #end #macro torus270(MR,mr) difference { torus { MR, mr rotate <90,0,0> } box { <0,0,-1> <1,1,1> } } #end #macro torus360(MR,mr) torus { MR, mr rotate <90,0,0> } #end #declare sweet = merge { sphere { <-0.310,-0.310,0> 0.112 } object { torus180(0.588,0.112) rotate <0,0,90> translate <-0.310,-0.310,0> } object { torus090(1.198,0.112) rotate <0,0,90> translate <0.888,-0.310,0> } union { sphere_sweep { cubic_spline 5, <0.888-cos(radians(-45))*1.786,-0.310+sin(radians(-45))*1.198> 0.112 <0.888-cos(radians( 0))*1.786,-0.310+sin(radians( 0))*1.198> 0.112 <0.888-cos(radians( 45))*1.786,-0.310+sin(radians( 45))*1.198> 0.112 <0.888-cos(radians( 90))*1.786,-0.310+sin(radians( 90))*1.198> 0.112 <0.888-cos(radians(135))*1.786,-0.310+sin(radians(135))*1.198> 0.112 } sphere_sweep { cubic_spline 5, <0.888-cos(radians(-45))*0.610,-0.310+sin(radians(-45))*1.198> 0.112 <0.888-cos(radians( 0))*0.610,-0.310+sin(radians( 0))*1.198> 0.112 <0.888-cos(radians( 45))*0.610,-0.310+sin(radians( 45))*1.198> 0.112 <0.888-cos(radians( 90))*0.610,-0.310+sin(radians( 90))*1.198> 0.112 <0.888-cos(radians(135))*0.610,-0.310+sin(radians(135))*1.198> 0.112 } } bounded_by { box { <-1.010,-1.010,-0.113> <1.010,1.010,0.113> } } }; #declare boom = merge { object { torus270(0.296,0.112) rotate <0,0, 90> translate < 0.296,-0.592,0> } object { torus180(0.296,0.112) rotate <0,0,180> translate < 0.296, 0.000,0> } object { torus270(0.296,0.112) rotate <0,0,180> translate < 0.296, 0.592,0> } object { torus090(0.296,0.112) rotate <0,0,180> translate < 0.000,-0.296,0> } object { torus090(0.296,0.112) rotate <0,0,180> translate <-0.296, 0.000,0> } object { torus180(0.296,0.112) rotate <0,0,270> translate <-0.296, 0.592,0> } object { torus180(0.296,0.112) rotate <0,0, 0> translate <-0.296, 0.296,0> } object { torus030(0.296,0.112) rotate <0,0, 90> translate <-0.296, 0.000,0> } object { torus030(0.296,0.112) rotate <0,0,120> translate <-0.296, 0.592,0> } object { torus030(0.296,0.112) rotate <0,0, 0> translate <-0.296,-0.296,0> } object { torus030(0.296,0.112) rotate <0,0, 30> translate < 0.296, 0.000,0> } sphere { <-0.296,-0.296,0> 0.112 } sphere { < 0.000,-0.592,0> 0.112 } sphere { < 0.296,-0.296,0> 0.112 } sphere { < 0.000, 0.296,0> 0.112 rotate <0,0, 30> translate < 0.296, 0.000,0> } sphere { < 0.000, 0.296,0> 0.112 rotate <0,0,-30> translate <-0.296,-0.296,0> } sphere { < 0.000, 0.592,0> 0.112 } sphere { <-0.296, 0.592,0> 0.112 } bounded_by { box { <-1.010,-1.010,-0.113> <1.010,1.010,0.113> } } }; #declare pungent = merge { difference { cylinder { <0,0,-0.112> <0,0,0.112> 0.888 } cylinder { <-0.412,0,-1> <-0.412,0,1> 0.356 } cylinder { < 0.412,0,-1> < 0.412,0,1> 0.356 } } object { torus360(0.356,0.112) translate <-0.412,0,0> } object { torus360(0.356,0.112) translate < 0.412,0,0> } object { torus360(0.888,0.112) } bounded_by { box { <-1.010,-1.010,-0.113> <1.010,1.010,0.113> } } }; #declare prickle = merge { sphere { <-0.888,-0.888,0> 0.112 } sphere { < 0.888,-0.888,0> 0.112 } sphere { <-0.888, 0.333,0> 0.112 } sphere { <-0.444, 0.888,0> 0.112 } sphere { < 0.000, 0.333,0> 0.112 } sphere { < 0.444, 0.888,0> 0.112 } sphere { < 0.888, 0.333,0> 0.112 } cylinder { <-0.888,-0.888,0> <-0.888, 0.333,0> 0.112 } cylinder { <-0.444,-0.888,0> <-0.444, 0.888,0> 0.112 } cylinder { < 0.000,-0.888,0> < 0.000, 0.333,0> 0.112 } cylinder { < 0.444,-0.888,0> < 0.444, 0.888,0> 0.112 } cylinder { < 0.888,-0.888,0> < 0.888, 0.333,0> 0.112 } cylinder { <-0.888,-0.888,0> < 0.888,-0.888,0> 0.112 } bounded_by { box { <-1.010,-1.010,-0.113> <1.010,1.010,0.113> } } }; #declare orange = merge { difference { cylinder { <0,0,-0.112> <0,0,0.112> 0.888 } cylinder { <0,0.388,-1> <0,0.388,1> 0.5 } } object { torus360(0.500,0.112) translate <0,0.388,0> } object { torus360(0.888,0.112) } bounded_by { box { <-1.010,-1.010,-0.113> <1.010,1.010,0.113> } } }; /**/ #include "colors.inc" #include "metals.inc" camera { orthographic direction <0, 0, 1> location <0, 0.25, -6> up <0, 6*1, 0> right <6*image_width/image_height, 0, 0> look_at <0, 0.25, 0> } light_source { <-9, -9, -20> color rgb <0.3,0.3,0.3> } light_source { < 9, 9, -20> color rgb <1.0,1.0,1.0> } light_source { <-9, 9, -20> color rgb <0.3,0.3,0.3> shadowless } light_source { <-9, -9, -20> color rgb <0.3,0.3,0.3> shadowless } light_source { < 9, -9, -20> color rgb <0.3,0.3,0.3> shadowless } #macro calcpoint(n) #end #declare txt = texture { T_Silver_4E }; object { sweet texture { txt } translate calcpoint(0) } object { boom texture { txt } translate calcpoint(1) } object { pungent texture { txt } translate calcpoint(2) } object { prickle texture { txt } translate calcpoint(3) } object { orange texture { txt } translate calcpoint(4) } /**/