gspiro.scm 785 B

123456789101112131415161718192021222324252627282930313233
  1. (import (turtle simple)
  2. (scheme base))
  3. (define spiro (lambda (side aangle maxi)
  4. (subspiro side aangle maxi 1)
  5. (spiro side aangle maxi)))
  6. (define subspiro (lambda (side aangle maxi count)
  7. (cond
  8. ((<= count maxi)
  9. (forward (* side count))
  10. (right aangle)
  11. (subspiro side aangle maxi (+ count 1))))))
  12. (define gspiro (lambda (side aangle maxi listi)
  13. (subgspiro side aangle maxi listi 1)
  14. (gspiro side aangle maxi listi)))
  15. (define subgspiro (lambda (side aangle maxi listi count)
  16. (cond
  17. ((<= count maxi)
  18. (forward (* side count))
  19. (cond
  20. ((member count listi)
  21. (left aangle))
  22. (else
  23. (right aangle)))
  24. (subgspiro side aangle maxi listi (+ count 1))))))
  25. ;(spiro 4 60 10)
  26. (gspiro 10 60 10 '(1 3 5))