由于 PS3 3.40 SDK 引起的某些编译器问题,我无法使用 c++ 函数 sin()
和 cos()
。 sin()
& cos()
的计算是什么,所以我可以在不需要 math.h
的情况下使用函数?
到目前为止,我已经想出了这些,但它们似乎无法正常运行?
float sin(float deg) {
bool neg = false;
while (deg >= 360) deg = deg - 360;
while (deg < 0) deg = deg + 360;
if (deg > 180) {
deg = deg - 180;
neg = true;
}
float ret = (float)(4*deg*(180-deg))/(40500-(deg*(180-deg)));
if (neg)return ret*-1;
return ret;
}
float cos(float AnglesDeg)
{
float AnglesRad = DegreesToRadians(AnglesDeg);
float Rad = (float)(PI/2.0f)-AnglesRad;
float ang = RadiansToDegrees(Rad);
return sin(ang);
}
原文由 JeffCoderr 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用泰勒级数自行实现。代码很简单:
正如你所说,你没有 math.h,我为这个算法做了一个简单的幂函数。您还需要一个函数来计算阶乘数。他们来了:
PI 和 TERMS 只是我使用的预处理器指令(
#define
的),PI 3.14159(在我的情况下,我使用了 50 位精度的 pi,这是完全没有必要的)和 TERMS 为 7。