Metropoli BBS
VIEWER: piece1.pov MODE: TEXT (ASCII)
// Persistence Of Vision raytracer version 2.0 sample file.

// piece I: 
//          by Truman Brown 11/91
//          Close-up of a museum piece in the Woild Museum

// The lighting is intentionally dim when the image is rendered.
// You can enhance the image using PicLab's gamma, brightness, and
// contrast command when you post-process the image.

#include "colors.inc"
#include "textures.inc"
#include "shapes.inc"

camera {
   location  <-36.0, 29.0, -70.0>
   direction <  0.0,  0.0,  2.0  >
   up        <  0.2,  0.8,  0.0  >
   right     <  4/3,  0.0,  0.0  >
   look_at   <  0.0, -8.0,  0.0  >
}

// ----------------------------------------------------------------------------
// lights
// ----------------------------------------------------------------------------
#declare Light1c =  color red 0.1 green 0.1 blue 0.1
#declare Light2c =  color red 0.2 green 0.2 blue 0.2
#declare Light3c =  color red 0.3 green 0.3 blue 0.3
#declare Light4c =  color red 0.4 green 0.4 blue 0.4
#declare Light5c =  color red 0.5 green 0.5 blue 0.5

#declare light1 = light_source { <0.0, 0.0, 0.0>  color Light1c }
#declare light2 = light_source { <0.0, 0.0, 0.0>  color Light2c }
#declare light3 = light_source { <0.0, 0.0, 0.0>  color Light3c }
#declare light4 = light_source { <0.0, 0.0, 0.0>  color Light4c }
#declare light5 = light_source { <0.0, 0.0, 0.0>  color Light5c }

union {
   object { light1 translate <  35,  30, -16> }
   object { light3 translate < -25,  40,  20> }
   object { light2 translate < -48,  30, -20> }
   object { light5 translate <  20, -10, -22> }
   pigment { White }
}

// ----------------------------------------------------------------------------
// textures
// ----------------------------------------------------------------------------
#declare rod_texture1 =
texture {
   pigment { Firebrick }
   finish {
      specular 0.9
      roughness 0.001
      ambient 0.0
      diffuse 0.5
      reflection 0.25
   }
}

#declare loop_texture =
texture {
   pigment { Black }
   finish {
      ambient 0.01
      diffuse 0.45
      specular 1.00
      roughness 0.001
      reflection 0.4
   }
}

#declare innertube_texture =
texture {
   pigment { SteelBlue }
   finish {
      ambient 0.05
      diffuse 0.1
      specular 1.00
      roughness 0.001
      reflection 0.90
   }
}

#declare balls_texture =
texture {
   pigment { White }
   finish {
      ambient 0.01
      diffuse 0.3
      specular 1.00
      roughness 0.001
      reflection 0.85
   }
}

#declare tile1_texture =
texture {
   pigment {
      wood
      turbulence 0.5
      color_map {
         [0.0 0.7  color red 0.93 green 0.710 blue 0.532
         color red 0.98 green 0.810 blue 0.600]
         [0.7 1.01 color red 0.60 green 0.333 blue 0.266
         color red 0.70 green 0.600 blue 0.23]
      }
      rotate 90*y
      scale 5
   }
   finish {
      crand 0.05
      specular 1.0
      roughness 0.001
      ambient 0.05
      diffuse 0.35
      reflection 0.15
   }
}

#declare tile2_texture =
texture {
   pigment {
      wood
      turbulence 0.6
      color_map {
         [0.0 0.8  color red 0.42857 green 0.23810 blue 0.04762
         color red 0.42857 green 0.23810 blue 0.04762]
         [0.8 1.01 color red 0.4     green 0.333   blue 0.066
         color red 0.2     green 0.033   blue 0.033]
      }
      scale 7
   }
   finish {
      crand 0.05
      specular 1.0
      roughness 0.001
      ambient 0.01
      diffuse 0.75
      reflection 0.15
   }
}

#declare frame_texture =
texture {
   Bronze_Texture
   finish {
      specular 1.0
      roughness 0.001
      ambient 0.11
      diffuse 0.8
      reflection 0.85
   }
}

// ----------------------------------------------------------------------------
// torus primatives
// ----------------------------------------------------------------------------
#declare torus1 =
quartic { <
   1.0, 0.0,   0.0,  0.0,   2.0,      /* major radius: 5.0 */
   0.0, 0.0,   2.0,  0.0, -50.5,      /* minor radius: 0.5 */
   0.0, 0.0,   0.0,  0.0,   0.0,      /* outer radius: 5.5 */
   0.0, 0.0,   0.0,  0.0,   0.0,      /* inner radius: 4.5 */
   1.0, 0.0,   0.0,  2.0,   0.0,
   49.5, 0.0,   0.0,  0.0,   0.0,
   1.0, 0.0, -50.50, 0.0, 612.5625 >
}

#declare torus2=
quartic { <
   1.0, 0.0,  0.0,  0.0,  2.0,        /* major radius: 0.8 */
   0.0, 0.0,  2.0,  0.0, -1.36,       /* minor radius: 0.2 */
   0.0, 0.0,  0.0,  0.0,  0.0,        /* outer radius: 1.0 */
   0.0, 0.0,  0.0,  0.0,  0.0,        /* inner radius: 0.6 */
   1.0, 0.0,  0.0,  2.0,  0.0,
   1.2, 0.0,  0.0,  0.0,  0.0,
   1.0, 0.0, -1.36, 0.0,  0.36 >
}

#declare torus3 =
quartic { <
   1.0, 0.0,    0.0, 0.0,     2.0,     /* major radius: 12.0 */
   0.0, 0.0,    2.0, 0.0,  -296.0,     /* minor radius:  2.0 */
   0.0, 0.0,    0.0, 0.0,     0.0,     /* outer radius: 14.0 */
   0.0, 0.0,    0.0, 0.0,     0.0,     /* inner radius: 10.0 */
   1.0, 0.0,    0.0, 2.0,     0.0,
   280.0, 0.0,    0.0, 0.0,     0.0,
   1.0, 0.0, -296.0, 0.0, 19600.0 >
}

#declare torus4 =
quartic { <
   1.0, 0.0,   0.0, 0.0,    2.0,       /* major radius: 7.0 */
   0.0, 0.0,   2.0, 0.0,  -98.5,       /* minor radius: 0.5 */
   0.0, 0.0,   0.0, 0.0,    0.0,       /* outer radius: 7.5 */
   0.0, 0.0,   0.0, 0.0,    0.0,       /* inner radius: 6.5 */
   1.0, 0.0,   0.0, 2.0,    0.0,
   97.5, 0.0,   0.0, 0.0,    0.0,
   1.0, 0.0, -98.5, 0.0, 2376.5625 >
}

// ----------------------------------------------------------------------------
// piece definitions
// ----------------------------------------------------------------------------
#declare halfring =
object {
   torus1
   rotate 90*x
   clipped_by {
      plane { -y, 0 }
   }
   texture { rod_texture1 }
   bounded_by {
      sphere { <0, 0, 0>, 5.51  }
   }
   translate -12*x
}

#declare halfring_array =
union {
   object { halfring rotate  -10*y  }
   object { halfring rotate  -40*y  }
   object { halfring rotate -100*y  }
   object { halfring rotate -130*y  }
   object { halfring rotate -190*y  }
   object { halfring rotate -220*y  }
   object { halfring rotate -280*y  }
   object { halfring rotate -310*y  }

   bounded_by {
      sphere { <0, 0, 0>, 17.51 }
   }
}

#declare quarterring =
object {
   torus1
   rotate 90*x
   clipped_by {
      plane { y, 0  }
      plane { x, 0  }
   }
   texture {
      rod_texture1
   }
   bounded_by {
      sphere { <-2.75, -2.75, 0>, 3.9  }
   }
   translate <-12, 0, 0>
}

#declare quarterring_array =
union {
   object { quarterring rotate  -10*y  }
   object { quarterring rotate  -40*y  }
   object { quarterring rotate -100*y  }
   object { quarterring rotate -130*y  }
   object { quarterring rotate -190*y  }
   object { quarterring rotate -220*y  }
   object { quarterring rotate -280*y  }
   object { quarterring rotate -310*y  }
   bounded_by {
      sphere { <0, 0, 0>, 17.51  }
   }
}

#declare ringball =
sphere {
   <0, -5.0, 0>, 1.0
   texture {
      rod_texture1
   }
   translate <-12, 0, 0>
}

#declare ringball_array =
union {
   object { ringball rotate  -10*y  }
   object { ringball rotate  -40*y  }
   object { ringball rotate -100*y  }
   object { ringball rotate -130*y  }
   object { ringball rotate -190*y  }
   object { ringball rotate -220*y  }
   object { ringball rotate -280*y  }
   object { ringball rotate -310*y  }
   bounded_by {
      sphere { <0, 0, 0>, 13.5  }
   }
}

#declare pole =
object {
   Disk_Y
   rotate 180*x
   scale <0.5, 20, 0.5>
   translate <5, 0, 0>

   texture {
      rod_texture1
   }
   translate <-12, 0, 0>
}

#declare pole_array =
union {
   object { pole rotate  -10*y  }
   object { pole rotate  -40*y  }
   object { pole rotate -100*y  }
   object { pole rotate -130*y  }
   object { pole rotate -190*y  }
   object { pole rotate -220*y  }
   object { pole rotate -280*y  }
   object { pole rotate -310*y  }
   bounded_by {
      sphere { <0, -10, 0>, 13.5  }
   }
}

#declare blueloop =
object {
   torus2
   rotate 90*z
   texture {
      loop_texture
   }
   bounded_by {
      sphere { <0, 0, 0>, 1.1 }
   }
}

#declare blueloop_set =
union {
   object { blueloop translate 5*y rotate 0*z  }
   object { blueloop translate 5*y rotate +90*z  }
   object { blueloop translate 5*y rotate -90*z  }
   bounded_by {
      sphere { <0, 0, 0>, 6.51  }
   }
   translate -12*x
}

#declare blueloop_array =
union {
   object { blueloop_set rotate  -10*y  }
   object { blueloop_set rotate  -40*y  }
   object { blueloop_set rotate -100*y  }
   object { blueloop_set rotate -130*y  }
   object { blueloop_set rotate -190*y  }
   object { blueloop_set rotate -220*y  }
   object { blueloop_set rotate -280*y  }
   object { blueloop_set rotate -310*y  }
   bounded_by {
      sphere { <0, 0, 0>, 18.51 }
   }
}

#declare basering =
object {
   torus4
   texture {
      rod_texture1
   }
   bounded_by {
      sphere { <0, 0, 0>, 7.6 }
   }
   translate <0, -20.5, 0>
}

#declare innertube =
object {
   torus3
   texture {
      innertube_texture
   }
   bounded_by {
      sphere { <0, 0, 0>, 14.1 }
   }
}

#declare structurebase =
union {
   object { halfring_array     }
   object { quarterring_array  }
   object { ringball_array     }
   object { blueloop_array     }
   object { pole_array         }
   object { basering   }
   object { innertube  }
   bounded_by {
      sphere { <0, 0, 0>, 22  }
   }
}

#declare balls =
sphere {
   <0, 0, 0>, 4.0
   texture {
      balls_texture
   }
}

#declare block1 =
intersection {
   object {
      Cube
      scale <10, 1, 10>
   }
   object {
      Cylinder_Y
      scale <6, 1, 6>
      inverse
   }

   texture {
      tile1_texture
   }
   bounded_by {
      sphere { <0, 0, 0>, 15 }
   }
}

#declare block2 =
intersection {
   object {
      Cube
      scale <10, 1, 10>
   }
   object {
      Cylinder_Y
      scale <6, 1 ,6>
      inverse
   }

   texture {
      tile2_texture
   }
   bounded_by {
      sphere { <0, 0, 0>, 15 }
   }
}

#declare frame =
object {
   Cube
   scale <21, 1.5, 21>

   clipped_by {
      object {
         Cube
         scale <20, 2, 20>
         inverse
      }
   }
   texture { frame_texture  }
}

#declare bigtile =
union {
   object { block1 translate < 10, -1,  10>  }
   object { block1 translate <-10, -1, -10>  }
   object { block2 translate <-10, -1,  10>  }
   object { block2 translate < 10, -1, -10>  }
   object { frame  }

   bounded_by { box { <-21.1, -2.6, -21.1>, <21.1, 0.6, 21.1> } }
}

#declare floor =
object { bigtile }

// color debugger
// object { Cylinder_Y scale <3, 1, 3> texture { rod_texture1 } }
// object { Cylinder_X scale <1, 3, 3> texture { rod_texture1 } }

//-----------------------------------------------------------------------------
// Put it all together and render it
//-----------------------------------------------------------------------------
object { structurebase  }

union {
   object { balls translate <0,  0, 0> }
   object { balls translate <0, -8, 0> }
   object { balls translate <0, -16, 0> }

   bounded_by {
      object {
         Cylinder_Y
         scale <4.1, 1, 4.1>
      }
   }
}

object {
   floor
   rotate 45*y
   translate -20*y
}
[ RETURN TO DIRECTORY ]