проблему синуса я вобщем-то решил
если кому-нить надо, воть
Код: Выделить всё
/*
Вычисление синуса
На входе: a - типа double(угол в градусах)
На выходе: синус угла
*/
double sin_rad_grad(double x)
{
double intpart;
modf(x/360,&intpart);
if (abs(intpart)>0)
{
if (x<0) x=x-360*intpart;
else x=x+360*intpart;
}
if (x<0) x=x+360;
if ((x>=0) && (x<180)) return sin(x*M_PI/180);
if ((x>=180) && (x<360)) return -sin((x-180)*M_PI/180);
}