2013-01-12 33 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(阿爾法)。 –