2016-11-24 9 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 ... –