// The columns in the heart of the stone

#include "Caltextures.inc"

#declare Column=
 union {
  cylinder {
   <0,-0.1,0>,<0,68,0>,2
  }
  torus {
   2,0.2
  }
  torus {
   2,0.2
   translate y*0.5
  }
  torus {
   2,0.2
   translate y*5
  }
  torus {
   2,0.2
   translate y*5.5
  }
  torus {
   2,0.2
   translate y*34.5
  }
  torus {
   2,0.2
   translate y*33
  }
  torus {
   2,0.2
   translate y*36.5
  }
 }

#declare TheColumns=
 union {
  #declare ColumnSet=0
  #declare ColumnNo=0
  #while (ColumnSet<7)
   #while (ColumnNo<8)
    object {
     Column
     translate <0,0,12+ColumnSet*20>
     rotate y*ColumnNo*45
    }
    #declare ColumnNo=ColumnNo+1
   #end
   difference {    // arches overhead
    cylinder {
     <0,40,0>,<0,68,0>,14+ColumnSet*20
    }
    cylinder {
     <0,39,0>,<0,69,0>,10+ColumnSet*20
    }
   }
   #declare ColumnNo=0
   #declare ColumnSet=ColumnSet+1
  #end
  texture {RedGranite1}
  texture {RedGranite2}
 }
