Beispiel #1
0
    def get_section_start_and_finish_events(self, start, finish, track: Track):
        if not self.probably_finishes_section_(start, finish):
            return None

        start_event = None
        finish_event = None

        start_dist = 9999
        finish_dist = 9999

        for e in self.events:
            if not finish_event and are_close_waypoint_ids(
                    e.closest_waypoint_index, start, track):
                (x2, y2) = track.get_waypoint(start)
                dist = (x2 - e.x) * (x2 - e.x) + (y2 - e.y) * (y2 - e.y)
                if dist < start_dist:
                    start_dist = dist
                    start_event = e
            if start_event and are_close_waypoint_ids(e.closest_waypoint_index,
                                                      finish, track):
                (x2, y2) = track.get_waypoint(finish)
                dist = (x2 - e.x) * (x2 - e.x) + (y2 - e.y) * (y2 - e.y)
                if dist < finish_dist:
                    finish_dist = dist
                    finish_event = e

        if finish_event:
            return start_event, finish_event
        else:
            return None
Beispiel #2
0
 def _set_distance_from_center_on_events(self, track: Track):
     for e in self.events:
         current_location = (e.x, e.y)
         closest_waypoint = track.get_waypoint(e.closest_waypoint_index)
         next_waypoint = track.get_next_different_waypoint(
             e.closest_waypoint_index)
         previous_waypoint = track.get_previous_different_waypoint(
             e.closest_waypoint_index)
         distance_of_next_waypoint = get_distance_between_points(
             current_location, next_waypoint)
         distance_of_previous_waypoint = get_distance_between_points(
             current_location, previous_waypoint)
         if distance_of_next_waypoint < distance_of_previous_waypoint:
             e.distance_from_center = get_distance_of_point_from_line(
                 current_location, closest_waypoint, next_waypoint)
         else:
             e.distance_from_center = get_distance_of_point_from_line(
                 current_location, closest_waypoint, previous_waypoint)