vector.sld 790 B

12345678910111213141516171819202122232425262728
  1. (define-library (turtle vector)
  2. (import (scheme base)
  3. (scheme inexact))
  4. (export rotate add-vectors scale-vector negate-vector)
  5. (begin
  6. (define (rotate vec pvec theta-degs)
  7. (define theta (degrees->radians theta-degs))
  8. (add-vectors (scale-vector vec
  9. (cos theta))
  10. (scale-vector pvec
  11. (sin theta))))
  12. (define (add-vectors . vs)
  13. (list->vector (apply map + (map vector->list vs))))
  14. (define (scale-vector v k)
  15. (vector-map (lambda (x)
  16. (* x k))
  17. v))
  18. (define (negate-vector v)
  19. (scale-vector v -1))
  20. (define pi (* 2 (acos 0)))
  21. (define (degrees->radians degs)
  22. (* degs (/ pi 180)))))