mirror of https://github.com/encounter/SDL.git
Fixed bug 2245 - add SDL_acos and SDL_asin
Sylvain Here's some code to add arc cosine, and arc sin functions to SDL_stdlib.c There are plainly written using SDL_atan.
This commit is contained in:
parent
923709a699
commit
e4146267fa
|
@ -340,6 +340,8 @@ extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, const char
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern DECLSPEC double SDLCALL SDL_acos(double x);
|
||||||
|
extern DECLSPEC double SDLCALL SDL_asin(double x);
|
||||||
extern DECLSPEC double SDLCALL SDL_atan(double x);
|
extern DECLSPEC double SDLCALL SDL_atan(double x);
|
||||||
extern DECLSPEC double SDLCALL SDL_atan2(double x, double y);
|
extern DECLSPEC double SDLCALL SDL_atan2(double x, double y);
|
||||||
extern DECLSPEC double SDLCALL SDL_ceil(double x);
|
extern DECLSPEC double SDLCALL SDL_ceil(double x);
|
||||||
|
|
|
@ -112,3 +112,29 @@ double atan(double x)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
libm_hidden_def(atan)
|
libm_hidden_def(atan)
|
||||||
|
|
||||||
|
double SDL_acos(double val)
|
||||||
|
{
|
||||||
|
double result;
|
||||||
|
if (val == -1.0) {
|
||||||
|
result = M_PI;
|
||||||
|
} else {
|
||||||
|
result = SDL_atan(SDL_sqrt(1.0 - val * val) / val);
|
||||||
|
if (result < 0.0)
|
||||||
|
{
|
||||||
|
result += M_PI;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
double SDL_asin(double val)
|
||||||
|
{
|
||||||
|
double result;
|
||||||
|
if (val == -1.0) {
|
||||||
|
result = -(M_PI / 2.0);
|
||||||
|
} else {
|
||||||
|
result = (M_PI / 2.0) - SDL_acos(val);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue