-
기준 좌표(0,0)에서 두 좌표간의 각도 구하기 (벡터, 내적)알고리즘과 언어/common 2022. 1. 24. 17:43
기준 좌표(0,0)에서 (x, y)와 (a, b) 두 좌표 간의 각도를 구해보자.
단, (x,y)나 (a,b)가 (0,0)이면 안된다.
1. 첫 번째 좌표(벡터)의 크기를 구한다.
#include <cmath> double v1 = sqrt(pow(x, 2) + pow(y, 2))
2. 두번째 좌표(벡터)의 크기를 구한다.
#include <cmath> double v2 = sqrt(pow(a, 2) + pow(b, 2))
3. 백터의 내적을 구한다.
#include <cmath> double inner = (x * a) + (y * b)
4. 각을 계산하기 위해 방정식에 값을 대입한다.
#include <cmath> double theta = acos(inner / (v1 * v2))
*acos는 cmath라이브러리에서 지원하는 역 코사인 함수다.*
반환된 세타를 각도(ex. 60도)로 고치기 위해서는
#include <cmath> theta = (theta * M_PI) / 180
*M_PI 는 cmath에서 제공하는 파이 상수다.*
느낀 점)
처음으로 선형대수학의 필요성을 느꼈다.
나처럼 문제에 맞닥뜨려 당황한 문과생을 위해 쉽게 풀이한 방법이며, 역 코사인과 내적에 대해 더 공부할 필요가 있다.
참조 사이트 :
https://www.mathway.com/ko/popular-problems/Trigonometry/392481
https://engineershelp.tistory.com/31
https://rangsub.tistory.com/15
'알고리즘과 언어 > common' 카테고리의 다른 글
다익스트라 알고리즘 (0) 2022.03.02 플로이드-워샬 알고리즘 (Floyd-Warshall Algorithm) (0) 2021.07.16