2016-11-24 22 views
0

atan関数を使ってatan2にする方法はありますか?例C++ AtanからAtan2を作成する

float myAtan2(double a, double b) 
{ 
    float atan2val = //calculate atan2 using atan 
    return atan2val; 
} 

私は三角法では最高じゃない申し訳については !このような

+1

https://en.wikipedia.org/wiki/Atan2#Definition_and_computation – user4581301

+0

母、私はそれを投稿しようとしていた、user4581301。あなたが既にatan関数を持っているなら、これに対する解決策は簡単です。 –

+0

@RobertM。だから私はこの質問を投稿した、私はそれが簡単にatanを使用して行うことができますが、私は三角法にうまくいかないことを知っている。 – coddding

答えて

3

何か:

float myAtan2(double a, double b) 
{ 
    float atan2val; 
    if (b > 0) { 
     atan2val = atan(a/b); 
    } 
    else if ((b < 0) && (a >= 0) { 
     atan2val = atan(a/b) + pi; 
    } 
    else if ((b < 0) && (a < 0) { 
     atan2val = atan(a/b) - pi; 
    } 
    else if ((b = 0) && (a > 0)) { 
     atan2val = pi/2; 
    } 
    else if ((b = 0) && (a < 0)) { 
     atan2val = 0 - (p/2); 
    } 
    else if ((b = 0) && (a = 0)) { 
     atan2val = 1000;    //represents undefined 
    } 
    return atan2val; 
} 

あなたはおそらく、きれいにそれをコーディングすることができますが、それは私がここから得たロジック、です: https://en.wikipedia.org/wiki/Atan2#Definition_and_computation

"undefined"を表すために1000(arctanには不可能な値)を返します。おそらくNaNなどを使用して別のやり方をすることができます。

+1

合理的な答えですが、カットアンドペースト可能です。あなたは些細な問題に少し注意する必要があります。あなたは、Cargo Cult Programmingで卒業した人と働いていることを知りたくありません。 – user4581301

+1

@ user4581301私は14笑です、これはクラスや "卒業証書"を卒業したり、何かを悩んでいないか心配しないでください。これは私が楽しいために取り組んでいる小さなプログラムのためのものです。 – coddding

+0

合理的な懸念user45 ... –

関連する問題