def bounding_box
      unless @bbox
        p = @points[0]
        minX = p[0]
        maxX = p[0]
        minY = p[1]
        maxY = p[1]
        minZ = p[2]
        maxZ = p[2]
        @points.each{|p|
          minX = p[0] if p[0] < minX  
          maxX = p[0] if p[0] > maxX  
          minY = p[1] if p[1] < minY  
          maxY = p[1] if p[1] > maxY  
          minZ = p[2] if p[2] < minZ  
          maxZ = p[2] if p[2] > maxZ  
        }
        @max = Vector[maxX, maxY,maxZ]
        @min = Vector[minX, minY, minZ]
        @bbox = Volume.new([Plane.new(-1,0,0, minX, minY, minZ), 
                           Plane.new(0,-1,0, minX, minY, minZ),
                           Plane.new(0,0,-1, minX, minY, minZ),
                           Plane.new(1,0,0, maxX, maxY, maxZ),
                           Plane.new(0,1,0, maxX, maxY, maxZ), 
                           Plane.new(0,0,1, maxX, maxY, maxZ)])
      end
      @bbox
    end
def bounding_box
      unless @bbox
        p = @points[0]
        minX = p[0]
        maxX = p[0]
        minY = p[1]
        maxY = p[1]
        minZ = p[2]
        maxZ = p[2]
        @points.each{|p|
          minX = p[0] if p[0] < minX  
          maxX = p[0] if p[0] > maxX  
          minY = p[1] if p[1] < minY  
          maxY = p[1] if p[1] > maxY  
          minZ = p[2] if p[2] < minZ  
          maxZ = p[2] if p[2] > maxZ  
        }
        @max = Vector[maxX, maxY,maxZ]
        @min = Vector[minX, minY, minZ]
        @bbox = Volume.new([Plane.new(-1,0,0, minX, minY, minZ), 
                           Plane.new(0,-1,0, minX, minY, minZ),
                           Plane.new(0,0,-1, minX, minY, minZ),
                           Plane.new(1,0,0, maxX, maxY, maxZ),
                           Plane.new(0,1,0, maxX, maxY, maxZ), 
                           Plane.new(0,0,1, maxX, maxY, maxZ)])
      end
      @bbox
    end
Return the bounding box for this volume