Po pierwsze, argumenty funkcji trygonometrycznych w C/C++ wyrażone są w radianach, nie w stopniach. Zachodzi prosta zależność: 2*PI radianów odpowiada 360 stopniom. Jeśli chcesz obliczyć wartość sinus(30*), to dokonujesz prostej konwersji:
#define PI 3.14159265
double ang = 30.;
cout << sin(ang * PI / 180); // 0.5
Po drugie, funkcja asin() wykonuje odwrotną operację, pod warunkiem że operujemy na radianach:
x = sin(ang);
ang = asin(x);
Dlatego asin(0.5) zwraca wartość w radianach: 0.5235987755982989. Wystarczy teraz przekonwertować je na stopnie:
double x = asin(0.5) * 180 / PI; // 30.000