math_helper.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. * DoRayMe - a quick and dirty Raytracer
  3. * Math helping functions
  4. *
  5. * Created by Manoël Trapier
  6. * Copyright (c) 2020 986-Studio.
  7. *
  8. */
  9. #include <math.h>
  10. #include <float.h>
  11. #include <math_helper.h>
  12. static double current_precision = FLT_EPSILON;
  13. void set_equal_precision(double v)
  14. {
  15. current_precision = v;
  16. }
  17. double getEpsilon()
  18. {
  19. return current_precision;
  20. }
  21. bool double_equal(double a, double b)
  22. {
  23. return fabs(a - b) < current_precision;
  24. }
  25. double deg_to_rad(double deg)
  26. {
  27. return deg * M_PI / 180.;
  28. }
  29. double min3(double a, double b, double c)
  30. {
  31. if (a <= b)
  32. {
  33. if (c < a) return c;
  34. return a;
  35. }
  36. if (b <= a)
  37. {
  38. if (c < b) return c;
  39. return b;
  40. }
  41. if (c <= a)
  42. {
  43. if (b < c) return b;
  44. }
  45. return c;
  46. }
  47. double max3(double a, double b, double c)
  48. {
  49. if (a >= b)
  50. {
  51. if (c > a) return c;
  52. return a;
  53. }
  54. if (b >= a)
  55. {
  56. if (c > b) return c;
  57. return b;
  58. }
  59. if (c >= a)
  60. {
  61. if (b > c) return b;
  62. }
  63. return c;
  64. }