알고리즘과 언어/common

기준 좌표(0,0)에서 두 좌표간의 각도 구하기 (벡터, 내적)

nextcoder 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

 

두 벡터 사이의 각 구하기 (1.8,-2.0) , (3.8,-1.4) | Mathway

벡터의 크기를 구하려면, 벡터의 각 성분을 제곱하여 더한 다음 제곱근을 취한 값을 계산합니다.

www.mathway.com

https://engineershelp.tistory.com/31

 

【수학,공학】rad (radian) ↔ 도 (˚) 회전 단위 변환하기

대학 4학년 1학기는 어떻게 보냈는지 나중에 알아보려고 도서관을 다닐 때마다 밑에 사진처럼 자리표를 끈어서 보관했었습니다. 결과는 3월달 0개, 4월달 31개, 5월달 23개, 6월달 20개였습니다. 1학

engineershelp.tistory.com

https://rangsub.tistory.com/15

 

[Algorithm] [C++] 부채꼴 범위 안의 적 판별하기

해당 문제는 최근 한 기업의 입사 코딩테스트에서 나왔던 문제입니다. 유명한 온라인 게임 리그오브레전드의 '애쉬' 챔피언이 스킬을 사용하는 그림이 이 문제의 설명을 돕는 이미지로 출제 되

rangsub.tistory.com