calc.c 667 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "calc.h"
  2. int modulo(int x, int N)
  3. {
  4. return (x % N + N) % N;
  5. }
  6. int wrap(int x, int min, int max)
  7. {
  8. return modulo(x - min, max - min + 1) + min;
  9. }
  10. int wrap_single(int x, int min, int max)
  11. {
  12. if (x < min)
  13. return max;
  14. if (x > max)
  15. return min;
  16. return x;
  17. }
  18. int clamp(int x, int min, int max)
  19. {
  20. if (x < min)
  21. return min;
  22. if (x > max)
  23. return max;
  24. return x;
  25. }
  26. int lerp(int a, int b, float t)
  27. {
  28. return a + (b - a) * t;
  29. }
  30. float inverse_lerp(int a, int b, int x)
  31. {
  32. return (x - a) / (b - a);
  33. }
  34. int map(int a0, int b0, int a1, int b1, int x)
  35. {
  36. return lerp(a1, b1, inverse_lerp(a0, b0, x));
  37. }