// Pyramid of 35 spheres POV-Ray source by Blotwell
// Uploaded to Wikimedia Commons
// and released under GPL
//
// Render frames 0 through 23 (24 is identical to 0)
global_settings {
#max_trace_level 15
}
#declare sq = 1/sqrt(2);
#declare vx = <2,0,0>;
#declare vy = <1,0,sqrt(3)>;
#declare vz = <1,sqrt(8/3),sqrt(1/3)>;
#declare my_sphere_1 =
sphere { <0,1,0>,1 pigment { color rgbf <.9,1,.9,.9> }
interior { ior 1.2 caustics 1.2 }
};
#declare my_sphere_2 =
sphere { <0,1,0>+vz,1 pigment { color rgbf <.9,.9,1,.9> }
interior { ior 1.2 caustics 1.2 }
};
#declare my_sphere_3 =
sphere { <0,1,0>+vz+vz,1 pigment { color rgbf <1,1,.8,.9> }
interior { ior 1.2 caustics 1.2 }
};
#declare my_sphere_4 =
sphere { <0,1,0>+vz+vz+vz,1 pigment { color rgbf <1,.9,.9,.9> }
interior { ior 1.2 caustics 1.2 }
}
#declare my_sphere_5 =
sphere { <0,1,0>+vz+vz+vz+vz,1 pigment { color rgbf <.9,.6,.9,.9> }
interior { ior 1.2 caustics 1.2 }
};
camera {
location <-15,11,-12>
right <2/3,0,0>
up <0,1/2,0>
look_at 4*vz-<0,3,0>
}
light_source {
vx*10+<0,10,0> color rgb <1,1,1>
photons {
refraction on
reflection on
}
}
light_source {
vy*10+<0,10,0> color rgb <1,1,1>
photons {
refraction on
reflection on
}
}
plane { <0,1,0>, 0
finish {ambient 0.2}
pigment { marble turbulence 1
color_map { [0.0 rgb 1] [0.9 rgb 0.9] [1.0 rgb <0.6,0.5,0.5>] }
scale 6
}
}
plane { <0,-1,0>, -12
finish {ambient 1}
pigment { color rgb <.6,.6,.8> }
}
union {
object { my_sphere_1 translate 0 }
object { my_sphere_1 translate vx }
object { my_sphere_1 translate vy }
object { my_sphere_1 translate vx+vx }
object { my_sphere_1 translate vx+vy }
object { my_sphere_1 translate vy+vy }
object { my_sphere_1 translate vx+vx+vx }
object { my_sphere_1 translate vx+vx+vy }
object { my_sphere_1 translate vx+vy+vy }
object { my_sphere_1 translate vy+vy+vy }
object { my_sphere_1 translate vx+vx+vx+vx }
object { my_sphere_1 translate vx+vx+vx+vy }
object { my_sphere_1 translate vx+vx+vy+vy }
object { my_sphere_1 translate vx+vy+vy+vy }
object { my_sphere_1 translate vy+vy+vy+vy }
object { my_sphere_2 translate 0 }
object { my_sphere_2 translate vx }
object { my_sphere_2 translate vy }
object { my_sphere_2 translate vx+vx }
object { my_sphere_2 translate vx+vy }
object { my_sphere_2 translate vy+vy }
object { my_sphere_2 translate vx+vx+vx }
object { my_sphere_2 translate vx+vx+vy }
object { my_sphere_2 translate vx+vy+vy }
object { my_sphere_2 translate vy+vy+vy }
object { my_sphere_3 translate 0 }
object { my_sphere_3 translate vx }
object { my_sphere_3 translate vy }
object { my_sphere_3 translate vx+vx }
object { my_sphere_3 translate vx+vy }
object { my_sphere_3 translate vy+vy }
object { my_sphere_4 translate 0 }
object { my_sphere_4 translate vx }
object { my_sphere_4 translate vy }
object { my_sphere_5 translate 0 }
translate -4*vz
rotate <0,clock>
translate 4*vz