|
|
- import math
-
-
- # version with 2 separate functions
-
- def distance(p1, p2):
- return math.sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)
-
- def perimeter(polygon):
- perimeter = 0
- points = polygon + [polygon[0]]
- for i in range(len(polygon)):
- perimeter += distance(points[i], points[i + 1])
- return perimeter
-
-
- # oop version with classes
-
- class Point:
-
- def __init__(self, x, y):
- self.x = x
- self.y = y
-
- def distance(self, p2):
- return math.sqrt((self.x - p2.x) ** 2 + (self.y - p2.y) ** 2)
-
-
- class Polygon:
-
- def __init__(self, points = []):
- self.vertices = []
- for point in points:
- if isinstance(point, tuple):
- # *point splits point into 2 parameters for Point.__init__()
- point = Point(*point)
- self.vertices.append(point)
-
- def add_point(self, point):
- self.vertices.append((point))
-
- def perimeter(self):
- perimeter = 0
- try:
- points = self.vertices + [self.vertices[0]]
- except IndexError:
- print("The polygon has no points.")
- else:
- for i in range(len(self.vertices)):
- perimeter += points[i].distance(points[i + 1])
- return perimeter
|