/* Platonic Solid Include File */ /* Written By S.R. Hall, of Ground-Net Graphics*/ /* version 1.0, December, 1998 */ /* Contents: I. Introduction II. How To Use This File III. Important Geometric Info On The Platonic Solids IV. The Actual Object Listings */ /* I. Introduction: This .inc file has solid and framework representations of the five Platonic solids: 1) tetrahedron 2) hexahedron {the cube} 3) octahedron 4) dodecahedron 5) icosahedron All pieces ending with the "_e" suffix have edges of length one. Those that end with the "_r" suffix have radii (plural radius) of length one. The radius is defined in this case to be the distance from the geometric center of the object to a vertex {or corner point} NOTE: When any numeric value is given in this file, remember that they are ALL approximations (as is necessary to put into digital form), and may be slightly different from other sources, due to rounding at differing points in the calculations from the one used in the other sources. */ /* ------------------------------------------------ II. How To Use This File: 1. if using a frame version, #declare the appropriate radius: for tetrahedrons --> tetra_radius for hexahedrons --> hexa_radius for octahedrons --> octa_radius for dodecahedrons --> dodeca_radius for icosahedrons --> icosa_radius This radius is for the thickness of the cylinders and spheres that make up the frame. The default radius for solids with edges of length one is .05. The default frame radius varies for solids with radius of length one, and is equal to the edge length of the solid times .05. 2. #declare "platonic.inc" (be sure platonic.inc is in your INCLUDE directory) 3. Then put #declare object OBJECT_NAME= { xxxx_yyyy_z texture{...} rotate{...} ...(and whatever other object modifiers that pleases you) } Notes: 1)OBJECT_NAME can be changed to whatever you want. 2)xxxx is one of the following: a) tetra b) hexa c) octa d) dodeca e) icosa 3)yyyy is either: a) solid b) frame 4)z is either: a) e {for edge length equals one} b) r {for radius length equals one} 5) an example of xxxx_yyyy_z: we want a framework version of a dodecahedron, where the edges are of length one----> we use dodeca_frane_e 6) now use object in form --> object{OBJECT_NAME} however you want to use it. (Remember, if you change OBJECT_NAME in the #declare, change it to the same thing in the object{} statement. 7) the solids are all centered, geometrically, at <0,0,0>. Thus, all vertices are the same distance from the POV origin, and the bottom halves of the solids would below a plane thus specified: plane{<0,1,0>,0 pigment{color White}}. To get the solid to be resting on the plane (without rotations), translate the solid up an amount equal to the absolute value of height of the lowest point. To rest on any other object (without rotations), add the absolute value of height of the lowest point of the solid to the height of the top of the other object. If you are using the frame version of the solids, add the radius of the frame into your calculations. ------------------------------------------------ */ /* III. Important Geometric Info On The Platonic Solids: Tetrahedrons have four triangle sides, four vertices (plural vertex), and six edges. The radius of a tetrahedron with edge length of one is .6124. The edge length of a tetrahedron with radius equal to one is 1.6329. You don't have to tilt the tetrahedrons in this file to have them lay flat. The angle between sides is 70.5288 degrees. Assuming edge length of one: Highest point: .6124 Lowest point: -.2041 Hexahedrons, better known as cubes, in their solid forms, are more easily represented by the box statement in POV, but for consistency, are given in the mesh form. Hexahedrons have six square sides, eight vertices, and twelve edges. The radius of a hexahedron with edge length of one is .8660. The edge length of a hexahedron with radius equal to one is 1.1547. Hexahedrons in this file dont' have to be tilted to lay flat. The angle between sides is 90.0000 degrees. Assuming edge length of one: Highest point: .5 Lowest point: -.5 Octahedrons have eight triangle sides, six vertices, and twelve edges. The radius of an octahedron with edge length of one is .7071. The edge length of an octahedron with radius equal to one is 1.4142. Octahedrons have to be tilted (+/-)54.7356 degrees in the X or Z part of a rotation vector to lay flat (assuming no prior rotations of the octahedron). The height of the center of the octahedron above the "ground", when it is laying flat is .4082, assuming edge length of one. Remember, rotate around x, rotate around y (to whatever amount you want), then translate. The angle between sides is 109.4712 degrees. Assuming edge length of one: Highest point: .7071 Lowest point: -.7071 Dodecahedrons have twelve pentagonal sides, twenty vertices, and thirty edges. The radius of a dodecahedron with edge length of one is 1.4014. The edge length of a dodecahedron with radius equal to one is .7136. Dodecahedrons in this file don't have to be tilted to lay flat. The angle between sides is 116.5651 degrees. Highest point: 1.1137 Lowest point: -1.1137 Icosahedrons have twenty triangle sides, twelve vertices, and thirty edges. The radius of an icosahedron with edge length of one is .9510. The edge length of an icosahedron with radius equal to one is 1.0515. Tilting icosahedrons to get them flat is a bit tricky. To get the icosahedron in this file to lay flat, the tilt angle is 37.3773, and the rotation must be done around the x axis (or simply rotate<37.3773,0,0>). The height of the center of the icosahedron above the ground, when it is laying flat, is .7557, assuming an edge length of one. Remember, rotate around x, rotate to whatever you want around y, then translate. The angle between sides is 138.1897 degrees. Assuming edge length of one: Highest point: .9510 Lowest point: -.9510 */ /* IV. The Actual Object Listings */ #declare tetra_solid_e = mesh { triangle{<-0.5000,-0.2041,-0.2887> < 0.5000,-0.2041,-0.2887> < 0.0000,-0.2041, 0.5774>} triangle{<-0.5000,-0.2041,-0.2887> < 0.5000,-0.2041,-0.2887> < 0.0000, 0.6124, 0.0000>} triangle{< 0.5000,-0.2041,-0.2887> < 0.0000,-0.2041, 0.5774> < 0.0000, 0.6124, 0.0000>} triangle{<-0.5000,-0.2041,-0.2887> < 0.0000,-0.2041, 0.5774> < 0.0000, 0.6124, 0.0000>} } #ifndef (tetra_radius) #declare tetra_radius = 0.0500; #end #declare tetra_frame_e = union { cylinder {<-0.5000,-0.2041,-0.2887> < 0.5000,-0.2041,-0.2887> tetra_radius open} cylinder {<-0.5000,-0.2041,-0.2887> < 0.0000,-0.2041, 0.5774> tetra_radius open} cylinder {< 0.5000,-0.2041,-0.2887> < 0.0000,-0.2041, 0.5774> tetra_radius open} cylinder {<-0.5000,-0.2041,-0.2887> < 0.0000, 0.6124, 0.0000> tetra_radius open} cylinder {< 0.5000,-0.2041,-0.2887> < 0.0000, 0.6124, 0.0000> tetra_radius open} cylinder {< 0.0000,-0.2041, 0.5774> < 0.0000, 0.6124, 0.0000> tetra_radius open} sphere {<-0.5000,-0.2041,-0.2887> tetra_radius} sphere {< 0.5000,-0.2041,-0.2887> tetra_radius} sphere {< 0.0000,-0.2041, 0.5774> tetra_radius} sphere {< 0.0000, 0.6124, 0.0000> tetra_radius} } #declare tetra_solid_r = object{tetra_solid_e scale 1.6329} #declare tetra_frame_r = object{tetra_frame_e scale 1.6239} #declare hexa_solid_e = mesh { triangle{<-.5, .5,-.5> <-.5, .5, .5> <-.5,-.5, .5>} triangle{<-.5,-.5,-.5> <-.5,-.5, .5> <-.5, .5,-.5>} triangle{< .5, .5,-.5> < .5, .5, .5> < .5,-.5, .5>} triangle{< .5,-.5,-.5> < .5,-.5, .5> < .5, .5,-.5>} triangle{< .5, .5,-.5> < .5, .5, .5> <-.5, .5, .5>} triangle{<-.5, .5,-.5> <-.5, .5, .5> < .5, .5,-.5>} triangle{< .5,-.5,-.5> < .5,-.5, .5> <-.5,-.5, .5>} triangle{<-.5,-.5,-.5> <-.5,-.5, .5> < .5,-.5,-.5>} triangle{< .5,-.5, .5> < .5, .5, .5> <-.5, .5, .5>} triangle{<-.5,-.5, .5> <-.5, .5, .5> < .5,-.5, .5>} triangle{< .5,-.5,-.5> < .5, .5,-.5> <-.5, .5,-.5>} triangle{<-.5,-.5,-.5> <-.5, .5,-.5> < .5,-.5,-.5>} } #ifndef(hexa_radius) #declare hexa_radius = 0.0500; #end #declare hexa_frame_e = union { cylinder{< .5, .5, .5> < .5, .5,-.5> hexa_radius open} cylinder{<-.5, .5, .5> <-.5, .5,-.5> hexa_radius open} cylinder{< .5, .5, .5> <-.5, .5, .5> hexa_radius open} cylinder{< .5, .5,-.5> <-.5, .5,-.5> hexa_radius open} cylinder{< .5,-.5, .5> < .5,-.5,-.5> hexa_radius open} cylinder{<-.5,-.5, .5> <-.5,-.5,-.5> hexa_radius open} cylinder{< .5,-.5, .5> <-.5,-.5, .5> hexa_radius open} cylinder{< .5,-.5,-.5> <-.5,-.5,-.5> hexa_radius open} cylinder{< .5, .5, .5> < .5,-.5, .5> hexa_radius open} cylinder{< .5, .5,-.5> < .5,-.5,-.5> hexa_radius open} cylinder{<-.5, .5, .5> <-.5,-.5, .5> hexa_radius open} cylinder{<-.5, .5,-.5> <-.5,-.5,-.5> hexa_radius open} sphere{< .5, .5, .5> hexa_radius} sphere{< .5, .5,-.5> hexa_radius} sphere{< .5,-.5, .5> hexa_radius} sphere{< .5,-.5,-.5> hexa_radius} sphere{<-.5, .5, .5> hexa_radius} sphere{<-.5, .5,-.5> hexa_radius} sphere{<-.5,-.5, .5> hexa_radius} sphere{<-.5,-.5,-.5> hexa_radius} } #declare hexa_solid_r = object{hexa_solid_e scale 1.1547} #declare hexa_frame_r = object{hexa_frame_e scale 1.1547} #declare octa_solid_e = mesh { triangle{< .5, 0.0, .5>< .5, 0.0,-.5>< 0.0, .7071, 0.0>} triangle{< .5, 0.0,-.5><-.5, 0.0,-.5>< 0.0, .7071, 0.0>} triangle{<-.5, 0.0,-.5><-.5, 0.0, .5>< 0.0, .7071, 0.0>} triangle{<-.5, 0.0, .5>< .5, 0.0, .5>< 0.0, .7071, 0.0>} triangle{< .5, 0.0, .5>< .5, 0.0,-.5>< 0.0,-.7071, 0.0>} triangle{< .5, 0.0,-.5><-.5, 0.0,-.5>< 0.0,-.7071, 0.0>} triangle{<-.5, 0.0,-.5><-.5, 0.0, .5>< 0.0,-.7071, 0.0>} triangle{<-.5, 0.0, .5>< .5, 0.0, .5>< 0.0,-.7071, 0.0>} } #ifndef(octa_radius) #declare octa_radius = 0.0500; #end #declare octa_frame_e = union { cylinder{< .5, 0.0, .5>< 0.0, .7071, 0.0> octa_radius open} cylinder{< .5, 0.0,-.5>< 0.0, .7071, 0.0> octa_radius open} cylinder{<-.5, 0.0, .5>< 0.0, .7071, 0.0> octa_radius open} cylinder{<-.5, 0.0,-.5>< 0.0, .7071, 0.0> octa_radius open} cylinder{< .5, 0.0, .5>< 0.0,-.7071, 0.0> octa_radius open} cylinder{< .5, 0.0,-.5>< 0.0,-.7071, 0.0> octa_radius open} cylinder{<-.5, 0.0, .5>< 0.0,-.7071, 0.0> octa_radius open} cylinder{<-.5, 0.0,-.5>< 0.0,-.7071, 0.0> octa_radius open} cylinder{< .5, 0.0, .5>< .5, 0.0,-.5> octa_radius open} cylinder{< .5, 0.0,-.5><-.5, 0.0,-.5> octa_radius open} cylinder{<-.5, 0.0,-.5><-.5, 0.0, .5> octa_radius open} cylinder{<-.5, 0.0, .5>< .5, 0.0, .5> octa_radius open} sphere{< .5, 0.0, .5> octa_radius} sphere{< .5, 0.0,-.5> octa_radius} sphere{<-.5, 0.0, .5> octa_radius} sphere{<-.5, 0.0,-.5> octa_radius} sphere{< 0.0, .7071, 0.0> octa_radius} sphere{< 0.0,-.7071, 0.0> octa_radius} } #declare octa_solid_r = object{octa_solid_e scale 1.4142} #declare octa_frame_r = object{octa_frame_e scale 1.4142} #declare dodeca_solid_e = mesh { //1 triangle{< 0, 1.1137, .8507>< .8090, 1.1137, .2629>< 0, 1.1137, 0>} triangle{< .8090, 1.1137, .2629>< .5, 1.1137, -.6882>< 0, 1.1137, 0>} triangle{< .5, 1.1137, -.6882>< -.5, 1.1137, -.6882>< 0, 1.1137, 0>} triangle{< -.5, 1.1137, -.6882>< -.8090, 1.1137, .2629>< 0, 1.1137, 0>} triangle{< -.8090, 1.1137, .2629>< 0, 1.1137, .8507>< 0, 1.1137, 0>} //2 triangle{< 0, 1.1137, .8507>< .8090, 1.1137, .2629>< .5852, 0.4981, .8055>} triangle{< 0, 1.1137, .8507>< 0, 0.2629, 1.3761>< .5852, 0.4981, .8055>} triangle{< .8090, 1.1137, .2629>< 1.3086, 0.2629, .4253>< .5852, 0.4981, .8055>} triangle{< 0, 0.2629, 1.3761>< .8088, -0.2629, 1.1132>< .5852, 0.4981, .8055>} triangle{< 1.3086, 0.2629, .4253>< .8088, -0.2629, 1.1132>< .5852, 0.4981, .8055>} //3 triangle{< .8090, 1.1137, .2629>< .5, 1.1137, -.6882>< .9469, 0.4981, -.3077>} triangle{< .8090, 1.1137, .2629>< 1.3086, 0.2629, .4253>< .9469, 0.4981, -.3077>} triangle{< .5, 1.1137, -.6882>< .8088, 0.2629, -1.1132>< .9469, 0.4981, -.3077>} triangle{< 1.3086, 0.2629, .4253>< 1.3086, -0.2629, -.4253>< .9469, 0.4981, -.3077>} triangle{< .8088, 0.2629, -1.1132>< 1.3083, -0.2629, -.4253>< .9469, 0.4981, -.3077>} //4 triangle{< .5, 1.1137, -.6882>< -.5, 1.1137, -.6882>< 0, 0.4981, -.9958>} triangle{< .5, 1.1137, -.6882>< .8088, 0.2629, -1.1132>< 0, 0.4981, -.9958>} triangle{< -.5, 1.1137, -.6882>< -.8088, 0.2629, -1.1132>< 0, 0.4981, -.9958>} triangle{< .8088, 0.2629, -1.1132>< 0, -0.2629, -1.3761>< 0, 0.4981, -.9958>} triangle{< -.8088, 0.2629, -1.1132>< 0, -0.2629, -1.3761>< 0, 0.4981, -.9958>} //5 triangle{< -.5, 1.1137, -.6882>< -.8090, 1.1137, .2629>< -.9469, 0.4981, -.3077>} triangle{< -.5, 1.1137, -.6882>< -.8088, 0.2629, -1.1132>< -.9469, 0.4981, -.3077>} triangle{< -.8090, 1.1137, .2629>< -1.3086, 0.2629, .4253>< -.9469, 0.4981, -.3077>} triangle{< -.8088, 0.2629, -1.1132>< -1.3086, -0.2629, -.4253>< -.9469, 0.4981, -.3077>} triangle{< -1.3086, 0.2629, .4253>< -1.3086, -0.2629, -.4253>< -.9469, 0.4981, -.3077>} //6 triangle{< -.8090, 1.1137, .2629>< 0, 1.1137, .8507>< -.5852, 0.4981, .8055>} triangle{< -.8090, 1.1137, .2629>< -1.3086, 0.2629, .4253>< -.5852, 0.4981, .8055>} triangle{< 0, 1.1137, .8507>< 0, 0.2629, 1.3761>< -.5852, 0.4981, .8055>} triangle{< -1.3086, 0.2629, .4253>< -.8088, -0.2629, 1.1132>< -.5852, 0.4981, .8055>} triangle{< 0, 0.2629, 1.3761>< -.8088, -0.2629, 1.1132>< -.5852, 0.4981, .8055>} //7 triangle{< 0,-1.1137, -.8507>< -.8090,-1.1137, -.2629>< 0,-1.1137, 0>} triangle{< -.8090,-1.1137, -.2629>< -.5,-1.1137, .6882>< 0,-1.1137, 0>} triangle{< -.5,-1.1137, .6882>< .5,-1.1137, .6882>< 0,-1.1137, 0>} triangle{< .5,-1.1137, .6882>< .8090,-1.1137, -.2629>< 0,-1.1137, 0>} triangle{< .8090,-1.1137, -.2629>< 0,-1.1137, -.8507>< 0,-1.1137, 0>} //8 triangle{< 0, -1.1137, -.8507>< -.8090, -1.1137, -.2629>< -.5852, -0.4981, -.8055>} triangle{< 0, -1.1137, -.8507>< 0, -0.2629, -1.3761>< -.5852, -0.4981, -.8055>} triangle{< -.8090, -1.1137, -.2629>< -1.3086, -0.2629, -.4253>< -.5852, -0.4981, -.8055>} triangle{< 0, -0.2629, -1.3761>< -.8088, 0.2629, -1.1132>< -.5852, -0.4981, -.8055>} triangle{< -1.3086, -0.2629, -.4253>< -.8088, 0.2629, -1.1132>< -.5852, -0.4981, -.8055>} //9 triangle{< -.8090, -1.1137, -.2629>< -.5, -1.1137, .6882>< -.9469, -0.4981, .3077>} triangle{< -.8090, -1.1137, -.2629><-1.3086, -0.2629,-.4253>< -.9469, -0.4981, .3077>} triangle{< -.5, -1.1137, .6882><-.8088, -0.2629, 1.1132>< -.9469, -0.4981, .3077>} triangle{< -1.3086, -0.2629, -.4253><-1.3086, 0.2629, .4253>< -.9469, -0.4981, .3077>} triangle{< -.8088, -0.2629, 1.1132><-1.3086, 0.2629, .4253>< -.9469, -0.4981, .3077>} //10 triangle{< -.5, -1.1137, .6882>< .5, -1.1137, .6882>< 0, -0.4981, .9958>} triangle{< -.5, -1.1137, .6882><-.8088, -0.2629, 1.1132>< 0, -0.4981, .9958>} triangle{< .5, -1.1137, .6882><.8088, -0.2629, 1.1132>< 0, -0.4981, .9958>} triangle{<-.8088, -0.2629,1.1132><0, 0.2629,1.3761>< 0, -0.4981, .9958>} triangle{<.8088, -0.2629,1.1132><0, 0.2629,1.3761>< 0, -0.4981, .9958>} //11 triangle{< .5, -1.1137, .6882>< .8090, -1.1137, -.2629>< .9469, -0.4981, .3077>} triangle{< .5, -1.1137, .6882><.8088, -0.2629,1.1132>< .9469, -0.4981, .3077>} triangle{< .8090, -1.1137, -.2629><1.3086, -0.2629,-.4253>< .9469, -0.4981, .3077>} triangle{<.8088, -0.2629,1.1132><1.3086, 0.2629,.4253>< .9469, -0.4981, .3077>} triangle{<1.3086, -0.2629,-.4253><1.3086, 0.2629,.4253>< .9469, -0.4981, .3077>} //12 triangle{< .8090, -1.1137, -.2629>< 0, -1.1137, -.8507>< .5852, -0.4981, -.8055>} triangle{< .8090, -1.1137, -.2629><1.3086, -0.2629,-.4253>< .5852, -0.4981, -.8055>} triangle{< 0, -1.1137, -.8507><0, -0.2629,-1.3761>< .5852, -0.4981, -.8055>} triangle{<1.3086, -0.2629,-.4253><.8088, 0.2629,-1.1132>< .5852, -0.4981, -.8055>} triangle{<0, -0.2629,-1.3761><.8088, 0.2629,-1.1132>< .5852, -0.4981, -.8055>} } #ifndef(dodeca_radius) #declare dodeca_radius = 0.0500; #end #declare dodeca_frame_e = union { cylinder{ < 0 , 1.1137, .8507> < .8090 , 1.1137, .2629> dodeca_radius open} cylinder{ < .8090 , 1.1137, .2629> < .5 , 1.1137, -.6882> dodeca_radius open} cylinder{ < .5 , 1.1137, -.6882> < -.5, 1.1137, -.6882> dodeca_radius open} cylinder{ < -.5, 1.1137, -.6882> < -.8090, 1.1137, .2629> dodeca_radius open} cylinder{ < -.8090, 1.1137, .2629> < 0 , 1.1137, .8507> dodeca_radius open} cylinder{ < 0 , 1.1137, .8507> < 0 , .2629, 1.3761> dodeca_radius open} cylinder{ < .8090 , 1.1137, .2629> < 1.3086 , .2629, .4253> dodeca_radius open} cylinder{ < .5 , 1.1137, -.6882> < .8088, .2629, -1.1132> dodeca_radius open} cylinder{ < -.5, 1.1137, -.6882> < -.8088, .2629, -1.1132> dodeca_radius open} cylinder{ < -.8090, 1.1137, .2629> < -1.3086, .2629, .4253> dodeca_radius open} cylinder{ < .8088, -.2629, 1.1132> < 0 , .2629, 1.3761> dodeca_radius open} cylinder{ < 1.3086, -.2629, -.4253> < 1.3086 , .2629, .4253> dodeca_radius open} cylinder{ < 0 , -.2629, -1.3761> < .8088, .2629, -1.1132> dodeca_radius open} cylinder{ < -1.3086, -.2629, -.4253> < -.8088, .2629, -1.1132> dodeca_radius open} cylinder{ < -.8088, -.2629, 1.1132> < -1.3086, .2629, .4253> dodeca_radius open} cylinder{ < -.8088, -.2629, 1.1132> < 0 , .2629, 1.3761> dodeca_radius open} cylinder{ < .8088, -.2629, 1.1132> < 1.3086 , .2629, .4253> dodeca_radius open} cylinder{ < 1.3086, -.2629, -.4253> < .8088, .2629, -1.1132> dodeca_radius open} cylinder{ < 0 , -.2629, -1.3761> < -.8088, .2629, -1.1132> dodeca_radius open} cylinder{ < -1.3086, -.2629, -.4253> < -1.3086, .2629, .4253> dodeca_radius open} cylinder{ < 0 , -1.1137, -.8507> < 0, -.2629, -1.3761> dodeca_radius open} cylinder{ < -.8090, -1.1137, -.2629> < -1.3086, -.2629, -.4253> dodeca_radius open} cylinder{ < -.5, -1.1137, .6882> < -.8088, -.2629, 1.1132> dodeca_radius open} cylinder{ < .5, -1.1137, .6882>< .8088, -.2629, 1.1132> dodeca_radius open} cylinder{ < .8090, -1.1137, -.2629> < 1.3086, -.2629, -.4253> dodeca_radius open} cylinder{ < 0 , -1.1137, -.8507> < .8090 , -1.1137, -.2629> dodeca_radius open} cylinder{ < .8090 , -1.1137, -.2629> < .5 , -1.1137, .6882> dodeca_radius open} cylinder{ < .5 , -1.1137, .6882> < -.5, -1.1137, .6882> dodeca_radius open} cylinder{ < -.5, -1.1137, .6882> < -.8090, -1.1137, -.2629> dodeca_radius open} cylinder{ < -.8090, -1.1137, -.2629> < 0 , -1.1137, -.8507> dodeca_radius open} sphere{< 0 , 1.1137, .8507> dodeca_radius} sphere{< .8090 , 1.1137, .2629> dodeca_radius} sphere{< .5 , 1.1137, -.6882> dodeca_radius} sphere{< -.5, 1.1137, -.6882> dodeca_radius} sphere{< -.8090, 1.1137, .2629> dodeca_radius} sphere{< 0 , .2629, 1.3761> dodeca_radius} sphere{< 1.3086 , .2629, .4253> dodeca_radius} sphere{< .8088, .2629, -1.1132> dodeca_radius} sphere{< -.8088, .2629, -1.1132> dodeca_radius} sphere{< -1.3086, .2629, .4253> dodeca_radius} sphere{< 0, -.2629, -1.3761> dodeca_radius} sphere{< -1.3086, -.2629, -.4253> dodeca_radius} sphere{< -.8088, -.2629, 1.1132> dodeca_radius} sphere{< .8088, -.2629, 1.1132> dodeca_radius} sphere{< 1.3086, -.2629, -.4253> dodeca_radius} sphere{< 0 , -1.1137, -.8507> dodeca_radius} sphere{< -.8090 , -1.1137, -.2629> dodeca_radius} sphere{< -.5 , -1.1137, .6882> dodeca_radius} sphere{< .5 , -1.1137, .6882> dodeca_radius} sphere{< .8090, -1.1137, -.2629> dodeca_radius} } #declare dodeca_solid_r = object{dodeca_solid_e scale .7316} #declare dodeca_frame_r = object{dodeca_frame_e scale .7316} #declare icosa_solid_e = mesh { //1 triangle{<0,.9510,0><0,.4253,.8507><.8090,.4253,.2629>} triangle{<0,.9510,0><.8090,.4253,.2629><.5,.4253,-.6882>} triangle{<0,.9510,0><.5,.4253,-.6882><-.5,.4253,-.6882>} triangle{<0,.9510,0><-.5,.4253,-.6882><-.8090,.4253,.2629>} triangle{<0,.9510,0><-.8090,.4253,.2629><0,.4253,.8507>} //2 triangle{<.5,-.4253,.6882><0,.4253,.8507><.8090,.4253,.2629>} triangle{<.8090,-.4253,-.2629><.8090,.4253,.2629><.5,.4253,-.6882>} triangle{<0,-.4253,-.8507><.5,.4253,-.6882><-.5,.4253,-.6882>} triangle{<-.8090,-.4253,-.2629><-.5,.4253,-.6882><-.8090,.4253,.2629>} triangle{<-.5,-.4253,.6882><-.8090,.4253,.2629><0,.4253,.8507>} //3 triangle{<.5,.4253,-.6882><0,-.4253,-.8507><.8090,-.4253,-.2629>} triangle{<.8090,.4253,.2629><.8090,-.4253,-.2629><.5,-.4253,.6882>} triangle{<0,.4253,.8507><.5,-.4253,.6882><-.5,-.4253,.6882>} triangle{<-.8090,.4253,.2629><-.5,-.4253,.6882><-.8090,-.4253,-.2629>} triangle{<-.5,.4253,-.6882><-.8090,-.4253,-.2629><0,-.4253,-.8507>} //4 triangle{<0,-.9510,0><0,-.4253,-.8507><.8090,-.4253,-.2629>} triangle{<0,-.9510,0><.8090,-.4253,-.2629><.5,-.4253,.6882>} triangle{<0,-.9510,0><.5,-.4253,.6882><-.5,-.4253,.6882>} triangle{<0,-.9510,0><-.5,-.4253,.6882><-.8090,-.4253,-.2629>} triangle{<0,-.9510,0><-.8090,-.4253,-.2629><0,-.4253,-.8507>} } #ifndef(icosa_radius) #declare icosa_radius = 0.0500; #end #declare icosa_frame_e = union { cylinder{<0,.9510,0> <0,.4253,.8507> icosa_radius open} cylinder{<0,.9510,0> <.8090,.4253,.2629> icosa_radius open} cylinder{<0,.9510,0> <.5,.4253,-.6882> icosa_radius open} cylinder{<0,.9510,0> <-.5,.4253,-.6882> icosa_radius open} cylinder{<0,.9510,0> <-.8090,.4253,.2629> icosa_radius open} cylinder{<0,.4253,.8507> <.8090,.4253,.2629> icosa_radius open} cylinder{<.8090,.4253,.2629> <.5,.4253,-.6882> icosa_radius open} cylinder{<.5,.4253,-.6882> <-.5,.4253,-.6882> icosa_radius open} cylinder{<-.5,.4253,-.6882> <-.8090,.4253,.2629> icosa_radius open} cylinder{<-.8090,.4253,.2629> <0,.4253,.8507> icosa_radius open} cylinder{<.5,-.4253,.6882> <0,.4253,.8507> icosa_radius open} cylinder{<.8090,-.4253,-.2629> <.8090,.4253,.2629> icosa_radius open} cylinder{<0,-.4253,-.8507> <.5,.4253,-.6882> icosa_radius open} cylinder{<-.8090,-.4253,-.2629> <-.5,.4253,-.6882> icosa_radius open} cylinder{<-.5,-.4253,.6882> <-.8090,.4253,.2629> icosa_radius open} cylinder{<-.5,-.4253,.6882> <0,.4253,.8507> icosa_radius open} cylinder{<.5,-.4253,.6882> <.8090,.4253,.2629> icosa_radius open} cylinder{<.8090,-.4253,-.2629> <.5,.4253,-.6882> icosa_radius open} cylinder{<0,-.4253,-.8507> <-.5,.4253,-.6882> icosa_radius open} cylinder{<-.8090,-.4253,-.2629> <-.8090,.4253,.2629> icosa_radius open} cylinder{ <0,-.4253,-.8507> <-.8090,-.4253,-.2629> icosa_radius open} cylinder{ <-.8090,-.4253,-.2629> <-.5,-.4253,.6882> icosa_radius open} cylinder{ <-.5,-.4253,.6882> <.5,-.4253,.6882> icosa_radius open} cylinder{ <.5,-.4253,.6882> <.8090,-.4253,-.2629> icosa_radius open} cylinder{ <.8090,-.4253,-.2629> <0,-.4253,-.8507> icosa_radius open} cylinder{<0,-.9510,0> <0,-.4253,-.8507> icosa_radius open} cylinder{<0,-.9510,0> <-.8090,-.4253,-.2629> icosa_radius open} cylinder{<0,-.9510,0> <-.5,-.4253,.6882> icosa_radius open} cylinder{<0,-.9510,0> <.5,-.4253,.6882> icosa_radius open} cylinder{<0,-.9510,0> <.8090,-.4253,-.2629> icosa_radius open} sphere{<0,.9510,0> icosa_radius} sphere{<0,.4253,.8507> icosa_radius} sphere{<.8090,.4253,.2629> icosa_radius} sphere{<.5,.4253,-.6882> icosa_radius} sphere{<-.5,.4253,-.6882> icosa_radius} sphere{<-.8090,.4253,.2629> icosa_radius} sphere{<0,-.4253,-.8507> icosa_radius} sphere{<-.8090,-.4253,-.2629> icosa_radius} sphere{<-.5,-.4253,.6882> icosa_radius} sphere{<.5,-.4253,.6882> icosa_radius} sphere{<.8090,-.4253,-.2629> icosa_radius} sphere{<0,-.9510,0> icosa_radius} } #declare icosa_solid_r = object{icosa_solid_e scale 1.0515} #declare icosa_frame_r = object{icosa_frame_e scale 1.0515}