1#lang racket/base 2 3;; Functions that create renderers for backward-compatible functions 'line', 'contour', etc. 4 5(require racket/match plot/utils 6 "../plot2d/line.rkt" 7 "../plot2d/contour.rkt" 8 "../plot3d/surface.rkt") 9 10(provide line-renderer 11 contour-renderer 12 shade-renderer 13 surface-renderer) 14 15(define (line-renderer f samples width color mode mapping t-min t-max) 16 (case mode 17 [(standard) 18 (case mapping 19 [(cartesian) (function f #:samples samples #:width width #:color color)] 20 [(polar) (polar f t-min t-max 21 #:samples samples #:width width #:color color)])] 22 [(parametric) 23 (case mapping 24 [(cartesian) (parametric f t-min t-max 25 #:samples samples #:width width #:color color)] 26 [(polar) (parametric (λ (t) 27 (match-define (vector θ r) (f t)) 28 (vector (* r (cos θ)) (* r (sin θ)))) 29 t-min t-max 30 #:samples samples #:width width #:color color)])])) 31 32(define (contour-renderer f samples width color levels) 33 (contours f #:samples samples #:levels (if (exact-integer? levels) (sub1 levels) levels) 34 #:colors (list color) #:widths (list width) #:styles '(solid))) 35 36(define (shade-fill-colors zs) 37 (color-seq* '((0 0 255) (255 255 255) (255 0 0)) (sub1 (length zs)))) 38 39(define (shade-renderer f samples levels) 40 (contour-intervals f #:samples samples #:levels (if (exact-integer? levels) (sub1 levels) levels) 41 #:colors shade-fill-colors #:contour-styles '(transparent))) 42 43(define (surface-renderer f samples width color) 44 (surface3d f #:samples samples #:line-color color #:line-width width)) 45