def shorter_distance_corner(car_point, radial_line, corner_wall, corner, *walls): check_point = cross_point(radial_line, corner_wall) dist = distance(car_point, check_point) if dist <= distance(car_point, corner): return dist else: return shorter_distance(car_point, radial_line, *walls)
def not_in_columns_and_a_car(a_point): if a_point[1] > 0.: if distance(left_center, a_point) < column_radius: return False elif a_point[1] > left_center[1] \ and left_center[0] - column_radius < a_point[0] < left_center[0] + column_radius: return False elif a_point[1] < 0.: if distance(right_center, a_point) < column_radius: return False elif a_point[1] < right_center[1] \ and right_center[0] - column_radius < a_point[0] < right_center[0] + column_radius: return False if self.BODY_POSITION['x'] + self.INNER_OFFSET <= a_point[0] <= \ self.BODY_POSITION['x'] + self.BODY_POSITION['w'] - self.INNER_OFFSET \ and self.BODY_POSITION['y'] + self.INNER_OFFSET <= a_point[1] <= \ self.BODY_POSITION['y'] + self.BODY_POSITION['h'] - self.INNER_OFFSET: return False return True
def shorter_distance(car_point, radial_line, *walls): points = [cross_point(radial_line, x) for x in walls] distances = [distance(car_point, x) for x in points] return list(sorted(distances, key=lambda x: abs(x)))[0]
def on_a_curve(a_point): return inner_radius < distance(right_center, a_point) < outer_radius
def on_a_curve(a_point): return distance(left_center, a_point) < outer_radius