ProtoTracer  1.0
Real-time 3D rendering and animation engine
Loading...
Searching...
No Matches
Mathematics.tpp
Go to the documentation of this file.
1#pragma once
2
3template<typename T>
4T Mathematics::Constrain(T value, T minimum, T maximum) {
5 if (value > maximum) {
6 value = maximum;
7 } else if (value < minimum) {
8 value = minimum;
9 }
10
11 return value;
12}
13
14template<typename T>
15T Mathematics::DegreesToRadians(T degrees) {
16 return degrees * MPID180;
17}
18
19template<typename T>
20T Mathematics::RadiansToDegrees(T radians) {
21 return radians * M180DPI;
22}
23
24template<typename T>
25T Mathematics::Map(T value, T inLow, T inMax, T outMin, T outMax) {
26 return (value - inLow) * (outMax - outMin) / (inMax - inLow) + outMin;
27}
28
29template <typename T>
30T Mathematics::Max(T value1, T value2) {
31 return value1 > value2 ? value1 : value2;
32}
33
34template <typename T>
35T Mathematics::Min(T value1, T value2) {
36 return value1 < value2 ? value1 : value2;
37}
38
39template <typename T>
40T Mathematics::Min(T v1, T v2, T v3) {
41 return v1 < v2 ? (v1 < v3 ? v1 : v3) : (v2 < v3 ? v2 : v3);
42}
43
44template <typename T>
45T Mathematics::Max(T v1, T v2, T v3) {
46 return v1 > v2 ? (v1 > v3 ? v1 : v3) : (v2 > v3 ? v2 : v3);
47}
48
49template<typename T>
50T Mathematics::ConstrainMap(T value, T inLow, T inMax, T outMin, T outMax) {
51 T mappedValue = (value - inLow) * (outMax - outMin) / (inMax - inLow) + outMin;
52 return Constrain(mappedValue, outMin, outMax);
53}