def smooth(self):
     smoothed_triangles = [Polygon.copy(tr.points) for tr in self.triangles]
     for key, value in self.points_to_points.items():
         if key in self.bound_points: continue
         new_point = Polygon.get_center(value)
         for i in self.points_to_triangles[key]:
             smoothed_triangles[i].replace_point(key, new_point)
     self.triangles = smoothed_triangles
     self.calculate_hashes()
     return self.triangles