20 template <
class T>
class DtVector2;
21 template <
class T>
class DtVector3;
22 template <
class T>
class DtVector4;
58 template <
class T>
static T
Sqrt(T val) {
return sqrt(val);}
59 template <
class T>
static T
Abs(T val) {
return fabs(val);}
60 static int Abs(
int val) {
if (val>0)
return val;
else return -val;}
61 template <
class T>
static T
Sin(T val) {
return sin(val);}
62 template <
class T>
static T
Cos(T val) {
return cos(val);}
63 template <
class T>
static T
Tan(T val) {
return tan(val);}
69 template <
class T>
static T
Squared(T val) {
return val*val;}
71 template <
class T>
static int NumDigits(T val);
72 template <
class T>
static double GetNormalizedValueRespectingLength(T val);
76 static bool isEqual(
int32 lhs,
int32 rhs,
int32 tolerance=std::numeric_limits<int32>::epsilon());
77 static bool isEqual(
uint32 lhs,
uint32 rhs,
uint32 tolerance=std::numeric_limits<uint32>::epsilon());
78 static bool isEqual(
float32 lhs,
float32 rhs,
float32 tolerance=std::numeric_limits<float32>::epsilon());
79 static bool isEqual(
float64 lhs,
float64 rhs,
float64 tolerance=std::numeric_limits<float64>::epsilon());
84 static float32 unitRandom32(
void);
85 static float64 unitRandom64(
void);
87 static int rangeRandom(
int iLow,
int iHigh);
90 static bool randomBool(
void);
105 static std::string formatBytes(uint64_t sizeInBytes);
109 template <
class T>
static T clamp(T val, T minval, T maxval);
118 template <
class T>
static T lerp( T a, T b, T
t );
125 template <
class T>
static DtVector3<T> toCartesian(T thetaDegrees, T phiDegrees,
bool flipYZ);
129 template <
class T>
static bool linePlaneIntersection(
const DtVector3<T>& linePoint1,
const DtVector3<T>& linePoint2,
134 template <
class T>
static bool isFinite(T n);
136 template <
class T>
static T Min(T lhs, T rhs);
137 template <
class T>
static T Max(T lhs, T rhs);
140 static double fractional(
double val);
145 static unsigned int tilelog2(
unsigned int x);
149 static T rpmToRadiansPerSec(T rpm);
153 static T radiansPerSecToRpm(T radiansPerSec);
175 Assert(minval <= maxval &&
"Invalid clamp range");
222 T vm = va + (vb - va) * t;
240 vm[0] = va[0] + (vb[0] - va[0]) * t;
241 vm[1] = va[1] + (vb[1] - va[1]) * t;
260 vm[0] = va[0] + (vb[0] - va[0]) * t;
261 vm[1] = va[1] + (vb[1] - va[1]) * t;
262 vm[2] = va[2] + (vb[2] - va[2]) * t;
281 vm[0] = va[0] + (vb[0] - va[0]) * t;
282 vm[1] = va[1] + (vb[1] - va[1]) * t;
283 vm[2] = va[2] + (vb[2] - va[2]) * t;
284 vm[3] = va[3] + (vb[3] - va[3]) * t;
292 T theta = toRadians(thetaDegrees);
293 T phi = toRadians(phiDegrees);
302 T temp = vPosition.
y;
303 vPosition.
y = vPosition.
z;
329 intersect = (lineDir * w) + linePoint1;
348 return normalizedValue;
355 && (n != +std::numeric_limits<T>::infinity())
356 && (n != -std::numeric_limits<T>::infinity())
395 return (radiansPerSec / (2.0f *
DtMath::PI)) * 60.0f;