コード例 #1
0
 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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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])
コード例 #5
0
 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
コード例 #6
0
ファイル: probe4.py プロジェクト: vhaibl/skillbox_diploma
 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)