Тригонометрия



Представленные ниже функции могут заменить вам всетригонометрические функции библиотеки math (кроме atan).


Листинг C++

const double eps = 1e-8;
const double pi = 3.141592653589793238462643383;
double _abs (double x)
{
   return x < 0 ? - x : x;
}
double _sin (double x, double _eps = eps)
{
   if (x < 0) return - _sin (- x);
   if (x >= pi) return - _sin (x - pi);
   double sum = 0.0;
   double elem = x;
   int n = 1;
   while (_abs (elem) > _eps)
   {
      sum += elem;
      elem *= (- 1.000) * x * x / (double)(++ n) / (double)(++ n);
   }
   return sum;
}
double _cos (double x, double _eps = eps)
{
   return _sin (pi * 0.5 - x);
}
double _tan(double x)
{
   return _sin (x) / _cos (x);
}
double _asin(double x)
{
        return atan(x/sqrt(1-x*x));
}
double _acos(double x)
{
        return atan(sqrt(1-x*x)/x);
}

15.06.2007, 14:59

По всем вопросам обращаться: rumterg@gmail.com