calc.c 521 B

123456789101112131415161718192021222324252627
  1. #include "calc.h"
  2. int modulo(int x, int N) {
  3. return (x % N + N) % N;
  4. }
  5. int wrap(int x, int min, int max) {
  6. return modulo(x - min, max - min + 1) + min;
  7. }
  8. int wrap_single(int x, int min, int max) {
  9. if(x < min) return max;
  10. if(x > max) return min;
  11. return x;
  12. }
  13. int lerp(int a, int b, float t) {
  14. return a + (b - a) * t;
  15. }
  16. float inverse_lerp(int a, int b, int x) {
  17. return (x - a) / (b - a);
  18. }
  19. int map(int a0, int b0, int a1, int b1, int x) {
  20. return lerp(a1, b1, inverse_lerp(a0, b0, x));
  21. }