#lang racket (require (planet wcy/mpost-wrapper)) (provide main) (define (main) (define (f z1 zn) (if (null? zn) z1 (let ((x (f2 z1 zn))) (f (car x) (cdr x))))) (define (f2 z1 zn) (if (null? (cdr zn)) (list (mediation 1/2 z1 (car zn))) (cons (mediation 1/2 z1 (car zn)) (f2 (car zn) (cdr zn))))) (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)) (draw (f A (list B C D)) #:withpen (scale '4bp 'pencircle))))