Lumino.Math
|
00001 00002 #ifndef LUMINO_MATH_MATH_H 00003 #define LUMINO_MATH_MATH_H 00004 00005 #include "Common.h" 00006 00007 namespace Lumino 00008 { 00009 00013 class LUMINO_EXPORT Math 00014 { 00015 public: 00016 00017 static const float PI; 00018 static const float PIOver2; 00019 00020 public: 00021 00023 static inline float ToRadians(float d) { return d * 0.017453292519943295769236907684886f; } // 0.017… は180 の逆数 * PI 00024 00026 static inline float ToDegrees(float r) { return r * 57.295779513082320876798154814105f; } // 57.29… はPI の逆数 * 180 00027 00029 static inline float Clamp(float value, float minValue, float maxValue) { return (value > maxValue) ? maxValue : (value < minValue) ? minValue : value; } 00030 00032 static inline float Clamp01(float value) { return Clamp(value, 0.0f, 1.0f); } 00033 00035 static unsigned int NextPow2(unsigned int value); 00036 00038 static bool EqualsFloat(float value1, float value2); 00039 00041 static bool IsNaN(float value); 00042 00044 static bool IsNaN(double value); 00045 00047 static bool IsInf(float value); 00048 00050 static bool IsInf(double value); 00051 00053 static bool IsNaNOrInf(float value) { return (IsNaN(value) || IsInf(value)); } 00054 00056 static bool IsNaNOrInf(double value) { return (IsNaN(value) || IsInf(value)); } 00057 00066 static float QuadAccel(float p, float v, float a, float t); 00067 00076 static float Lerp(float v1, float v2, float t); 00077 00088 static float Hermite(float v1, float a1, float v2, float a2, float t); 00089 00100 static float CatmullRom(float v1, float v2, float v3, float v4, float t); 00101 00102 }; 00103 00104 } // namespace Lumino 00105 00106 #endif // LUMINO_MATH_MATH_H