같은 의미로는 두 직선이 주어졌을 때 그 사이의 각도를 구하는 것
세점 A,B,C 가 있고
각 점은 구조체로써 x, y좌표를 가지고 있다면
angle(A,B,C) -> 점 B를 중심으로 하는 점 A, B, C 사이의 각도를 구할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
struct poly {
lld x, y;
};
#define M_PI 3.14159
double angle(poly& a, poly& b, poly& c) {
double aa, bb, cc;
double ang, temp;
aa = sqrt(pow(a.x - c.x, 2) + pow(a.y - c.y, 2));
bb = sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
cc = sqrt(pow(b.x - c.x, 2) + pow(b.y - c.y, 2));
temp = (pow(bb, 2) + pow(cc, 2) - pow(aa, 2)) / (2 * bb * cc);
ang = acos(temp);
ang = ang * (180 / M_PI);
return ang;
}
|
'algorithm > algorithm' 카테고리의 다른 글
전위 중위 후위 순회방법 (0) | 2020.04.24 |
---|---|
전위, 중위 정보로 트리 만들기 (0) | 2020.04.24 |
STL 사용할때 주의할 것(set,map,...) (0) | 2020.04.10 |
Point in a Polygon - 다각형 내부점 판단 (0) | 2020.04.07 |
좌표 시계/반시계방향 정렬 (0) | 2020.04.07 |