클래스를 활용하여 2차원 평면에서 위치를 표현한 뒤 두 점 사이의 거리를 구하기
Point2D 클래스를 구현하고 x와 y를 속성으로
class Point2D:
def __init__(self, x, y):
self.x = x
self.y = y
이걸 활용해 점 두개 만들기 p1, p2
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
!
a = p2.x - p1.x # 선 a의 길이
b = p2.y - p1.y # 선 b의 길이
import math
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
a = p2.x - p1.x # 선 a의 길이
b = p2.y - p1.y # 선 b의 길이
c = math.sqrt((a * a) + (b * b)) # (a * a) + (b * b)의 제곱근을 구함
print(c) # 42.42640687119285
c = math.sqrt((a a) + (b b))
c = math.sqrt(math.pow(a, 2) + math.pow(b, 2))
c = math.sqrt((a 2) + (b 2))
표준 입력으로 x, y 좌표 4개가 입력되어 Point2D 클래스의 인스턴스 리스트에 저장됩니다. 여기서 점 4개는 첫 번째 점부터 마지막 점까지 순서대로 이어져 있습니다. 다음 소스 코드를 완성하여 첫 번째 점부터 마지막 점까지 연결된 선의 길이가 출력되게 만드세요.
import math
class Point2D:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
length = 0.0
p = [Point2D(), Point2D(), Point2D(), Point2D()]
p[0].x, p[0].y, p[1].x, p[1].y, p[2].x, p[2].y, p[3].x, p[3].y = map(int, input().split())
for i in range(len(p)-1):
a = p[i+1].x - p[i].x # 선 a의 길이
b = p[i+1].y - p[i].y # 선 b의 길이
length += math.sqrt((a ** 2) + (b ** 2))
print(length)
점 사이의 거리를 하나씩 구해보면
c1 = math.sqrt(( (p[1].x - p[0].x) 2) + (p[1].y - p[0].y 2) )
c2 = math.sqrt(( (p[2].x - p[1].x) 2) + (p[2].y - p[1].y 2) )
c3 = math.sqrt(( (p[3].x - p[2].x) 2) + (p[3].y - p[2].y 2) )
length = c1 + c2 + c3
이걸 반복문 사용해서 표현하면
for i in range(len(p)-1):
a = p[i+1].x - p[i].x # 선 a의 길이
b = p[i+1].y - p[i].y # 선 b의 길이
length += math.sqrt((a 2) + (b 2))