Work transfer
This commit is contained in:
+45
-45
@@ -1,45 +1,45 @@
|
||||
|
||||
(define-module interpolation
|
||||
:exports (lerp lerper stepped-lerper
|
||||
point-lerp point-lerper
|
||||
bezier2 bezierer2)
|
||||
|
||||
(define-typed (lerp a :number b :number t :number)
|
||||
(+ (* t (- b a)) a))
|
||||
|
||||
(define-typed (lerper a :number b :number)
|
||||
(define-typed (ret t :number)
|
||||
(lerp a b t))
|
||||
ret)
|
||||
|
||||
(define-typed (stepped-lerper a :number b :number #steps :number)
|
||||
(let ((t 0)
|
||||
(dt (/ 1 #steps)))
|
||||
(lambda ()
|
||||
(let ((res (lerp a b t)))
|
||||
(mutate t (+ t dt))
|
||||
res))))
|
||||
|
||||
(define make-point pair)
|
||||
(define point->x first)
|
||||
(define point->y rest)
|
||||
|
||||
(define (point-lerp p1 p2 t)
|
||||
(make-point (lerp (point->x p1) (point->x p2) t)
|
||||
(lerp (point->y p1) (point->y p2) t)))
|
||||
|
||||
(define (point-lerper p1 p2)
|
||||
(lambda (t) (point-lerp p1 p2 t)))
|
||||
|
||||
(define (bezier2 p1 p2 p3 t)
|
||||
(point-lerp (point-lerp p1 p2 t)
|
||||
(point-lerp p2 p3 t)
|
||||
t))
|
||||
|
||||
(define (bezierer2 p1 p2 p3)
|
||||
(let ((lerper1 (point-lerper p1 p2))
|
||||
(lerper2 (point-lerper p2 p3)))
|
||||
(lambda (t)
|
||||
(point-lerp (lerper1 t)
|
||||
(lerper2 t) t))))
|
||||
)
|
||||
|
||||
(define-module interpolation
|
||||
:exports (lerp lerper stepped-lerper
|
||||
point-lerp point-lerper
|
||||
bezier2 bezierer2)
|
||||
|
||||
(define-typed (lerp a :number b :number t :number)
|
||||
(+ (* t (- b a)) a))
|
||||
|
||||
(define-typed (lerper a :number b :number)
|
||||
(define-typed (ret t :number)
|
||||
(lerp a b t))
|
||||
ret)
|
||||
|
||||
(define-typed (stepped-lerper a :number b :number #steps :number)
|
||||
(let ((t 0)
|
||||
(dt (/ 1 #steps)))
|
||||
(lambda ()
|
||||
(let ((res (lerp a b t)))
|
||||
(mutate t (+ t dt))
|
||||
res))))
|
||||
|
||||
(define make-point pair)
|
||||
(define point->x first)
|
||||
(define point->y rest)
|
||||
|
||||
(define (point-lerp p1 p2 t)
|
||||
(make-point (lerp (point->x p1) (point->x p2) t)
|
||||
(lerp (point->y p1) (point->y p2) t)))
|
||||
|
||||
(define (point-lerper p1 p2)
|
||||
(lambda (t) (point-lerp p1 p2 t)))
|
||||
|
||||
(define (bezier2 p1 p2 p3 t)
|
||||
(point-lerp (point-lerp p1 p2 t)
|
||||
(point-lerp p2 p3 t)
|
||||
t))
|
||||
|
||||
(define (bezierer2 p1 p2 p3)
|
||||
(let ((lerper1 (point-lerper p1 p2))
|
||||
(lerper2 (point-lerper p2 p3)))
|
||||
(lambda (t)
|
||||
(point-lerp (lerper1 t)
|
||||
(lerper2 t) t))))
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user