racket/collects/plot/common/samplers.rkt
Neil Toronto 365ee2c70d 1d, 2d and 3d function renderers no longer sample outside the function's bounds
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.
2012-05-25 10:40:05 +09:00

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))