Counter Clock Wise는 오른손 법칙을 이용해 주어진 세 점의 방향성을 알 수 있는 알고리즘입니다.
위와 같이 세 점이 주어질 때 이들 벡터와 CCW 알고리즘을 이용해 세 점의 방향을 구할 수 있습니다.
A를 기준으로 B와 C에 대한 벡터들의 외적을 구합니다.
여기서는 외적의 결과가 음수기 때문에 오른손 법칙에 의해 세 점이 시계 방향을 갖는 것을 확인할 수 있습니다.
2차원에서의 외적은 z값을 0으로 놓고 계산하여 구할 수 있습니다.
x1, y2, z3 = map(int, input().split())
x2, y2, z3 = map(int, input().split())
x3, y3, z3 = map(int, input().split())
u = (x2 - x1, y2 - y1, z2 - z1)
v = (x3 - x1, y3 - y1, z3 - z1)
product = u[1]*v[2] - u[2]*v[1] - (u[0]*v[2] - u[2]*v[0]) + \
u[0]*v[1] - u[1]*v[0]
if product > 0: res = 1
elif product == 0: res = 0
else: res = -1
print(res)
반시계 방향인 경우 1, 평행인 경우 0, 시계 방향인 경우 -1을 출력합니다.
'CS > 알고리즘' 카테고리의 다른 글
Python 코테용 소스코드 저장 (0) | 2023.02.24 |
---|---|
[Python] 프림 알고리즘(Prim's Algorithm) (0) | 2023.01.22 |
[Python] union-find 알고리즘 (0) | 2023.01.18 |
[Python] BFS/DFS (Breadth-First Search, Depth-First Search) 구현 (0) | 2023.01.16 |
유클리드 호제법 (0) | 2023.01.11 |