CrossFramework Library

XBase/Math.hpp

説明を見る。
00001 
00006 #if defined(XBASE_INCLUDED_MATH_HPP)
00007 #else
00008 #define XBASE_INCLUDED_MATH_HPP
00009 
00010 //------------------------------------------------------------
00011 #include <XBase/BuiltInTypes.hpp>
00012 #include <XBase/RuntimeAssert.hpp>
00013 
00014 //------------------------------------------------------------
00015 namespace XBase {
00016     class Angle;
00017 }
00018 
00019 //------------------------------------------------------------
00020 namespace XBase {
00022 
00023 
00027     struct Math
00028     {
00029         //============================================================
00031 
00032 
00034         template< typename T >
00035         static const T Min( const T aA1 , const T aA2 )
00036         {
00037             return aA1 < aA2 ? aA1 : aA2;
00038         }
00039         
00041         template< typename T >
00042         static const T Max( const T aA1 , const T aA2 )
00043         {
00044             return aA1 < aA2 ? aA2 : aA1;
00045         }
00046 
00048         
00049         //============================================================
00051 
00052 
00053         static f32 AbsF32( f32 aVal )
00054         {
00055             return aVal < 0 ? -1.0f * aVal : aVal;
00056         }
00058         static s32 AbsS32( s32 aVal )
00059         {
00060             return aVal < 0 ? -1 * aVal : aVal;
00061         }
00063 
00064         //============================================================
00066 
00067 
00074         static f32 ClampF32( f32 aMin , f32 aValue , f32 aMax );
00075 
00080         static bool IsInRangeF32( f32 aMin , f32 aValue , f32 aMax );
00082 
00083         //============================================================
00085 
00086         static bool IsEqualsF32( f32 value1 , f32 value2 ); 
00087         static bool IsLessEqualsF32( const f32 lhs , const f32 rhs ); 
00088         static bool IsLessF32( const f32 lhs , const f32 rhs ); 
00089         static bool IsZeroF32( const f32 ); 
00090 
00091 
00092         //============================================================
00094 
00095         static f32 SinF32( const Angle& ); 
00096         static f32 CosF32( const Angle& ); 
00097         static f32 TanF32( const Angle& ); 
00098         static f32 CecF32( const Angle& ); 
00099         static f32 SecF32( const Angle& ); 
00100         static f32 CotF32( const Angle& ); 
00101 
00102 
00103         //============================================================
00105 
00106         static f32 SqrtF32( f32 val ); 
00107 
00108 
00109         //============================================================
00111 
00112         static f32 CeilF32( f32 val ); 
00113         static f32 FloorF32( f32 val ); 
00114 
00115 
00116         //============================================================
00118 
00119 
00126         template< typename T >
00127         static const T Interpolation( const T& aVal1 , const T& aVal2 , const f32 aRate )
00128         {
00129             XBASE_RANGE_ASSERT_EMIN_EMAX( 0.0f , aRate , 1.0f );
00130             return aVal1 + ( aVal2 - aVal1 ) * aRate;
00131         }
00133     };
00135 
00136 }
00137 //------------------------------------------------------------
00138 #endif
00139 // EOF
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義