def get_place_near(point, target, angle): """ Расчет места рядом с point с отклонением angle от цели target """ vec = Vector(point.x - target.x, point.y - target.y) vec.rotate(angle) return Point(target.x + vec.x, target.y + vec.y)
def get_place_near(self, point, target, angle): """ Расчет места рядом с point с отклонением angle от цели target :param point: :param target: :param angle: :return: new place point """ vec = Vector(point.x - target.x, point.y - target.y) vec.rotate(angle) return Point(target.x + vec.x, target.y + vec.y)
def get_place_near(point, target, angle): """ Расчет места рядом с point с отклонением angle от цели target :param point: исходная точка :param target: предполагаемая цель :param angle: угол отклонения :return: точка недалеко от цели """ vec = Vector(point.x - target.x, point.y - target.y) vec.rotate(angle) return Point(target.x + vec.x, target.y + vec.y)
def _find_new_positions_circle(self, start_point, end_point, distance, sweep): start_dot = start_point if start_point else self.my_mothership.coord end_dot = end_point if end_point else Point(theme.FIELD_WIDTH // 2, theme.FIELD_HEIGHT // 2) amount_of_drones = len(self.list_of_drones) vec = Vector.from_points(start_dot, end_dot) norm_vec = Vector(vec.x / vec.module, vec.y / vec.module) vec_position = Vector(norm_vec.x * distance, norm_vec.y * distance) for drone in self.list_of_drones: final_vector = self._find_position(vec_position, amount_of_drones, drone, sweep) final_point = (start_dot.x + final_vector.x, start_dot.y + final_vector.y) point = Point(final_point[0], final_point[1]) self.positions_circle[distance].append(point) vec_position.rotate(-self.edges[drone.index])
def _get_possible_points_attack(self, target, purpose, drone): """ Получение возможных точек для атаки в порядке удаления от текущего положения дрона :param target: точка на карте, расположенная на растоянии выстрела от purpose :param purpose: обект, колученный в методе next_purpose :param drone: экземпляр класса OkhotnikovFNDrone :return: список точек на карте из которых возможно вести стрельбу по цели purpose """ angles = [ang for ang in range(-50, 51, 10)] possible_points_attack = [] for ang in angles: vec = Vector(target.x - purpose.x, target.y - purpose.y) vec.rotate(ang) possible_point_attack = Point(purpose.x + vec.x, purpose.y + vec.y) possible_points_attack.append(possible_point_attack) possible_points_attack.sort(key=lambda x: drone.distance_to(x)) return possible_points_attack
def get_place_near(self, point, target, angle): vec = Vector(point.x - target.x, point.y - target.y) vec.rotate(angle) return Point(target.x + vec.x, target.y + vec.y)