Math.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef ANKI_MATH_MATH_H
  2. #define ANKI_MATH_MATH_H
  3. #include "anki/math/MathCommonIncludes.h"
  4. namespace anki {
  5. /// @addtogroup Math
  6. /// @{
  7. /// Useful and optimized math functions
  8. class Math
  9. {
  10. public:
  11. static constexpr F32 PI = 3.14159265358979323846;
  12. static constexpr F32 EPSILON = 1.0e-6;
  13. /// A fast func that given the angle in rads it returns the sin and cos
  14. static void sinCos(const F32 rad, F32& sin_, F32& cos_);
  15. /// Optimized square root
  16. static F32 sqrt(const F32 f);
  17. /// Convert
  18. static F32 toRad(const F32 degrees);
  19. /// Convert
  20. static F32 toDegrees(const F32 rad);
  21. /// Optimized sine
  22. static F32 sin(const F32 rad);
  23. /// Optimized cosine
  24. static F32 cos(const F32 rad);
  25. /// The proper way to test if a F32 is zero
  26. static Bool isZero(const F32 f);
  27. /// Mat4(t0,r0,s0) * Mat4(t1, r1, s1) == Mat4(tf, rf, sf)
  28. static void combineTransformations(
  29. const Vec3& t0, const Mat3& r0, const F32 s0, // in 0
  30. const Vec3& t1, const Mat3& r1, const F32 s1, // in 1
  31. Vec3& tf, Mat3& rf, F32& sf); // out
  32. /// Mat4(t0, r0, 1.0) * Mat4(t1, r1, 1.0) == Mat4(tf, rf, sf)
  33. static void combineTransformations(
  34. const Vec3& t0, const Mat3& r0, // in 0
  35. const Vec3& t1, const Mat3& r1, // in 1
  36. Vec3& tf, Mat3& rf); // out
  37. private:
  38. static F32 polynomialSinQuadrant(const F32 a);
  39. };
  40. /// @}
  41. } // end namespace
  42. #include "anki/math/Math.inl.h"
  43. #endif