Voltray Engine Docs
Loading...
Searching...
No Matches
MathUtil.h
Go to the documentation of this file.
1#pragma once
2
3#define M_PI 3.141592653589793238467932384626433f // Pi constant
4#define M_PI_2 1.570796326794896619231321691639751f // Pi / 2
5#define DEG2RAD 0.01745329251994329576923690768489f // Pi / 180.0f
6#define RAD2DEG 57.295779513082320876798154814105f // 180.0f / Pi
7
8namespace MathUtil
9{
10 // Clamp a value between min and max
11 template <typename T>
12 T Clamp(const T &value, const T &min, const T &max)
13 {
14 if (value < min)
15 return min;
16 if (value > max)
17 return max;
18 return value;
19 }
20
21 // Linear interpolation
22 template <typename T>
23 T Lerp(const T &a, const T &b, float t)
24 {
25 return a + (b - a) * t;
26 }
27
28 // Map a value from one range to another
29 template <typename T>
30 T Map(const T &value, const T &inMin, const T &inMax, const T &outMin, const T &outMax)
31 {
32 return outMin + (outMax - outMin) * ((value - inMin) / (inMax - inMin));
33 }
34
35 // Sign function
36 template <typename T>
37 int Sign(const T &value)
38 {
39 return (T(0) < value) - (value < T(0));
40 }
41}
Definition MathUtil.h:9
T Map(const T &value, const T &inMin, const T &inMax, const T &outMin, const T &outMax)
Definition MathUtil.h:30
int Sign(const T &value)
Definition MathUtil.h:37
T Clamp(const T &value, const T &min, const T &max)
Definition MathUtil.h:12
T Lerp(const T &a, const T &b, float t)
Definition MathUtil.h:23