1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
(module plot mzscheme
(require
(lib "list.ss")
(lib "etc.ss")
(lib "math.ss" "plot")
(lib "view.ss" "plot")
(lib "renderer-helpers.ss" "plot")
(lib "renderers.ss" "plot")
(lib "fit.ss" "plot")
(lib "class.ss"))
; plot : plottable (option value)*
(define-syntax plot
(syntax-rules ()
[(_ ren )
(instantiate 2d-view% () (renderer ren))]
[(_ ren (option value) ...)
(instantiate 2d-view% () (renderer ren) (option value) ...)]))
(define-syntax plot3d
(syntax-rules ()
[(_ ren )
(instantiate 3d-view% () (renderer ren))]
[(_ ren (option value) ...)
(instantiate 3d-view% () (renderer ren) (option value) ...)]))
; mix-int : renderer renderer -> renderer
; creates a renderer that will renderer both of the inputs
(define (mix-int renderer1 renderer2)
(lambda (view)
(send view reset-to-default)
(renderer1 view)
(send view reset-to-default)
(renderer2 view)))
; mix : renderer+ -> renderer
; combine any number of renderers
(define (mix r1 . the-rest)
(if (empty? the-rest)
r1
(mix-int r1 (apply mix the-rest))))
; make-2d-renderer : (2d-view% -> void)
; provides a user with the ability to create their own renderers
; without providing the implimentation
(define custom identity)
;;
(define-syntax fit
(syntax-rules ()
[(_ func ((param guess) ...) data)
(fit-int func
'((param guess) ...)
data)]))
(provide
;fitting
fit
(struct fit-result (rms
variance
names
final-params
std-error
std-error-percent
function))
; to make plots
plot
plot3d
; to combine/create renderers
mix
custom
; 2d-renderers
error-bars
points
line
vector-field
contour
shade
; 3d-rendereres
surface
mesh3d
; from math-tools
derivative
gradient
make-vec
))
|