Maths.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package holeg.utility.math;
  2. public class Maths {
  3. public final static double EPSILON = 1E-6;
  4. /**
  5. * Linear Interpolation from first to second via alpha amount.
  6. *
  7. * @param first
  8. * @param second
  9. * @param alpha
  10. * @return
  11. */
  12. public static double lerp(double first, double second, double alpha) {
  13. return first * (1.0 - alpha) + second * alpha;
  14. }
  15. /**
  16. * Inverse Linear Interpolation from min to max to get the corresponding alpha from value.
  17. *
  18. * @param min
  19. * @param max
  20. * @param value
  21. * @return
  22. */
  23. public static double invLerp(double min, double max, double value) {
  24. if (Math.abs(max - min) < EPSILON) {
  25. return max;
  26. } else {
  27. return (value - min) / (max - min);
  28. }
  29. }
  30. public static int Clamp(int value, int min, int max) {
  31. return Math.max(min, Math.min(max, value));
  32. }
  33. public static float Clamp(float value, float min, float max) {
  34. return Math.max(min, Math.min(max, value));
  35. }
  36. public static double Clamp(double value, double min, double max) {
  37. return Math.max(min, Math.min(max, value));
  38. }
  39. }