Yehyun Suh

[수학 to 파이썬] 파이썬으로 두 직선 사이의 각도 구하기 본문

파이썬/수학 to 파이썬

[수학 to 파이썬] 파이썬으로 두 직선 사이의 각도 구하기

Yehyun Suh 2023. 8. 13. 14:18

위와 같이 두 직선이 주어졌을 때, 두 직선 사이의 각도 $\theta$는 어떻게 구할까?

1. 두 직선 사이의 각도 구하기

$x$축과 평행한 직선 하나를 긋고 $y=ax+b$의 기울기를 표현하는 $\theta_1$과 $y=cx+d$의 기울기를 표현하는 $\theta_2$를 보면, $$\theta=180-\theta_1+\theta_2$$

인 것을 알 수 있다. 이때 $\theta_1$은 $$\tan{\theta_1}=a \\ \theta_1=\arctan{a}$$이며, $\theta_2$는 $$\tan{\theta_2}=c \\ \theta_2=\arctan{c}$$

로 구할 수 있다. 따라서 두 직선 사이의 각도 $\theta$는 $$\theta=180-\arctan{a}+\arctan{c}$$이다.

2. 코드

만약 math 라이브러리를 다운 받은 적이 없다면, 터미널에서

pip3 install math

를 실행하여 라이브러리를 다운 받는다. $theta$는 두 선분 사이의 각도 중 더 작은 것이라고 가정하고 작성하였다.

import math


def angle_between_two_lines(slope1: float, slope2: float) -> float:
    """
    두 선분 사이의 각도를 반환하는 함수
        Args:
            slope1 (float): 첫번째 선분의 기울기
            slope2 (float): 두번째 선분의 기울기
        Return:
            두 선분 사이의 각도 (float)
    """
    theta_1 = math.degrees(math.atan(slope1))
    theta_2 = math.degrees(math.atan(slope2))
    if theta_1 > theta_2:
        theta = 180 - theta_1 + theta_2
    else:
        theta = 180 - theta_2 + theta_1

    if theta < 90:
        return theta
    else:
        return 180 - theta