17inline constexpr double DEG2RAD(
double x) {
return x * (M_PI / 180.); }
18inline constexpr float DEG2RAD(
float x) {
return x * (float(M_PI) / 180.f); }
19inline constexpr double RAD2DEG(
double x) {
return x * (180. / M_PI); }
20inline constexpr float RAD2DEG(
float x) {
return x * (180.f / float(M_PI)); }
22static inline Sint64 isqrt(Sint64 a)
25 return static_cast<int64_t
>(sqrt(
static_cast<double>(a)));
28static inline Sint64 isqrt(
fixed v)
32 Sint64 ret_sq = -v.
v - 1;
33 for (s = 62; s >= 0; s -= 2) {
36 b = ret_sq + ((2 * ret + 1) << s);
46#if defined(_MSC_VER) && (_MSC_VER < 1800)
49static inline double round(
double x)
51 return x >= 0.0 ? floor(x + 0.5) : ceil(x - 0.5);
54static inline float roundf(
float x)
56 return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f);
60static inline Uint32 ceil_pow2(Uint32 v)
83 template <
class T,
class F>
84 inline T
mix(
const T &v1,
const T &v2,
const F t)
86 return t * v2 + (F(1.0) - t) * v1;
88 template <
class T,
class F>
89 inline T
Lerp(
const T &v1,
const T &v2,
const F t)
91 return mix(v1, v2, t);
101 if (std::abs(a.
x) > std::abs(a.
y)) {
102 if (std::abs(a.
y) > std::abs(a.
z))
107 if (std::abs(a.
x) > std::abs(a.
z))
130 const vector3d z = (eye - target).NormalizedSafe();
139 bool TestDistanceFromLine();
constexpr double DEG2RAD(double x)
Definition: MathUtil.h:17
const T & Clamp(const T &x, const T &min, const T &max)
Definition: MathUtil.h:15
constexpr double RAD2DEG(double x)
Definition: MathUtil.h:19
Sint64 v
Definition: fixed.h:239
static matrix3x3 FromVectors(const vector3< double > &rx, const vector3< double > &ry, const vector3< double > &rz)
Definition: matrix3x3.h:68
T y
Definition: vector3.h:20
T x
Definition: vector3.h:20
T z
Definition: vector3.h:20
vector3 Normalized() const
Definition: vector3.h:136
vector3 Cross(const vector3 &b) const
Definition: vector3.h:128
Definition: MathUtil.cpp:7
vector3d RandomPointOnSphere(double minRadius, double maxRadius)
Definition: MathUtil.cpp:9
matrix4x4f Inverse(const matrix4x4f &cell)
Definition: MathUtil.cpp:33
vector3< T > OrthogonalDirection(const vector3< T > &a)
Definition: MathUtil.h:98
T mix(const T &v1, const T &v2, const F t)
Definition: MathUtil.h:84
T Lerp(const T &v1, const T &v2, const F t)
Definition: MathUtil.h:89
float Dot(const vector3f &a, const vector3f &b)
Definition: MathUtil.h:94
float DistanceFromLineSegment(const vector3f &start, const vector3f &end, const vector3f &pos, bool &isWithinLineSegment)
Definition: MathUtil.cpp:246
vector3d RandomPointInCircle(double minRadius, double maxRadius)
Definition: MathUtil.cpp:20
matrix4x4f InverseSlow(const matrix4x4f &cell)
Definition: MathUtil.cpp:54
vector3d RandomPointOnCircle(double radius)
Definition: MathUtil.h:80
float DistanceFromLine(const vector3f &start, const vector3f &end, const vector3f &pos)
Definition: MathUtil.cpp:265
matrix4x4f Transpose(const matrix4x4f &cell)
Definition: MathUtil.cpp:183
vector3< T > max(const vector3< T > &lhs, const vector3< T > &rhs)
Definition: vector3.h:312
vector3< T > min(const vector3< T > &lhs, const vector3< T > &rhs)
Definition: vector3.h:320