File:Polyhedron With No Vertex Visible From Center.png
This is the source code from which the image above is rendered. The permission given above applies to this source code as well.
// Persistence of Vision Ray Tracer Scene Description File // File: 3d-art-gallery.pov // Vers: 3.6 // Desc: A simple polyhedron with none of the vertices visible from the center. // Date: 2007-11-06 // Auth: Ilmari Karonen // parameters controlling the width and depth of hidden gaps #declare a = (1 - 1/3); #declare b = (1 + 2/3); #if (b <= 1/a) #warning "B too small for a, vertices will be visible from center!" #end // textures for various surfaces #declare T1 = texture { pigment { color rgb<1.0, 0.8, 0.8> } finish { ambient 0.3 diffuse 0.7 } } #declare T2 = texture { pigment { color rgb<1.0, 1.0, 0.8> } finish { ambient 0.3 diffuse 0.7 } } #declare T3 = texture { pigment { color rgb<0.8, 0.9, 1.0> } //pigment { color rgb 0 transmit 1 } finish { ambient 0.3 diffuse 0.7 } } #declare T4 = texture { pigment { color rgb<0.8, 0.8, 0.8> } finish { diffuse 0.3 specular 1.0 } } // the polyhedron itself mesh { // corner triangles triangle { < 1, a, b>, < a, b, 1>, < b, 1, a> texture { T1 } } triangle { < 1, a,-b>, < a, b,-1>, < b, 1,-a> texture { T1 } } triangle { < 1,-a, b>, < a,-b, 1>, < b,-1, a> texture { T1 } } triangle { < 1,-a,-b>, < a,-b,-1>, < b,-1,-a> texture { T1 } } triangle { <-1, a, b>, <-a, b, 1>, <-b, 1, a> texture { T1 } } triangle { <-1, a,-b>, <-a, b,-1>, <-b, 1,-a> texture { T1 } } triangle { <-1,-a, b>, <-a,-b, 1>, <-b,-1, a> texture { T1 } } triangle { <-1,-a,-b>, <-a,-b,-1>, <-b,-1,-a> texture { T1 } } // visible sides triangle { < 1, a, b>, < 1,-a, b>, < 1, a,-b> texture { T2 } } triangle { < 1,-a,-b>, < 1,-a, b>, < 1, a,-b> texture { T2 } } triangle { <-1, a, b>, <-1,-a, b>, <-1, a,-b> texture { T2 } } triangle { <-1,-a,-b>, <-1,-a, b>, <-1, a,-b> texture { T2 } } triangle { < a, b, 1>, <-a, b, 1>, < a,-b, 1> texture { T2 } } triangle { <-a,-b, 1>, <-a, b, 1>, < a,-b, 1> texture { T2 } } triangle { < a, b,-1>, <-a, b,-1>, < a,-b,-1> texture { T2 } } triangle { <-a,-b,-1>, <-a, b,-1>, < a,-b,-1> texture { T2 } } triangle { < b, 1, a>, < b, 1,-a>, <-b, 1, a> texture { T2 } } triangle { <-b, 1,-a>, < b, 1,-a>, <-b, 1, a> texture { T2 } } triangle { < b,-1, a>, < b,-1,-a>, <-b,-1, a> texture { T2 } } triangle { <-b,-1,-a>, < b,-1,-a>, <-b,-1, a> texture { T2 } } // hidden sides triangle { < 1, a, b>, < b, 1, a>, < 1, a,-b> texture { T3 } } triangle { < b, 1,-a>, < b, 1, a>, < 1, a,-b> texture { T3 } } triangle { < 1,-a, b>, < b,-1, a>, < 1,-a,-b> texture { T3 } } triangle { < b,-1,-a>, < b,-1, a>, < 1,-a,-b> texture { T3 } } triangle { <-1, a, b>, <-b, 1, a>, <-1, a,-b> texture { T3 } } triangle { <-b, 1,-a>, <-b, 1, a>, <-1, a,-b> texture { T3 } } triangle { <-1,-a, b>, <-b,-1, a>, <-1,-a,-b> texture { T3 } } triangle { <-b,-1,-a>, <-b,-1, a>, <-1,-a,-b> texture { T3 } } triangle { < a, b, 1>, < 1, a, b>, < a,-b, 1> texture { T3 } } triangle { < 1,-a, b>, < 1, a, b>, < a,-b, 1> texture { T3 } } triangle { <-a, b, 1>, <-1, a, b>, <-a,-b, 1> texture { T3 } } triangle { <-1,-a, b>, <-1, a, b>, <-a,-b, 1> texture { T3 } } triangle { < a, b,-1>, < 1, a,-b>, < a,-b,-1> texture { T3 } } triangle { < 1,-a,-b>, < 1, a,-b>, < a,-b,-1> texture { T3 } } triangle { <-a, b,-1>, <-1, a,-b>, <-a,-b,-1> texture { T3 } } triangle { <-1,-a,-b>, <-1, a,-b>, <-a,-b,-1> texture { T3 } } triangle { < b, 1, a>, < a, b, 1>, <-b, 1, a> texture { T3 } } triangle { <-a, b, 1>, < a, b, 1>, <-b, 1, a> texture { T3 } } triangle { < b, 1,-a>, < a, b,-1>, <-b, 1,-a> texture { T3 } } triangle { <-a, b,-1>, < a, b,-1>, <-b, 1,-a> texture { T3 } } triangle { < b,-1, a>, < a,-b, 1>, <-b,-1, a> texture { T3 } } triangle { <-a,-b, 1>, < a,-b, 1>, <-b,-1, a> texture { T3 } } triangle { < b,-1,-a>, < a,-b,-1>, <-b,-1,-a> texture { T3 } } triangle { <-a,-b,-1>, < a,-b,-1>, <-b,-1,-a> texture { T3 } } } // mark vertices with black spheres sphere { < 1, a, b>, 0.03 texture { T4 } } sphere { < a, b, 1>, 0.03 texture { T4 } } sphere { < b, 1, a>, 0.03 texture { T4 } } sphere { < 1, a,-b>, 0.03 texture { T4 } } sphere { < a, b,-1>, 0.03 texture { T4 } } sphere { < b, 1,-a>, 0.03 texture { T4 } } sphere { < 1,-a, b>, 0.03 texture { T4 } } sphere { < a,-b, 1>, 0.03 texture { T4 } } sphere { < b,-1, a>, 0.03 texture { T4 } } sphere { < 1,-a,-b>, 0.03 texture { T4 } } sphere { < a,-b,-1>, 0.03 texture { T4 } } sphere { < b,-1,-a>, 0.03 texture { T4 } } sphere { <-1, a, b>, 0.03 texture { T4 } } sphere { <-a, b, 1>, 0.03 texture { T4 } } sphere { <-b, 1, a>, 0.03 texture { T4 } } sphere { <-1, a,-b>, 0.03 texture { T4 } } sphere { <-a, b,-1>, 0.03 texture { T4 } } sphere { <-b, 1,-a>, 0.03 texture { T4 } } sphere { <-1,-a, b>, 0.03 texture { T4 } } sphere { <-a,-b, 1>, 0.03 texture { T4 } } sphere { <-b,-1, a>, 0.03 texture { T4 } } sphere { <-1,-a,-b>, 0.03 texture { T4 } } sphere { <-a,-b,-1>, 0.03 texture { T4 } } sphere { <-b,-1,-a>, 0.03 texture { T4 } } sky_sphere { pigment { color rgb 1 } } // outside lights light_source { <50, 80, 0> color rgb 0.2 area_light 5*x 5*y 9, 9 adaptive 0 jitter circular orient parallel point_at <0, 0, 0> rotate 15*y } light_source { <50,-10, 0> color rgb 0.1 area_light 5*x 5*y 9, 9 adaptive 0 jitter circular orient parallel point_at <0, 0, 0> rotate 45*y } light_source { <50, 20, 0> color rgb 0.3 area_light 5*x 5*y 9, 9 adaptive 1 jitter circular orient parallel point_at <0, 0, 0> rotate 75*y } light_source { <50, 80, 0> color rgb 0.2 area_light 5*x 5*y 9, 9 adaptive 0 jitter circular orient parallel point_at <0, 0, 0> rotate 135*y } light_source { <50,-10, 0> color rgb 0.1 area_light 5*x 5*y 9, 9 adaptive 0 jitter circular orient parallel point_at <0, 0, 0> rotate 165*y } light_source { <50, 20, 0> color rgb 0.3 area_light 5*x 5*y 9, 9 adaptive 1 jitter circular orient parallel point_at <0, 0, 0> rotate 195*y } light_source { <50, 80, 0> color rgb 0.2 area_light 5*x 5*y 9, 9 adaptive 0 jitter circular orient parallel point_at <0, 0, 0> rotate 255*y } light_source { <50,-10, 0> color rgb 0.1 area_light 5*x 5*y 9, 9 adaptive 0 jitter circular orient parallel point_at <0, 0, 0> rotate 285*y } light_source { <50, 20, 0> color rgb 0.3 area_light 5*x 5*y 9, 9 adaptive 1 jitter circular orient parallel point_at <0, 0, 0> rotate 315*y } // inside lights light_source { <0, 0, 0> color rgb 0.5 area_light 0.6*x 0.6*z 9, 9 adaptive 1 jitter circular orient } light_source { <0, 0, 0> color rgb 0.5 area_light 0.4*x 0.4*z 9, 9 adaptive 1 jitter circular orient } // cameras camera { location <8.0, 5.0, -5.0> angle 30 look_at <0.0, 0.0, 0.0> right x*image_width/image_height } // outside //camera { panoramic location <0,0,0> look_at <1,0,1> angle 180 } // inside, 180 degree panorama //camera { location <0,0,0> look_at <1,1,1> angle 70 } // inside, looking at corner