Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL의 atan2() 함수 – 사용법과 예제 총정리

atan2() 함수는 y와 x 좌표에 대한 역탄젠트(arctangent) 값을 반환하는 함수입니다. 여기서 y와 x는 각각 y좌표와 x좌표 값을 의미하며, atan2()는 C++ STL에 내장된 함수로 헤더 파일에 정의되어 있습니다.

atan2() 함수의 구문

atan2(dataType var1, dataType var2)

구문에서 확인할 수 있듯이, atan2() 함수는 float, double 또는 long double 데이터 타입의 두 매개변수 var1var2를 받습니다. var1은 y 좌표, var2는 x 좌표를 나타냅니다.

atan2() 함수가 반환하는 값은 -π부터 π 사이의 범위를 가지며, 이는 점 (x, y)와 양의 x축 사이의 각도(라디안)입니다.

일반적인 atan(y/x) 함수와 달리, atan2()는 x와 y를 개별 인자로 받기 때문에 사분면(quadrant) 정보를 그대로 유지할 수 있어 더 정확한 각도 계산이 가능합니다. 또한 x가 0인 경우에도 0으로 나누는 오류 없이 안전하게 동작한다는 장점이 있습니다.

예제 1: 기본 사용법

다음은 C++에서 atan2() 함수를 사용하는 프로그램입니다.

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    double y = 10, x = 5, ans;
    ans = atan2(y,x);
    cout << "atan2("<< y <<"/"<< x <<") = " << ans << endl;
    return 0;
}

출력 결과

atan2(10/5) = 1.10715

위 프로그램의 동작 순서는 다음과 같습니다.

먼저 변수 y와 x를 초기화합니다. 그다음 atan2() 함수를 사용하여 y와 x에 대한 역탄젠트 값을 구하고 변수 ans에 저장합니다. 마지막으로 ans의 값을 화면에 출력합니다. 이 과정은 아래 코드 스니펫으로 확인할 수 있습니다.

double y = 10, x = 5, ans;
ans = atan2(y,x);
cout << "atan2("<< y <<"/"<< x <<") = " << ans << endl;

atan2() 함수는 라디안 값을 반환하기 때문에, 출력 결과 1.10715는 라디안 단위의 각도입니다.

예제 2: 라디안을 도(Degree)로 변환

atan2() 함수의 결과값은 라디안 단위이므로, 필요에 따라 도(degree) 단위로 변환하여 출력할 수도 있습니다. 변환 공식은 도 = 라디안 × 180 / π입니다.

이를 보여주는 프로그램은 다음과 같습니다.

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    double y = 10, x = 5, ans;
    ans = atan2(y,x);
    ans = ans*180/3.14159;
    cout << "atan2("<< y <<"/"<< x <<") = " << ans << endl;
    return 0;
}

출력 결과

atan2(10/5) = 63.435

위 프로그램에서는 먼저 atan2() 함수를 사용하여 y와 x의 역탄젠트 값을 구합니다. 그런 다음 이 값을 180/π를 곱해 도(degree) 단위로 변환하고, 최종 결과를 출력합니다. 핵심 코드는 다음과 같습니다.

double y = 10, x = 5, ans;
ans = atan2(y,x);
ans = ans*180/3.14159;
cout << "atan2("<< y <<"/"<< x <<") = " << ans << endl;

이처럼 atan2() 함수는 좌표 평면상의 점이 이루는 각도를 정확하게 계산할 때 매우 유용하며, 게임 개발, 로봇공학, 그래픽스 등 다양한 분야에서 활용됩니다.