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

  1. // See comments in sponge3.pov
  2.  
  3. #if (SpongeLevel > 0)
  4.  
  5.     #declare SpongeDim = SpongeDim / 6
  6.  
  7.     // Punch holes through center of current box, in each of three dimensions
  8.  
  9.     box { <-1.1,SpongeX - SpongeDim,SpongeY - SpongeDim>,
  10.         <1.1,SpongeX + SpongeDim,SpongeY + SpongeDim>
  11.     }
  12.     box { <SpongeX - SpongeDim,-1.1,SpongeY - SpongeDim>,
  13.         <SpongeX + SpongeDim,1.1,SpongeY + SpongeDim>
  14.     }
  15.     box { <SpongeX - SpongeDim,SpongeY - SpongeDim,-1.1>,
  16.         <SpongeX + SpongeDim,SpongeY + SpongeDim,1.1>
  17.     }
  18.     #declare SpongeCounter = SpongeCounter + 3
  19.  
  20.     #declare SpongeDim = SpongeDim * 2
  21.  
  22.     #if (SpongeLevel > 1)
  23.  
  24.         // Recurse on the eight non-center areas of a 3x3 grid in the plane.
  25.         // Can't use loops here since the indices would be changed by the
  26.         // recursive calls.
  27.  
  28.         #declare SpongeLevel = SpongeLevel - 1
  29.  
  30.         #declare SpongeX = SpongeX - SpongeDim
  31.         #declare SpongeY = SpongeY - SpongeDim
  32.         #include "sponge3.inc"
  33.         #declare SpongeX = SpongeX + SpongeDim
  34.         #include "sponge3.inc"
  35.         #declare SpongeX = SpongeX + SpongeDim
  36.         #include "sponge3.inc"
  37.  
  38.         #declare SpongeX = SpongeX - SpongeDim * 2
  39.         #declare SpongeY = SpongeY + SpongeDim
  40.         #include "sponge3.inc"
  41.         #declare SpongeX = SpongeX + SpongeDim * 2
  42.         #include "sponge3.inc"
  43.  
  44.         #declare SpongeX = SpongeX - SpongeDim * 2
  45.         #declare SpongeY = SpongeY + SpongeDim
  46.         #include "sponge3.inc"
  47.         #declare SpongeX = SpongeX + SpongeDim
  48.         #include "sponge3.inc"
  49.         #declare SpongeX = SpongeX + SpongeDim
  50.         #include "sponge3.inc"
  51.  
  52.         // Restore to original calling values
  53.         #declare SpongeX = SpongeX - SpongeDim
  54.         #declare SpongeY = SpongeY - SpongeDim
  55.         #declare SpongeLevel = SpongeLevel + 1
  56.     #end
  57.     #declare SpongeDim = SpongeDim * 3
  58. #end