#lang scheme (require plot) (require mzlib/class plot/plot-extend) ; (number -> number) mumbo-jumbo -> 2d-renderer (define-plot-type dashed-line fun 2dview (x-min x-max) ((samples 100) (segments 20) (color 'red) (width 1)) (let* ((dash-size (/ (- x-max x-min) segments)) (x-lists (build-list (/ segments 2) (lambda (index) (x-values (/ samples segments) (+ x-min (* 2 index dash-size)) (+ x-min (* (add1 ( * 2 index)) dash-size))))))) (send* 2dview (set-line-color color) (set-line-width width)) (for-each (lambda (dash) (send 2dview plot-line (map (lambda (x) (vector x (fun x))) dash))) x-lists))) ; (plot (dashed-line (lambda (x) x) (color 'red))) (plot3d (surface (lambda (x y) (* (sin x) (sin y)))))