home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Raytrace & Morphing / SOS-RAYTRACE.ISO / programm / raytrace / polyray / dat / misc / stack0.pi < prev    next >
Encoding:
Text File  |  1994-03-12  |  3.3 KB  |  136 lines

  1. // Generic Polyray input File
  2. // Polyray input file: Alexander Enzmann
  3.  
  4. // Set up the camera
  5. viewpoint {
  6.    from <0,10,-25>
  7.    at <0,1,0>
  8.    up <0,1,0>
  9.    angle 35
  10.    resolution 256, 128
  11.    aspect 2
  12.    }
  13.  
  14. background <0, 0, 0>
  15. light 0.7*white, < 10, 20, -10>
  16. light 0.7*white, <-10, 20, -10>
  17. include "../colors.inc"
  18.  
  19. define copper <0.72, 0.45, 0.20>
  20. define brass <0.71, 0.65, 0.26>
  21.  
  22. define Silver texture { metallic { color 0.7*white } }
  23. define Copper texture { metallic { color copper } }
  24. define Brass texture { metallic { color brass } }
  25. define Gold texture { metallic { color gold } }
  26.  
  27. define bradius 1/sin(pi/2)
  28. define b0 <bradius, 0, 0>
  29. define b1 rotate(b0, <0, 1, 0>, 180)
  30.  
  31. define two_sph
  32. object {
  33.      object { sphere b0, 1 }
  34.    + object { sphere b1, 1 }
  35.    }
  36.  
  37. define tradius 1/sin(pi/3)
  38. define t0 <tradius, 0, 0>
  39. define t1 rotate(t0, <0, 1, 0>, 120)
  40. define t2 rotate(t0, <0, 1, 0>, 240)
  41.  
  42. define three_sph
  43. object {
  44.      object { sphere t0, 1 }
  45.    + object { sphere t1, 1 }
  46.    + object { sphere t2, 1 }
  47.    }
  48.  
  49. define cradius 1/sin(pi/4)
  50. define c0 <cradius, 0, 0>
  51. define c1 rotate(c0, <0, 1, 0>, 90)
  52. define c2 rotate(c0, <0, 1, 0>, 180)
  53. define c3 rotate(c0, <0, 1, 0>, 270)
  54.  
  55. define four_sph
  56. object {
  57.      object { sphere c0, 1 }
  58.    + object { sphere c1, 1 }
  59.    + object { sphere c2, 1 }
  60.    + object { sphere c3, 1 }
  61.    }
  62.  
  63. define pradius 1/sin(pi/5)
  64. define p0 <pradius, 0, 0>
  65. define p1 rotate(p0, <0, 1, 0>, 72)
  66. define p2 rotate(p0, <0, 1, 0>, 144)
  67. define p3 rotate(p0, <0, 1, 0>, 216)
  68. define p4 rotate(p0, <0, 1, 0>, 288)
  69.  
  70. define five_sph
  71. object {
  72.      object { sphere p0, 1 }
  73.    + object { sphere p1, 1 }
  74.    + object { sphere p2, 1 }
  75.    + object { sphere p3, 1 }
  76.    + object { sphere p3, 1 }
  77.    }
  78.  
  79. define sq2 <0, sqrt(2), 0>
  80.  
  81. object {
  82.      two_sph
  83.    + two_sph { rotate <0, 90, 0> translate sq2 }
  84.    + two_sph { translate 2*sq2 }
  85.    + two_sph { rotate <0, 90, 0> translate 3*sq2 }
  86.    + two_sph { translate 4*sq2 }
  87.    + two_sph { rotate <0, 90, 0> translate 5*sq2 }
  88.    Copper
  89.    translate <-9, 0, 0>
  90.    }
  91.  
  92. object {
  93.      three_sph
  94.    + three_sph { rotate <0, 60, 0> translate sq2 }
  95.    + three_sph { translate 2*sq2 }
  96.    + three_sph { rotate <0, 60, 0> translate 3*sq2 }
  97.    + three_sph { translate 4*sq2 }
  98.    + three_sph { rotate <0, 60, 0> translate 5*sq2 }
  99.    Brass
  100.    translate <-3, 0, 0>
  101.    }
  102.  
  103. object {
  104.      four_sph
  105.    + four_sph { rotate <0, 45, 0> translate sq2 }
  106.    + four_sph { translate 2*sq2 }
  107.    + four_sph { rotate <0, 45, 0> translate 3*sq2 }
  108.    + four_sph { translate 4*sq2 }
  109.    + four_sph { rotate <0, 45, 0> translate 5*sq2 }
  110.    Silver
  111.    translate < 3, 0, 0>
  112.    }
  113.  
  114. object {
  115.      five_sph
  116.    + five_sph { rotate <0, 36, 0> translate sq2 }
  117.    + five_sph { translate 2*sq2 }
  118.    + five_sph { rotate <0, 36, 0> translate 3*sq2 }
  119.    + five_sph { translate 4*sq2 }
  120.    + five_sph { rotate <0, 36, 0> translate 5*sq2 }
  121.    Gold
  122.    translate < 9, 0, 0>
  123.    }
  124.  
  125. define v0 <1, 0, 0>
  126. define v1 rotate(v0, <0, 1, 0>, 120)
  127. define v2 rotate(v0, <0, 1, 0>, -120)
  128. define tri_fn max(P . v0, max(P . v1, P . v2))
  129. define tri_lookup_fn sawtooth(tri_fn/3)
  130.  
  131. object {
  132.    disc <0, 0, 0>, <0, 1, 0>, 20
  133.    texture { special shiny { color white_marble_map[tri_lookup_fn]
  134.                  position P + 2*dnoise(P, 3) } }
  135.    }
  136.