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 # ?