IT/파이썬

[코딩도장] day26. 파이썬 두 점 사이의 거리 구하기

_하늘여우_ 2020. 9. 19. 23:23

출처 : unsplash

■ 들어가기

- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그


▶ Unit37. 두 점 사이의 거리 구하기

     - 37.1 두 점 사이의 거리 구하기

 

 

>> 37.1 두 점 사이의 거리 구하기 <<

 

1. 클래스로 점 구현하기

소스 (two_point.py) 결과
class Point2D :
    def __init__(self, x, y) :
        self.x = x
        self.y = y


p1 = Point2D(x=30, y=20)    # 점1
p2 = Point2D(x=60, y=50)    # 점2

print('p1: {} {}'.format(p1.x, p1.y))
print('p2: {} {}'.format(p2.x, p2.y))
p1: 30 20
p2: 60 50

 

2. 피타고라스의 정리로 두 점의 거리 구하기

- 피타고라스 정리(a^2 + b^2 = c^2)에 따라 p1, p2의 거리를 구하기 위해서 선 a와 b의 길이를 구함

소스 (two_point_distance.py) 결과
class Point2D :
    def __init__(self, x, y) :
        self.x = x
        self.y = y


p1 = Point2D(x=30, y=20)    # 점1
p2 = Point2D(x=60, y=50)    # 점2

# print('p1: {} {}'.format(p1.x, p1.y))
# print('p2: {} {}'.format(p2.x, p2.y))

a = p2.x - p1.x     # 선 a의 길이
b = p2.y - p1.y     # 선 b의 길이

c = math.sqrt( (a * a) + (b * b) )  # 제곱근 구하기 (import math 필요)
print(c)
42.42640687119285

- (a * a)는 pow(a, 2)로 표현 가능함

- 거듭제곱(power) 사용법 : math.pow(값, 지수)                /* 값을 지수만큼 거듭제곱한 값을 반환 */

=> (a * a) + (b * b) == math.pow(a, 2) + math.pow(b, 2)

- 파이썬에서 제공하는 거듭제곱 연산자 **를 사용해도 ok

=> (a * a) + (b * b) == (a ** 2) + (b ** 2)

 

[참고] 절댓값 함수

- 내장 함수 abc 또는 math 모듈의 fabs 함수 사용 (abs = absolute value)

- abs(값) : 정수는 절댓값을 정수로 반환, 실수는 절댓값을 실수로 반환

- math.fabs(값) : 절댓값을 실수로 반환