#lang scheme
(require vscheme/autocad)
(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 cs 0 0 0 0))
(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))
(make-cylinder (+z p (/ d 2)) (+z p (* d (+ 1/2 1/10))) (* d 3/4 1/3))))