1#lang typed/racket/base 2 3(provide (all-defined-out)) 4 5;; Returns the interpolated distance of z from za toward zb 6;; Examples: if z = za, this returns 0.0 7;; if z = zb, this returns 1.0 8;; if z = (za + zb) / 2, this returns 0.5 9;; Intuitively, regard a use (solve-t z za zb) as "the point between za and zb". 10(define-syntax-rule (solve-t z za zb) 11 (/ (- z za) (- zb za))) 12 13(define-syntax-rule (unsolve-t za zb t) 14 (cond [(eq? t 0) za] 15 [(eq? t 1) zb] 16 [else (+ (* t zb) (* (- 1 t) za))])) 17 18