home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #7 / amigamamagazinepolishissue1998.iso / varia / povray3 / povray3_fpu / pov3demo / anim / pentmap / pentmap.pov < prev   
Text File  |  1997-12-12  |  20KB  |  344 lines

  1. // Pentspir.pov  - Spiraling blob animation
  2. // Jeff Bowermaster - Splat! Graphics 12/29/95
  3.  
  4. // NOTE:
  5.  
  6. // Requires a 4x1 aspect (640x160)
  7.  
  8. // Animation:
  9. // povray +ipentmap.pov +opm0.tga +B50 +SF0 +EF300 +KI0.0 +KF1.0 +KFI0 +KFF300 +D0 +KC
  10.  
  11. #declare Wild_Map =
  12. color_map {
  13.    [0.000, 0.021 color rgb <0.010, 0.010, 0.010>
  14.                  color rgb <0.040, 0.010, 0.020>]
  15.    [0.021, 0.067 color rgb <0.040, 0.010, 0.020>
  16.                  color rgb <0.105, 0.080, 0.060>]
  17.    [0.067, 0.117 color rgb <0.105, 0.080, 0.060>
  18.                  color rgb <0.275, 0.220, 0.140>]
  19.    [0.117, 0.167 color rgb <0.275, 0.220, 0.140>
  20.                  color rgb <0.490, 0.155, 0.260>]
  21.    [0.167, 0.230 color rgb <0.490, 0.155, 0.260>
  22.                  color rgb <0.615, 0.060, 0.425>]
  23.    [0.230, 0.305 color rgb <0.615, 0.060, 0.425>
  24.                  color rgb <0.860, 0.140, 0.485>]
  25.    [0.305, 0.385 color rgb <0.860, 0.140, 0.485>
  26.                  color rgb <1.150, 0.325, 0.335>]
  27.    [0.385, 0.469 color rgb <1.150, 0.325, 0.335>
  28.                  color rgb <1.235, 0.560, 0.125>]
  29.    [0.469, 0.548 color rgb <1.235, 0.560, 0.125>
  30.                  color rgb <0.980, 0.665, 0.035>]
  31.    [0.548, 0.623 color rgb <0.980, 0.665, 0.035>
  32.                  color rgb <0.590, 0.550, 0.160>]
  33.    [0.623, 0.703 color rgb <0.590, 0.550, 0.160>
  34.                  color rgb <0.270, 0.320, 0.370>]
  35.    [0.703, 0.787 color rgb <0.270, 0.320, 0.370>
  36.                  color rgb <0.095, 0.165, 0.230>]
  37.    [0.787, 0.891 color rgb <0.095, 0.165, 0.230>
  38.                  color rgb <0.020, 0.145, 0.575>]
  39.    [0.891, 0.950 color rgb <0.020, 0.145, 0.575>
  40.                  color rgb <0.005, 0.140, 0.425>]
  41.    [0.950, 1.000 color rgb <0.005, 0.140, 0.425>
  42.                  color rgb <0.010, 0.010, 0.010>]
  43. }
  44.  
  45. #declare shiny_mess = 
  46.  texture{
  47.    pigment{
  48.     marble
  49.     turbulence 1
  50.     octaves 4
  51.     omega 0.5
  52.     lambda 4
  53.     color_map {Wild_Map }
  54.    }
  55.    finish{phong 0.8 phong_size 200}
  56.  }
  57.  
  58. #include "colors.inc"
  59. #include "textures.inc"
  60.  
  61. // Sphere textures could also be a texture map (not included)
  62. #declare shiny_mess =
  63. texture {
  64.   pigment {
  65.    image_map {
  66.      gif "plasma2.gif"
  67.      map_type 1
  68.    }
  69.   }
  70.   finish {Shiny }
  71. }
  72.  
  73.  
  74. #declare shiny_yellow = 
  75. texture {
  76.    pigment { rgb <1.2,0.9,0> }
  77.    finish  { Shiny }
  78. }
  79.  
  80. camera {
  81.    location  <0, 0, -6>
  82.    look_at  <0, 0, 0>
  83.    angle 47
  84.    right x*1/4
  85.    right <4,0,0>
  86. }
  87.  
  88. light_source { <-5, 1, -8> colour red 1.0 green 1.0 blue 1.0 }
  89. light_source { < 5, 1, -8> colour red 1.0 green 1.0 blue 1.0 }
  90. light_source { < 0, 5, -2> colour red 1.0 green 1.0 blue 1.0 }
  91.  
  92. // setup the initial spiral
  93.  
  94. #declare move = 0.95  // static x-distance per blob
  95. #declare px = 0.2     // semi-random spacing parameter  (offset per blob)
  96. #declare pr = 0.3     // amount of radial in/out
  97.  
  98. #declare bx = -6.7    // seed element position
  99. #declare by = 1
  100. #declare bz = 0
  101.  
  102. // gaussian multiplier to the pertubation function for the spheres
  103. // dependency on the clock causes the effect to travel from left to right
  104.  
  105. // w is the width of the effect
  106. #declare w = 0.1
  107.  
  108. #declare  g1 = 1 / exp(((clock - .2) / w) * ((clock - .2) / w))
  109. #declare  g2 = 1 / exp(((clock - .25) / w) * ((clock - .25) / w))
  110. #declare  g3 = 1 / exp(((clock - .3) / w) * ((clock - .3) / w))
  111. #declare  g4 = 1 / exp(((clock - .35) / w) * ((clock - .35) / w))
  112. #declare  g5 = 1 / exp(((clock - .4) / w) * ((clock - .4) / w))
  113. #declare  g6 = 1 / exp(((clock - .45) / w) * ((clock - .45) / w))
  114. #declare  g7 = 1 / exp(((clock - .5) / w) * ((clock - .5) / w))
  115. #declare  g8 = 1 / exp(((clock - .55) / w) * ((clock - .55) / w))
  116. #declare  g9 = 1 / exp(((clock - .6) / w) * ((clock - .6) / w))
  117. #declare g10 = 1 / exp(((clock - .65) / w) * ((clock - .65) / w))
  118. #declare g11 = 1 / exp(((clock - .7) / w) * ((clock - .7) / w))
  119. #declare g12 = 1 / exp(((clock - .75) / w) * ((clock - .75) / w))
  120. #declare g13 = 1 / exp(((clock - .8) / w) * ((clock - .8) / w))
  121.  
  122. // sinusoidally modify the initial height of the seed element
  123. // gosh I could sure go for a loop function in a ray tracer right about now <g>
  124.  
  125. #declare y01 =  g1*pr*sin((clock*5+px*1)*2*pi)
  126. #declare y02 =  g2*pr*sin((clock*5+px*2)*2*pi)
  127. #declare y03 =  g3*pr*sin((clock*5+px*3)*2*pi)
  128. #declare y04 =  g4*pr*sin((clock*5+px*4)*2*pi)
  129. #declare y05 =  g5*pr*sin((clock*5+px*5)*2*pi)
  130. #declare y06 =  g6*pr*sin((clock*5+px*6)*2*pi)
  131. #declare y07 =  g7*pr*sin((clock*5+px*7)*2*pi)
  132. #declare y08 =  g8*pr*sin((clock*5+px*8)*2*pi)
  133. #declare y09 =  g9*pr*sin((clock*5+px*9)*2*pi)
  134. #declare y10 = g10*pr*sin((clock*5+px*10)*2*pi)
  135. #declare y11 = g11*pr*sin((clock*5+px*11)*2*pi)
  136. #declare y12 = g12*pr*sin((clock*5+px*12)*2*pi)
  137. #declare y13 = g13*pr*sin((clock*5+px*13)*2*pi)
  138.  
  139. #declare y14 =  g1*pr*sin((clock*5+px*14)*2*pi)
  140. #declare y15 =  g2*pr*sin((clock*5+px*15)*2*pi)
  141. #declare y16 =  g3*pr*sin((clock*5+px*16)*2*pi)
  142. #declare y17 =  g4*pr*sin((clock*5+px*17)*2*pi)
  143. #declare y18 =  g5*pr*sin((clock*5+px*18)*2*pi)
  144. #declare y19 =  g6*pr*sin((clock*5+px*19)*2*pi)
  145. #declare y20 =  g7*pr*sin((clock*5+px*20)*2*pi)
  146. #declare y21 =  g8*pr*sin((clock*5+px*21)*2*pi)
  147. #declare y22 =  g9*pr*sin((clock*5+px*22)*2*pi)
  148. #declare y23 = g10*pr*sin((clock*5+px*23)*2*pi)
  149. #declare y24 = g11*pr*sin((clock*5+px*24)*2*pi)
  150. #declare y25 = g12*pr*sin((clock*5+px*25)*2*pi)
  151. #declare y26 = g13*pr*sin((clock*5+px*26)*2*pi)
  152.  
  153. #declare y27 =  g1*pr*sin((clock*5+px*27)*2*pi)
  154. #declare y28 =  g2*pr*sin((clock*5+px*28)*2*pi)
  155. #declare y29 =  g3*pr*sin((clock*5+px*29)*2*pi)
  156. #declare y30 =  g4*pr*sin((clock*5+px*30)*2*pi)
  157. #declare y31 =  g5*pr*sin((clock*5+px*31)*2*pi)
  158. #declare y32 =  g6*pr*sin((clock*5+px*32)*2*pi)
  159. #declare y33 =  g7*pr*sin((clock*5+px*33)*2*pi)
  160. #declare y34 =  g8*pr*sin((clock*5+px*34)*2*pi)
  161. #declare y35 =  g9*pr*sin((clock*5+px*35)*2*pi)
  162. #declare y36 = g10*pr*sin((clock*5+px*36)*2*pi)
  163. #declare y37 = g11*pr*sin((clock*5+px*37)*2*pi)
  164. #declare y38 = g12*pr*sin((clock*5+px*38)*2*pi)
  165. #declare y39 = g13*pr*sin((clock*5+px*39)*2*pi)
  166.  
  167. #declare y40 =  g1*pr*sin((clock*5+px*40)*2*pi)
  168. #declare y41 =  g2*pr*sin((clock*5+px*41)*2*pi)
  169. #declare y42 =  g3*pr*sin((clock*5+px*42)*2*pi)
  170. #declare y43 =  g4*pr*sin((clock*5+px*43)*2*pi)
  171. #declare y44 =  g5*pr*sin((clock*5+px*44)*2*pi)
  172. #declare y45 =  g6*pr*sin((clock*5+px*45)*2*pi)
  173. #declare y46 =  g7*pr*sin((clock*5+px*46)*2*pi)
  174. #declare y47 =  g8*pr*sin((clock*5+px*47)*2*pi)
  175. #declare y48 =  g9*pr*sin((clock*5+px*48)*2*pi)
  176. #declare y49 = g10*pr*sin((clock*5+px*49)*2*pi)
  177. #declare y50 = g11*pr*sin((clock*5+px*50)*2*pi)
  178. #declare y51 = g12*pr*sin((clock*5+px*51)*2*pi)
  179. #declare y52 = g13*pr*sin((clock*5+px*52)*2*pi)
  180.  
  181. #declare y53 =  g1*pr*sin((clock*5+px*53)*2*pi)
  182. #declare y54 =  g2*pr*sin((clock*5+px*54)*2*pi)
  183. #declare y55 =  g3*pr*sin((clock*5+px*55)*2*pi)
  184. #declare y56 =  g4*pr*sin((clock*5+px*56)*2*pi)
  185. #declare y57 =  g5*pr*sin((clock*5+px*57)*2*pi)
  186. #declare y58 =  g6*pr*sin((clock*5+px*58)*2*pi)
  187. #declare y59 =  g7*pr*sin((clock*5+px*59)*2*pi)
  188. #declare y60 =  g8*pr*sin((clock*5+px*60)*2*pi)
  189. #declare y61 =  g9*pr*sin((clock*5+px*61)*2*pi)
  190. #declare y62 = g10*pr*sin((clock*5+px*62)*2*pi)
  191. #declare y63 = g11*pr*sin((clock*5+px*63)*2*pi)
  192. #declare y64 = g12*pr*sin((clock*5+px*64)*2*pi)
  193. #declare y65 = g13*pr*sin((clock*5+px*65)*2*pi)
  194.  
  195. #declare s01 = vrotate(<bx,by+y01,bz>,<  0,0,0>) + <move*1, 0,0>
  196. #declare s02 = vrotate(<bx,by+y02,bz>,< 40,0,0>) + <move*2, 0,0>
  197. #declare s03 = vrotate(<bx,by+y03,bz>,< 80,0,0>) + <move*3, 0,0>
  198. #declare s04 = vrotate(<bx,by+y04,bz>,<120,0,0>) + <move*4, 0,0>
  199. #declare s05 = vrotate(<bx,by+y05,bz>,<160,0,0>) + <move*5, 0,0>
  200. #declare s06 = vrotate(<bx,by+y06,bz>,<200,0,0>) + <move*6, 0,0>
  201. #declare s07 = vrotate(<bx,by+y07,bz>,<240,0,0>) + <move*7, 0,0>
  202. #declare s08 = vrotate(<bx,by+y08,bz>,<280,0,0>) + <move*8, 0,0>
  203. #declare s09 = vrotate(<bx,by+y09,bz>,<320,0,0>) + <move*9, 0,0>
  204. #declare s10 = vrotate(<bx,by+y10,bz>,<  0,0,0>) + <move*10,0,0>
  205. #declare s11 = vrotate(<bx,by+y11,bz>,< 40,0,0>) + <move*11,0,0>
  206. #declare s12 = vrotate(<bx,by+y12,bz>,< 80,0,0>) + <move*12,0,0>
  207. #declare s13 = vrotate(<bx,by+y13,bz>,<120,0,0>) + <move*13,0,0>
  208.  
  209. #declare s14 = vrotate(<bx,by+y14,bz>,<  0+72,0,0>) + <move*1, 0,0>
  210. #declare s15 = vrotate(<bx,by+y15,bz>,< 40+72,0,0>) + <move*2, 0,0>
  211. #declare s16 = vrotate(<bx,by+y16,bz>,< 80+72,0,0>) + <move*3, 0,0>
  212. #declare s17 = vrotate(<bx,by+y17,bz>,<120+72,0,0>) + <move*4, 0,0>
  213. #declare s18 = vrotate(<bx,by+y18,bz>,<160+72,0,0>) + <move*5, 0,0>
  214. #declare s19 = vrotate(<bx,by+y19,bz>,<200+72,0,0>) + <move*6, 0,0>
  215. #declare s20 = vrotate(<bx,by+y20,bz>,<240+72,0,0>) + <move*7, 0,0>
  216. #declare s21 = vrotate(<bx,by+y21,bz>,<280+72,0,0>) + <move*8, 0,0>
  217. #declare s22 = vrotate(<bx,by+y22,bz>,<320+72,0,0>) + <move*9, 0,0>
  218. #declare s23 = vrotate(<bx,by+y23,bz>,<  0+72,0,0>) + <move*10,0,0>
  219. #declare s24 = vrotate(<bx,by+y24,bz>,< 40+72,0,0>) + <move*11,0,0>
  220. #declare s25 = vrotate(<bx,by+y25,bz>,< 80+72,0,0>) + <move*12,0,0>
  221. #declare s26 = vrotate(<bx,by+y26,bz>,<120+72,0,0>) + <move*13,0,0>
  222.  
  223. #declare s27 = vrotate(<bx,by+y27,bz>,<  0+144,0,0>) + <move*1, 0,0>
  224. #declare s28 = vrotate(<bx,by+y28,bz>,< 40+144,0,0>) + <move*2, 0,0>
  225. #declare s29 = vrotate(<bx,by+y29,bz>,< 80+144,0,0>) + <move*3, 0,0>
  226. #declare s30 = vrotate(<bx,by+y30,bz>,<120+144,0,0>) + <move*4, 0,0>
  227. #declare s31 = vrotate(<bx,by+y31,bz>,<160+144,0,0>) + <move*5, 0,0>
  228. #declare s32 = vrotate(<bx,by+y32,bz>,<200+144,0,0>) + <move*6, 0,0>
  229. #declare s33 = vrotate(<bx,by+y33,bz>,<240+144,0,0>) + <move*7, 0,0>
  230. #declare s34 = vrotate(<bx,by+y34,bz>,<280+144,0,0>) + <move*8, 0,0>
  231. #declare s35 = vrotate(<bx,by+y35,bz>,<320+144,0,0>) + <move*9, 0,0>
  232. #declare s36 = vrotate(<bx,by+y36,bz>,<  0+144,0,0>) + <move*10,0,0>
  233. #declare s37 = vrotate(<bx,by+y37,bz>,< 40+144,0,0>) + <move*11,0,0>
  234. #declare s38 = vrotate(<bx,by+y38,bz>,< 80+144,0,0>) + <move*12,0,0>
  235. #declare s39 = vrotate(<bx,by+y39,bz>,<120+144,0,0>) + <move*13,0,0>
  236.  
  237. #declare s40 = vrotate(<bx,by+y40,bz>,<  0+216,0,0>) + <move*1, 0,0>
  238. #declare s41 = vrotate(<bx,by+y41,bz>,< 40+216,0,0>) + <move*2, 0,0>
  239. #declare s42 = vrotate(<bx,by+y42,bz>,< 80+216,0,0>) + <move*3, 0,0>
  240. #declare s43 = vrotate(<bx,by+y43,bz>,<120+216,0,0>) + <move*4, 0,0>
  241. #declare s44 = vrotate(<bx,by+y44,bz>,<160+216,0,0>) + <move*5, 0,0>
  242. #declare s45 = vrotate(<bx,by+y45,bz>,<200+216,0,0>) + <move*6, 0,0>
  243. #declare s46 = vrotate(<bx,by+y46,bz>,<240+216,0,0>) + <move*7, 0,0>
  244. #declare s47 = vrotate(<bx,by+y47,bz>,<280+216,0,0>) + <move*8, 0,0>
  245. #declare s48 = vrotate(<bx,by+y48,bz>,<320+216,0,0>) + <move*9, 0,0>
  246. #declare s49 = vrotate(<bx,by+y49,bz>,<  0+216,0,0>) + <move*10,0,0>
  247. #declare s50 = vrotate(<bx,by+y50,bz>,< 40+216,0,0>) + <move*11,0,0>
  248. #declare s51 = vrotate(<bx,by+y51,bz>,< 80+216,0,0>) + <move*12,0,0>
  249. #declare s52 = vrotate(<bx,by+y52,bz>,<120+216,0,0>) + <move*13,0,0>
  250.  
  251. #declare s53 = vrotate(<bx,by+y53,bz>,<  0+288,0,0>) + <move*1, 0,0>
  252. #declare s54 = vrotate(<bx,by+y54,bz>,< 40+288,0,0>) + <move*2, 0,0>
  253. #declare s55 = vrotate(<bx,by+y55,bz>,< 80+288,0,0>) + <move*3, 0,0>
  254. #declare s56 = vrotate(<bx,by+y56,bz>,<120+288,0,0>) + <move*4, 0,0>
  255. #declare s57 = vrotate(<bx,by+y57,bz>,<160+288,0,0>) + <move*5, 0,0>
  256. #declare s58 = vrotate(<bx,by+y58,bz>,<200+288,0,0>) + <move*6, 0,0>
  257. #declare s59 = vrotate(<bx,by+y59,bz>,<240+288,0,0>) + <move*7, 0,0>
  258. #declare s60 = vrotate(<bx,by+y60,bz>,<280+288,0,0>) + <move*8, 0,0>
  259. #declare s61 = vrotate(<bx,by+y61,bz>,<320+288,0,0>) + <move*9, 0,0>
  260. #declare s62 = vrotate(<bx,by+y62,bz>,<  0+288,0,0>) + <move*10,0,0>
  261. #declare s63 = vrotate(<bx,by+y63,bz>,< 40+288,0,0>) + <move*11,0,0>
  262. #declare s64 = vrotate(<bx,by+y64,bz>,< 80+288,0,0>) + <move*12,0,0>
  263. #declare s65 = vrotate(<bx,by+y65,bz>,<120+288,0,0>) + <move*13,0,0>
  264.  
  265. #declare radius1 = 0.92
  266. #declare strength1 = 0.6
  267.  
  268. #declare spire = 
  269. blob {
  270.   threshold 0.5
  271.   cylinder { <-5.5 ,0, 0 >, <5.5 ,0, 0 >,0.8,0.75 texture { shiny_yellow }}
  272.   sphere { s01,radius1+y01,strength1 texture { shiny_mess rotate < 1*40+0*72,0,0> translate s01 rotate <clock*360,0,0> }}
  273.   sphere { s02,radius1+y02,strength1 texture { shiny_mess rotate < 2*40+0*72,0,0> translate s02 rotate <clock*360,0,0> }}
  274.   sphere { s03,radius1+y03,strength1 texture { shiny_mess rotate < 3*40+0*72,0,0> translate s03 rotate <clock*360,0,0> }}
  275.   sphere { s04,radius1+y04,strength1 texture { shiny_mess rotate < 4*40+0*72,0,0> translate s04 rotate <clock*360,0,0> }}
  276.   sphere { s05,radius1+y05,strength1 texture { shiny_mess rotate < 5*40+0*72,0,0> translate s05 rotate <clock*360,0,0> }}
  277.   sphere { s06,radius1+y06,strength1 texture { shiny_mess rotate < 6*40+0*72,0,0> translate s06 rotate <clock*360,0,0> }}
  278.   sphere { s07,radius1+y07,strength1 texture { shiny_mess rotate < 7*40+0*72,0,0> translate s07 rotate <clock*360,0,0> }}
  279.   sphere { s08,radius1+y08,strength1 texture { shiny_mess rotate < 8*40+0*72,0,0> translate s08 rotate <clock*360,0,0> }}
  280.   sphere { s09,radius1+y09,strength1 texture { shiny_mess rotate < 9*40+0*72,0,0> translate s09 rotate <clock*360,0,0> }}
  281.   sphere { s10,radius1+y10,strength1 texture { shiny_mess rotate <10*40+0*72,0,0> translate s10 rotate <clock*360,0,0> }}
  282.   sphere { s11,radius1+y11,strength1 texture { shiny_mess rotate <11*40+0*72,0,0> translate s11 rotate <clock*360,0,0> }}
  283.   sphere { s12,radius1+y12,strength1 texture { shiny_mess rotate <12*40+0*72,0,0> translate s12 rotate <clock*360,0,0> }}
  284.   sphere { s13,radius1+y13,strength1 texture { shiny_mess rotate <13*40+0*72,0,0> translate s13 rotate <clock*360,0,0> }}
  285.  
  286.   sphere { s14,radius1+y14,strength1 texture { shiny_mess rotate < 1*40+1*72,0,0> translate s14 rotate <clock*360,0,0> }}
  287.   sphere { s15,radius1+y15,strength1 texture { shiny_mess rotate < 2*40+1*72,0,0> translate s15 rotate <clock*360,0,0> }}
  288.   sphere { s16,radius1+y16,strength1 texture { shiny_mess rotate < 3*40+1*72,0,0> translate s16 rotate <clock*360,0,0> }}
  289.   sphere { s17,radius1+y17,strength1 texture { shiny_mess rotate < 4*40+1*72,0,0> translate s17 rotate <clock*360,0,0> }}
  290.   sphere { s18,radius1+y18,strength1 texture { shiny_mess rotate < 5*40+1*72,0,0> translate s18 rotate <clock*360,0,0> }}
  291.   sphere { s19,radius1+y19,strength1 texture { shiny_mess rotate < 6*40+1*72,0,0> translate s19 rotate <clock*360,0,0> }}
  292.   sphere { s20,radius1+y20,strength1 texture { shiny_mess rotate < 7*40+1*72,0,0> translate s20 rotate <clock*360,0,0> }}
  293.   sphere { s21,radius1+y21,strength1 texture { shiny_mess rotate < 8*40+1*72,0,0> translate s21 rotate <clock*360,0,0> }}
  294.   sphere { s22,radius1+y22,strength1 texture { shiny_mess rotate < 9*40+1*72,0,0> translate s22 rotate <clock*360,0,0> }}
  295.   sphere { s23,radius1+y23,strength1 texture { shiny_mess rotate <10*40+1*72,0,0> translate s23 rotate <clock*360,0,0> }}
  296.   sphere { s24,radius1+y24,strength1 texture { shiny_mess rotate <11*40+1*72,0,0> translate s24 rotate <clock*360,0,0> }}
  297.   sphere { s25,radius1+y25,strength1 texture { shiny_mess rotate <12*40+1*72,0,0> translate s25 rotate <clock*360,0,0> }}
  298.   sphere { s26,radius1+y26,strength1 texture { shiny_mess rotate <13*40+1*72,0,0> translate s26 rotate <clock*360,0,0> }}
  299.  
  300.   sphere { s27,radius1+y27,strength1 texture { shiny_mess rotate < 1*40+2*72,0,0> translate s27 rotate <clock*360,0,0> }}             
  301.   sphere { s28,radius1+y28,strength1 texture { shiny_mess rotate < 2*40+2*72,0,0> translate s28 rotate <clock*360,0,0> }}             
  302.   sphere { s29,radius1+y29,strength1 texture { shiny_mess rotate < 3*40+2*72,0,0> translate s29 rotate <clock*360,0,0> }}             
  303.   sphere { s30,radius1+y30,strength1 texture { shiny_mess rotate < 4*40+2*72,0,0> translate s30 rotate <clock*360,0,0> }}             
  304.   sphere { s31,radius1+y31,strength1 texture { shiny_mess rotate < 5*40+2*72,0,0> translate s31 rotate <clock*360,0,0> }}             
  305.   sphere { s32,radius1+y32,strength1 texture { shiny_mess rotate < 6*40+2*72,0,0> translate s32 rotate <clock*360,0,0> }}             
  306.   sphere { s33,radius1+y33,strength1 texture { shiny_mess rotate < 7*40+2*72,0,0> translate s33 rotate <clock*360,0,0> }}             
  307.   sphere { s34,radius1+y34,strength1 texture { shiny_mess rotate < 8*40+2*72,0,0> translate s34 rotate <clock*360,0,0> }}
  308.   sphere { s35,radius1+y35,strength1 texture { shiny_mess rotate < 9*40+2*72,0,0> translate s35 rotate <clock*360,0,0> }}
  309.   sphere { s36,radius1+y36,strength1 texture { shiny_mess rotate <10*40+2*72,0,0> translate s36 rotate <clock*360,0,0> }}
  310.   sphere { s37,radius1+y37,strength1 texture { shiny_mess rotate <11*40+2*72,0,0> translate s37 rotate <clock*360,0,0> }}
  311.   sphere { s38,radius1+y38,strength1 texture { shiny_mess rotate <12*40+2*72,0,0> translate s38 rotate <clock*360,0,0> }}
  312.   sphere { s39,radius1+y39,strength1 texture { shiny_mess rotate <13*40+2*72,0,0> translate s39 rotate <clock*360,0,0> }}
  313.  
  314.   sphere { s40,radius1+y40,strength1 texture { shiny_mess rotate < 1*40+3*72,0,0> translate s40 rotate <clock*360,0,0> }}
  315.   sphere { s41,radius1+y41,strength1 texture { shiny_mess rotate < 2*40+3*72,0,0> translate s41 rotate <clock*360,0,0> }}
  316.   sphere { s42,radius1+y42,strength1 texture { shiny_mess rotate < 3*40+3*72,0,0> translate s42 rotate <clock*360,0,0> }}
  317.   sphere { s43,radius1+y43,strength1 texture { shiny_mess rotate < 4*40+3*72,0,0> translate s43 rotate <clock*360,0,0> }}
  318.   sphere { s44,radius1+y44,strength1 texture { shiny_mess rotate < 5*40+3*72,0,0> translate s44 rotate <clock*360,0,0> }}
  319.   sphere { s45,radius1+y45,strength1 texture { shiny_mess rotate < 6*40+3*72,0,0> translate s45 rotate <clock*360,0,0> }}
  320.   sphere { s46,radius1+y46,strength1 texture { shiny_mess rotate < 7*40+3*72,0,0> translate s46 rotate <clock*360,0,0> }}
  321.   sphere { s47,radius1+y47,strength1 texture { shiny_mess rotate < 8*40+3*72,0,0> translate s47 rotate <clock*360,0,0> }}
  322.   sphere { s48,radius1+y48,strength1 texture { shiny_mess rotate < 9*40+3*72,0,0> translate s48 rotate <clock*360,0,0> }}
  323.   sphere { s49,radius1+y49,strength1 texture { shiny_mess rotate <10*40+3*72,0,0> translate s49 rotate <clock*360,0,0> }}
  324.   sphere { s50,radius1+y50,strength1 texture { shiny_mess rotate <11*40+3*72,0,0> translate s50 rotate <clock*360,0,0> }}
  325.   sphere { s51,radius1+y51,strength1 texture { shiny_mess rotate <12*40+3*72,0,0> translate s51 rotate <clock*360,0,0> }}
  326.   sphere { s52,radius1+y52,strength1 texture { shiny_mess rotate <13*40+3*72,0,0> translate s52 rotate <clock*360,0,0> }}
  327.  
  328.   sphere { s53,radius1+y53,strength1 texture { shiny_mess rotate < 1*40+4*72,0,0> translate s53 rotate <clock*360,0,0> }}
  329.   sphere { s54,radius1+y54,strength1 texture { shiny_mess rotate < 2*40+4*72,0,0> translate s54 rotate <clock*360,0,0> }}
  330.   sphere { s55,radius1+y55,strength1 texture { shiny_mess rotate < 3*40+4*72,0,0> translate s55 rotate <clock*360,0,0> }}
  331.   sphere { s56,radius1+y56,strength1 texture { shiny_mess rotate < 4*40+4*72,0,0> translate s56 rotate <clock*360,0,0> }}
  332.   sphere { s57,radius1+y57,strength1 texture { shiny_mess rotate < 5*40+4*72,0,0> translate s57 rotate <clock*360,0,0> }}
  333.   sphere { s58,radius1+y58,strength1 texture { shiny_mess rotate < 6*40+4*72,0,0> translate s58 rotate <clock*360,0,0> }}
  334.   sphere { s59,radius1+y59,strength1 texture { shiny_mess rotate < 7*40+4*72,0,0> translate s59 rotate <clock*360,0,0> }}
  335.   sphere { s60,radius1+y60,strength1 texture { shiny_mess rotate < 8*40+4*72,0,0> translate s60 rotate <clock*360,0,0> }}
  336.   sphere { s61,radius1+y61,strength1 texture { shiny_mess rotate < 9*40+4*72,0,0> translate s61 rotate <clock*360,0,0> }}
  337.   sphere { s62,radius1+y62,strength1 texture { shiny_mess rotate <10*40+4*72,0,0> translate s62 rotate <clock*360,0,0> }}
  338.   sphere { s63,radius1+y63,strength1 texture { shiny_mess rotate <11*40+4*72,0,0> translate s63 rotate <clock*360,0,0> }}
  339.   sphere { s64,radius1+y64,strength1 texture { shiny_mess rotate <12*40+4*72,0,0> translate s64 rotate <clock*360,0,0> }}
  340.   sphere { s65,radius1+y65,strength1 texture { shiny_mess rotate <13*40+4*72,0,0> translate s65 rotate <clock*360,0,0> }}
  341. }  
  342.  
  343. object { spire rotate <clock*360,0,0>}
  344.