def get_edge_cost(self, source_point, target_point):
     assert len(source_point.coordinates) == 2, "sorry, %s only supports two dimensions" % (self.__class__.__name__,)
     t_coords = get_average_coordinates([source_point.coordinates, target_point.coordinates])
     #for ((good_x, good_y), (bad_x, bad_y)) in self.point_pairs:
         #if t_x >= ((good_x+bad_x)/2) and t_y >= ((good_y+bad_y)/2):
     multiplier = self._is_point_in_penalty_zone(t_coords) and self.PENALTY_MULTIPLIER or 1
     dist = distance_between_points(source_point, target_point) * multiplier
     assert dist >= 0, 'Negative edge cost!'
     return dist
 def get_edge_cost(self, source_point, target_point):
     t_x, t_y = get_average_coordinates([source_point.coordinates, target_point.coordinates])
     dist = 0
     for reference_point in self.reference_points:  # subclass was supposed to set this in register_points()
         r_x, r_y = reference_point
         dist += hypot(r_x - t_x, r_y - t_y) #** self.exponent
     dist = dist ** self.exponent
     dist += 1
     assert dist >= 0, 'Negative edge cost!'
     return dist
 def register_points(self, points):
     r = super(SlantedBlockadeEdgeCostGenerator, self).register_points(points)
     for i, point_pair in enumerate(self.point_pairs):
         self.point_pairs[i][1] = get_average_coordinates(point_pair)
     return r  # ?