
This makes it more efficient to plot piecewise functions by drawing each piece with one renderer, and possible to plot functions with discontinuities by using a renderer to draw each continuous piece.
28 lines
1.0 KiB
Racket
28 lines
1.0 KiB
Racket
#lang racket/base
|
|
|
|
;; Functions that sample from functions, and functions that create memoized samplers.
|
|
|
|
(require racket/match racket/flonum racket/math racket/contract racket/list
|
|
unstable/latent-contract/defthing
|
|
"parameters.rkt"
|
|
"sample.rkt"
|
|
"math.rkt")
|
|
|
|
(provide (all-defined-out))
|
|
|
|
(defthing function->sampler ((real? . -> . real?) ivl? . -> . sampler/c)
|
|
(make-function->sampler plot-x-transform))
|
|
|
|
(defthing inverse->sampler ((real? . -> . real?) ivl? . -> . sampler/c)
|
|
(make-function->sampler plot-y-transform))
|
|
|
|
(defthing 2d-function->sampler (-> (real? real? . -> . real?)
|
|
(vector/c ivl? ivl?)
|
|
2d-sampler/c)
|
|
(make-2d-function->sampler plot-x-transform plot-y-transform))
|
|
|
|
(defthing 3d-function->sampler (-> (real? real? real? . -> . real?)
|
|
(vector/c ivl? ivl? ivl?)
|
|
3d-sampler/c)
|
|
(make-3d-function->sampler plot-x-transform plot-y-transform plot-z-transform))
|