2013-01-12 32 views
-4

嗨错误的答案,我想通过使用C中的正弦和余弦找到一个x,y方向,我已经包括math.h中,并用-lm编译。 我知道“拉德”给出了正确的结果,但下一行没有,我一直盯着这个小时,并在这里搜索问题,任何人都可以看到这个问题。COS和罪恶给用C

double cos_sinY(int cos_sinus, double x, double y) 
{ 
    double rad, y_value, pi = 3.1415;//8979323846 
    rad = (double)cos_sinus/180*pi; 
    y_value = x*(sin(rad))+y*(cos(rad)); 
    return y_value; 
} 
+0

检查您的公式,然后检查数据类型。 –

+4

你期待什么O/P?你得到了什么O/P?没人在这里猜这个魔术师。你正在使用浮点数,所以可能会产生效果。好阅读:http://floating-point-gui.de –

+0

你想再次计算什么? –

回答

1

鉴于提问提供的数学公式,“X_1 = X_0 * COS(阿尔法) - y_0 * SIN(阿尔法),Y_1 = X_0 * SIN(阿尔法)+ y_0 * COS(阿尔法)”,我用几个值测试了问题中的代码。在每种情况下,代码都会产生我期望的值。

该公式是在平面内旋转的点的公式。旋转是数学家关于正向(逆时针旋转,(1,0)旋转90º为(0,1))的方向。

实施例:cos_sinus(30,0.3,0.6)产生0.669616。

如果这不是提问观察一下,再有就是在他们的代码中的一些其他问题在于这超出了他们的问题已经披露。

代码应被修改为使用更精确的值对于π,如3.1415926535897932384626433,而不是3.1415。

+0

你好,感谢它的工作原理是这样不太精确:X_1 = X_0 * COS(阿尔法) - y_0 *罪(阿尔法)和Y_1 = X_0 *罪(阿尔法)+ y_0 * COS(阿尔法)。 –