examples/ex-62.rkt
#lang racket
(require (planet wcy/mpost-wrapper))
(provide main)
(define (main)
  (define  (bezier n A B C D)
    (let* ((a1 A)
           (a2 B)
           (a3 C)
           (a4 D)
           (a12 (mediation 1/2 a1   a2))
           (a23 (mediation 1/2 a2   a3))
           (a34 (mediation 1/2 a3   a4))
           (a123 (mediation 1/2  a12  a23))
           (a234 (mediation 1/2  a23  a34))
           (a1234(mediation 1/2  a123 a234)))
      (if (> n 0)
          (begin
            (bezier (- n 1) a1 a12 a123 a1234)
            (bezier (- n 1) a1234 a234 a34 a4))
          (draw a1234 #:withpen (scale '2bp 'pencircle)))))
  (let* ((u '1cm)
         (A (point 0 0))
         (B (point (op* -1 u) (op* 2 u)))
         (C (point (op* 3  u) (op* 3 u)))
         (D (point (op* 2  u) 0)))
    (for ((A (in-list (list A B C D))))
         (draw A #:withpen (scale '4bp 'pencircle)))
    ;; (draw (path A ".." " controls " B " and " C ".." D))
    (bezier 5 A B C D)))