#include "fast_trig.h" #include "num/num.h" static libnum::num cosTable[360]; static libnum::num sinTable[360]; void Fast_Trig_Init( void ) { for(int u=0; u<360; u++) { cosTable[u] = libnum::num( cos( u * PI / 180 ) ); sinTable[u] = libnum::num( sin( u * PI / 180 ) ); } } libnum::num FastCos( int16_t angle ) { if (angle>=0 and angle<360) return cosTable[ angle ]; else { int16_t input = angle; if (input<0) { while (input<0) input+=360; return cosTable[ angle ]; } else { while (input>=360) input-=360; return cosTable[ angle ]; } } } libnum::num FastSin( int16_t angle ) { if (angle>=0 and angle<360) return sinTable[ angle ]; else { int16_t input = angle; if (input<0) { while (input<0) input+=360; return sinTable[ angle ]; } else { while (input>=360) input-=360; return sinTable[ angle ]; } } } libnum::num FastTan( int16_t angle ) { //TODO : work on representation of infinite number for angle = 90 degrees or angle = 270 degrees return libnum::num(0); }