2013-02-17 14 views
17

Potrzebuję obliczyć kąt w programie C. Oto metoda od JAVA, że trzeba konwertować do C.Czy istnieje funkcja języka C do obliczania stopni/radianów?

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

Czy istnieje funkcja jak toDegrees w języku C, więc nie trzeba pisać cały kod od siebie? Dziękujemy

+2

Słyszałem, że C implementuje atan ze znakiem podziału opartym na znaku y. Nie trzeba więc działać mądrze, choć wygląda to banalnie. dziękuję –

Odpowiedz

28
#include <math.h> 

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

Znalazłem to w międzyczasie, ale dzięki! –

+0

¸Nie znajduje M_PI, chociaż zawiera matematykę .h? Wszelkie pomysły –

+1

Niektóre obliczenia matematyczne nie mają zdefiniowanego M_PI. Dodaj '#ifndef M_PI #define M_PI 3.1415926535 # endif', aby" naprawić "@AntunTun –

7

Nie ma potrzeby stosowania takiej metody. Konwersja na stopnie jest bardzo prosta:

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

Włącz tę funkcję, jeśli chcesz.

M_PI jest * zdefiniowany w math.h przy okazji.


* w większości kompilatorów.

+6

Jednak nadal byłoby to najlepszą praktyką w tej funkcji. –

+6

@OliCharlesworth Cóż, nie zamierzam zrobić dla niego pracy. – antonijn

+6

Nie, to jest w porządku;) Po prostu dyskutuję "nie trzeba używać metody" ... –

0

Jeśli preferencji jest po prostu skopiować/wkleić kilka makr:

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

A jeśli chcesz pominąć #include, zastąpienie tej Zgodnie z tym, który został skopiowany z nagłówka math.h:

#define M_PI 3.14159265358979323846264338327950288 
Powiązane problemy