2013-02-17 14 views
17

मुझे सी प्रोग्रामम में एक कोण की गणना करने की आवश्यकता है। यहाँ जावा से एक विधि है कि मैं सीडिग्री/रेडियंस की गणना करने के लिए सी भाषा में कोई फ़ंक्शन है?

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

में बदलने की जरूरत है ताकि मैं अपने आप को करके सभी कोड लिखने की जरूरत नहीं है है वहाँ सी भाषा में toDegrees की तरह एक समारोह है? धन्यवाद

+2

मैंने सुना है कि सी y के हस्ताक्षर के आधार पर हस्ताक्षरित विभाजन के साथ एटान लागू करता है। इसलिए, स्मार्ट कार्य करने की कोई आवश्यकता नहीं है, हालांकि यह मामूली दिखता है। धन्यवाद –

उत्तर

28
#include <math.h> 

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

मुझे इस दौरान मिला लेकिन धन्यवाद! –

+0

¸ इसे M_PI नहीं मिला है, हालांकि math.h शामिल है? कोई विचार –

+1

कुछ math.h M_PI परिभाषित नहीं करते हैं। '#ifndef M_PI #define M_PI 3.1415926535 # endif' को' ठीक करें 'करने के लिए जोड़ें @AntunTun –

7

ऐसी विधि का उपयोग करने की कोई आवश्यकता नहीं है। डिग्री में कनवर्ट करना बहुत आसान है:

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

यदि आप चाहें तो इसे एक फ़ंक्शन में बदलें।

M_PI * math.h में परिभाषित किया गया है।


* अधिकांश कंपाइलरों में।

+6

हालांकि, यह अभी भी एक समारोह में सबसे अच्छा अभ्यास होगा। –

+6

@ ओली चेहरल्सवर्थ ठीक है, मैं उसके लिए काम नहीं कर रहा हूं। – antonijn

+6

नहीं, यह ठीक है;) मैं बस विवाद कर रहा हूं "किसी विधि का उपयोग करने की आवश्यकता नहीं है" ... –

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 
संबंधित मुद्दे