2013-02-17 167 views
17

我需要在C程序中計算一個角度。下面是JAVA的方法,我需要轉換爲C.C語言中是否有函數來計算度/弧度?

private static double calculateDirection(double x, double y) 
{ 
    return Math.toDegrees(Math.atan2(y, x)); 
} 

是否有類似於C語言toDegrees的功能,所以我不必由我自己寫所有的代碼? 謝謝

+2

我聽說C實現了基於y的符號的有符號劃分的atan。所以,雖然看起來微不足道,但並不需要聰明。謝謝 – 2013-02-17 12:07:57

回答

28
#include <math.h> 

inline double to_degrees(double radians) { 
    return radians * (180.0/M_PI); 
} 
+0

我在此期間發現它,但謝謝! – 2013-02-17 11:57:41

+0

¸雖然包含math.h,但是沒有找到M_PI?任何想法 – 2013-02-17 12:15:12

+1

某些math.h未獲取M_PI定義。添加'#ifndef M_PI #define M_PI 3.1415926535#endif'到'fix'that @AntunTun – 2014-06-04 21:37:13

7

沒有必要使用這樣的方法。轉換爲度數非常簡單:

double radians = 2.0; 
double degrees = radians * 180.0/M_PI; 

如果需要,將其轉換爲函數。

M_PI順便說一下在math.h中定義*。


*在大多數編譯器中。

+6

儘管如此,這仍然是最佳實踐。 – 2013-02-17 11:44:44

+6

@OliCharlesworth嗯,我不會爲他做所有的工作。 – antonijn 2013-02-17 11:45:49

+6

不,這很好;)我只是在爭辯「不需要使用方法」...... – 2013-02-17 11:46:25

0

如果您喜歡把剛纔複製/粘貼一對夫婦宏:

#include <math.h> 
#define degToRad(angleInDegrees) ((angleInDegrees) * M_PI/180.0) 
#define radToDeg(angleInRadians) ((angleInRadians) * 180.0/M_PI) 

如果你想省略#include,更換這裏面從math.h頭複製該行:

#define M_PI 3.14159265358979323846264338327950288