examples/vase.ss
```#lang scheme

;(draw (vase (xyz 0 0 0) 2 6))
(define (vase p d h)
(define d/2 (/ d 2))
(define cs (map (lambda (x n)
(make-region (make-circle (+z p (* d/2 n))
(* d x))))
'(1/3 1 1/3 2/3)
'(  1 2   3   4)))
;; (do-loft objects ang1 mag1 ang2 mag2)
(do-loft cs 0 0 0 0))

;(draw (vase2 (xyz 0 0 0) 2 6 0.4))
(define (vase2 p d h r)
(define (make-circles d z r)
(map (lambda (x n)
(do-subtract (make-region (make-circle (+z p (* (/ z 2) n)) (* (/ d 2) x)))
(make-region (make-circle (+z p (* (/ z 2) n)) (* (/ d 2) x r)))))
'(1/3 1 1/3 2/3)
'(  1 2   3   4)))
(define cs (make-circles d d r))
(define cs2 (make-circles (* d 3/4) d r))
(unite (do-subtract (do-loft cs 0 0 0 0)
(do-loft cs2 0 0 0 0))
;; tapa o vaso em baixo
(make-cylinder (+z p (/ d 2)) (+z p (* d (+ 1/2 1/10))) (* d 3/4 1/3)))) ;(* d 1/2 1/3) (* (/ d 2) r 1/10))))

;; (time (draw (vase2 origin 6 10 2/3)))
;; (subtract (make-circle origin 5)
;;           (make-circle origin 3))

;(let ((c1 (make-circle origin 3))
;      (c2 (make-circle origin 5)))
;  (invoke Boolean (first (draw c2)) 2 (first (draw c1))))
```