00001 #ifndef __NNCMATH_H 00002 #define __NNCMATH_H 00003 00004 #define MULTIPLIER 1000 00005 #define SIN_TABLE_SIZE 10000 00006 #define SIN_DEFAULT_VALUE -2.0 00007 #define COS_TABLE_SIZE 10000 00008 #define COS_DEFAULT_VALUE -2.0 00009 #define TAN_TABLE_SIZE 10000 00010 #define TAN_DEFAULT_VALUE -2.0 00011 #define ARC_SIN_TABLE_SIZE 10000 00012 #define ARC_SIN_DEFAULT_VALUE -1.0 00013 #define ARC_COS_TABLE_SIZE 10000 00014 #define ARC_COS_DEFAULT_VALUE -1.0 00015 #define ARC_TAN_TABLE_SIZE 40000 00016 #define ARC_TAN_DEFAULT_VALUE -1.0 00017 #define ROOT_TABLE_SIZE 100000 00018 #define ROOT_DEFAULT_VALUE -1.0 00019 #include <math.h> 00020 00021 typedef struct _degree { 00022 double value; 00023 } degree; 00024 00025 typedef struct _radian { 00026 double value; 00027 } radian; 00028 00029 00030 00031 class NNCMath { 00032 public: 00033 static void MathInit(); 00034 static double Sin(degree d); 00035 static double Cos(degree d); 00036 static double Tan(degree d); 00037 static double Sin(radian r); 00038 static double Cos(radian r); 00039 static double Tan(radian r); 00040 static radian ArcSin(double d); 00041 static radian ArcCos(double d); 00042 static radian ArcTan(double d); 00043 static double SRoot(double d); 00044 static const double PI; 00045 static const double TWO_PI; 00046 static const double PI_OVER_TWO; 00047 private: 00048 static double sinTable[SIN_TABLE_SIZE]; 00049 static double cosTable[COS_TABLE_SIZE]; 00050 static double tanTable[TAN_TABLE_SIZE]; 00051 static double arcSinTable[ARC_SIN_TABLE_SIZE]; 00052 static double arcCosTable[ARC_COS_TABLE_SIZE]; 00053 static double arcTanTable[ARC_TAN_TABLE_SIZE]; 00054 static double sRootTable[ROOT_TABLE_SIZE]; 00055 00056 }; 00057 00058 #endif 00059