5

所以我正在使用一些matlab代码手动转换为c代码。我只是想知道是否有 ac 等效于我在 matlab 代码中看到的 sind 和 cosd 函数。我想这会以度数而不是 c sin 和 cos 函数以弧度返回结果。我想我可以将结果乘以 180/pi 但只是想知道 math.h 中是否有库函数我没有看到。或者即使 gsl 库中有一些东西可以做到这一点。

4

5 回答 5

10

H2CO3 的解决方案由于M_PI. 任何论点的通用安全版本是:

#define sind(x) (sin(fmod((x),360) * M_PI / 180))
于 2013-03-10T16:43:50.923 回答
3

不,C 标准库中的三角函数都以弧度工作。但是您可以轻松摆脱宏或内联函数:

#define sind(x) (sin((x) * M_PI / 180))

或者

inline double sind(double x)
{
    return sin(x * M_PI / 180);
}

请注意,当您想要更改函数的返回值(所谓的逆或“arcus”函数)时,需要进行相反的转换:

inline double asind(double x)
{
    return asin(x) / M_PI * 180;
}
于 2013-03-10T16:39:11.113 回答
1

不,它们在 C 库中不可用。您只会在 C 库中找到弧度值参数或返回值。

于 2013-03-10T16:39:35.967 回答
1

另外,请注意 sind 和 cosd 等不度为单位返回结果,它们以度为单位获取参数。asind 和 acosd 以度数返回它们的结果。

于 2013-03-10T16:44:31.600 回答
0

不在 C 库中。所有三角函数 C 库函数都将参数作为弧度值而不是度数。正如您所说,您需要自己执行转换或使用专用库。

于 2013-03-10T16:38:07.963 回答