home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #7 / amigamamagazinepolishissue1998.iso / varia / povray3 / povray3_060 / pov3demo / recurse / sponge2.inc < prev    next >
Text File  |  1997-12-12  |  3KB  |  87 lines

  1. // See comments in sponge2.pov
  2.  
  3. #if (SpongeLevel = 0)
  4.     box { <-0.5,-0.5,-0.5>,<0.5,0.5,0.5>
  5.         scale SpongeRad
  6.         translate SpongeCen
  7.         texture { pigment { color rgb SpongeCen + <0.5,0.5,0.5> } }
  8.     }
  9.     #declare SpongeCounter = SpongeCounter + 1
  10. #else if (SpongeLevel = 1)
  11.     difference {
  12.         box { <-0.5,-0.5,-0.5>,<0.5,0.5,0.5> }
  13.         box { <-0.51,-0.166667,-0.166667>,<0.51,0.166667,0.166667> }
  14.         box { <-0.166667,-0.51,-0.166667>,<0.166667,0.51,0.166667> }
  15.         box { <-0.166667,-0.166667,-0.51>,<0.166667,0.166667,0.51> }
  16.         scale SpongeRad
  17.         translate SpongeCen
  18.         texture { pigment { color rgb SpongeCen + <0.5,0.5,0.5> } }
  19.     }
  20.     #declare SpongeCounter = SpongeCounter + 4
  21. #else
  22.     // Recursively draw 20 smaller sponges.  Can't use loops here since
  23.     // the indices would be changed by the recursive calls.
  24.  
  25.     #declare SpongeLevel = SpongeLevel - 1
  26.     #declare SpongeRad = SpongeRad / 3
  27.  
  28.     // Top layer
  29.  
  30.     #declare SpongeCen = SpongeCen + <-SpongeRad,-SpongeRad,-SpongeRad>
  31.     #include "sponge2.inc"
  32.     #declare SpongeCen = SpongeCen + <SpongeRad,0,0>
  33.     #include "sponge2.inc"
  34.     #declare SpongeCen = SpongeCen + <SpongeRad,0,0>
  35.     #include "sponge2.inc"
  36.  
  37.     #declare SpongeCen = SpongeCen + <-SpongeRad * 2,SpongeRad,0>
  38.     #include "sponge2.inc"
  39.     #declare SpongeCen = SpongeCen + <SpongeRad * 2,0,0>
  40.     #include "sponge2.inc"
  41.  
  42.     #declare SpongeCen = SpongeCen + <-SpongeRad * 2,SpongeRad,0>
  43.     #include "sponge2.inc"
  44.     #declare SpongeCen = SpongeCen + <SpongeRad,0,0>
  45.     #include "sponge2.inc"
  46.     #declare SpongeCen = SpongeCen + <SpongeRad,0,0>
  47.     #include "sponge2.inc"
  48.  
  49.     // Middle layer
  50.  
  51.     #declare SpongeCen = SpongeCen + <-SpongeRad * 2,-SpongeRad * 2,SpongeRad>
  52.     #include "sponge2.inc"
  53.     #declare SpongeCen = SpongeCen + <SpongeRad * 2,0,0>
  54.     #include "sponge2.inc"
  55.  
  56.     #declare SpongeCen = SpongeCen + <-SpongeRad * 2,SpongeRad * 2,0>
  57.     #include "sponge2.inc"
  58.     #declare SpongeCen = SpongeCen + <SpongeRad * 2,0,0>
  59.     #include "sponge2.inc"
  60.  
  61.     // Bottom layer
  62.  
  63.     #declare SpongeCen = SpongeCen + <-SpongeRad * 2,-SpongeRad * 2,SpongeRad>
  64.     #include "sponge2.inc"
  65.     #declare SpongeCen = SpongeCen + <SpongeRad,0,0>
  66.     #include "sponge2.inc"
  67.     #declare SpongeCen = SpongeCen + <SpongeRad,0,0>
  68.     #include "sponge2.inc"
  69.  
  70.     #declare SpongeCen = SpongeCen + <-SpongeRad * 2,SpongeRad,0>
  71.     #include "sponge2.inc"
  72.     #declare SpongeCen = SpongeCen + <SpongeRad * 2,0,0>
  73.     #include "sponge2.inc"
  74.  
  75.     #declare SpongeCen = SpongeCen + <-SpongeRad * 2,SpongeRad,0>
  76.     #include "sponge2.inc"
  77.     #declare SpongeCen = SpongeCen + <SpongeRad,0,0>
  78.     #include "sponge2.inc"
  79.     #declare SpongeCen = SpongeCen + <SpongeRad,0,0>
  80.     #include "sponge2.inc"
  81.  
  82.     // Restore to original calling values
  83.     #declare SpongeCen = SpongeCen + <-SpongeRad,-SpongeRad,-SpongeRad>
  84.     #declare SpongeRad = SpongeRad * 3
  85.     #declare SpongeLevel = SpongeLevel + 1
  86. #end
  87. #end