台灣最大程式設計社群網站
線上人數
679
 
會員總數:245119
討論主題:189029
歡迎您免費加入會員
討論區列表 >> C/C++ >> [C++]三角函數問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
[C++]三角函數問題
價值 : 10 QP  點閱數:13943 回應數:4

樓主

聰明笨小孩
門外漢
0 5
104 7
發送站內信

我有#include<cmath>
那請問sin,cos這些函數在vc裡面要怎麼用阿??
vc中90°是要用弧度(pi/2)還是角度(°)??

本篇文章發表於2005-05-18 19:56
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

小白
捐贈 VP 給 Marcus 檢舉此回應
C/C++ 的數學函式庫是用弧度的。
換言之,要處理度數,必須自己轉換。
要使用sin 、 cos 等函數,可以參考下面的範例程式。

輸入:度數
輸出: sin 、 cos 、 tan 的對應值
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
   long n,dp=15;
   cin >> n;
   cout << "sin " << n << " = " << fixed << setprecision(dp) << sin(2*acos(0)*n/180) << endl;
   cout << "cos " << n << " = " << cos(2*acos(0)*n/180) << endl;
   cout << "tan " << n << " = " << tan(2*acos(0)*n/180) << endl;
   return 0;
}

本篇文章回覆於2005-05-18 20:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
幾乎所有的程式語言的三角函數都是弧度
所以建議把pi/180 這個數值定義成常數

#define pi 0.017456 <------3.1415926/180 的結果

這樣可以有效增進程式速度和減少撰寫難度
本篇文章回覆於2005-05-18 23:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

小白
捐贈 VP 給 Marcus 檢舉此回應
雖然程式的速度會因為定義常數而增快,但是先定義常數會有 precision error 的問題,當處理準確的運算時會出現問題。
因此我還是較喜歡使用 2*acos(0) 來取得準確的「丌」值。

也謝謝 QQ 的意見。
本篇文章回覆於2005-05-21 00:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
其實...我的做法主要都是用在3D 遊戲中
反正不需要太精確, 小數以下5位已經很厲害了
為了拼速度
程式中連sin, cos都不太用的, 預先在初始化的時候就已經先算出360度每個角度的值
要用的時候直接查表帶入

至於數學研究的精確度問題,
這個就不是我的專長了哩^__^a
本篇文章回覆於2005-05-21 00:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.