DB

[MySQL] ASIN, ACOS, ATAN 역삼각함수 활용법

인생아 2025. 7. 24. 22:51
반응형

MySQL은 일반적인 삼각함수뿐만 아니라 역삼각함수(Inverse Trigonometric Functions)도 지원한다. 이는 사인, 코사인, 탄젠트 값을 주고 각도(라디안)를 구할 때 사용하는 함수들로, MySQL에서는 ASIN(), ACOS(), ATAN()으로 제공된다. 이 함수들은 주로 각도 역산, 좌표계 방향 계산, 경사도 추출, 기하 계산 등에 활용된다.

ASIN() 함수 – 아크사인 (inverse sine)

ASIN(x) 함수는 사인 값 x에 대한 아크사인(asin), 즉 x가 어느 각도의 사인인지라디안(radian)으로 반환한다.

SELECT ASIN(0.5);     -- 결과: 약 0.523 라디안
SELECT DEGREES(ASIN(0.5)); -- 결과: 30°

입력 값의 유효 범위는 -1 ≤ x ≤ 1이다. 범위를 벗어나면 NULL이 반환된다.

예제: 사인값으로 각도 구하기

SELECT angle_value,
       DEGREES(ASIN(angle_value)) AS 각도
FROM angle_table
WHERE angle_value BETWEEN -1 AND 1;

센서 데이터나 회전값 등에서 사인값으로부터 원래 각도를 역추적할 때 유용하다.

반응형

ACOS() 함수 – 아크코사인 (inverse cosine)

ACOS(x) 함수는 코사인 값 x에 대한 아크코사인(acos) 값을 라디안으로 반환한다.

SELECT ACOS(0.5);     -- 결과: 약 1.047 라디안
SELECT DEGREES(ACOS(0.5)); -- 결과: 60°

ACOS도 입력 값 범위는 -1 ≤ x ≤ 1이며, 보통 cos(θ) = x 관계에서 θ를 구할 때 사용된다.

예제: 두 벡터 사이 각도 구하기

SELECT DEGREES(ACOS(dot_product / (length1 * length2))) AS 벡터사이각도
FROM vector_data;

코사인을 활용한 벡터 각도 공식으로, 2D/3D 좌표 계산이나 게임 엔진 수식 구현에도 활용된다.

ATAN() 함수 – 아크탄젠트 (inverse tangent)

ATAN(x) 함수는 탄젠트 값 x에 대한 아크탄젠트(atan) 값을 라디안으로 반환한다. x = y / x와 같은 경사비(기울기)를 이용해 각도를 구할 때 쓰인다.

SELECT ATAN(1);       -- 결과: 약 0.785 라디안
SELECT DEGREES(ATAN(1)); -- 결과: 45°

예제: 높이와 밑변으로 각도 구하기

SELECT height, width,
       DEGREES(ATAN(height / width)) AS 경사각도
FROM slope_data;

길이로부터 기울기를 계산해 경사도, 탄도 계산, 지도 데이터 처리 등에 자주 활용된다.

확장 함수: ATAN2(y, x)

MySQL은 ATAN2(y, x) 함수도 지원한다. 이는 y축과 x축 길이를 받아 정확한 사분면 기준 각도 계산을 수행한다.

SELECT DEGREES(ATAN2(10, 10)); -- 결과: 45°
SELECT DEGREES(ATAN2(-10, -10)); -- 결과: -135°

ATAN(y/x)는 부호가 모두 양수인지 음수인지 모르면 사분면 판별이 안 되는데, ATAN2()는 이 문제를 해결한다.

예제: 사용자 위치 각도 계산

SELECT user_id,
       DEGREES(ATAN2(y2 - y1, x2 - x1)) AS 이동방향
FROM movement;

위치 기반 시스템에서 두 지점 사이의 방향 벡터를 각도로 변환할 수 있어 GPS 기반 앱에서도 활용된다.

정리

  • ASIN(x)는 x가 사인일 때의 라디안 각도를 구한다.
  • ACOS(x)는 x가 코사인일 때의 라디안 각도를 구한다.
  • ATAN(x)는 기울기(탄젠트값)로부터 각도를 구한다.
  • ATAN2(y, x)는 정확한 사분면 각도를 반환하며, 실무에서 ATAN보다 더 선호된다.
  • 모두 반환값은 라디안이므로 사람이 읽을 수 있는 각도로 바꾸려면 DEGREES()를 함께 사용해야 한다.
  • 역삼각함수는 각도를 복원하거나 위치·방향 연산에 매우 중요한 도구이다.

참고 문서

https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_asin
https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_acos
https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_atan
https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_atan2

 

반응형