line.scm 546 B

1234567891011121314151617181920
  1. (define-module (basket line)
  2. #:use-module (basket)
  3. #:use-module (srfi srfi-1))
  4. (export
  5. line?
  6. line-split->path
  7. line-split->lines)
  8. (define (line? line)
  9. (and (path? line) (= (length line) 2)))
  10. (define (line-split->path line n)
  11. "Splits a line into a path with N segments of equal length."
  12. (map (curry vec-lerp (car line) (cadr line)) (iota (+ n 1) 0 (/ n))))
  13. (define (line-split->lines line n)
  14. "Splits a line into a list of N lines, each being equal length."
  15. (path->lines (line-split->path line n)))