コード例 #1
0
    def get_possible_moves(self):
        available_points = []
        (a_y, a_x) = self.current_pos

        for x in range(a_x - self.max_step, a_x + self.max_step + 1):
            for y in range(a_y - self.max_step, a_y + self.max_step + 1):

                if y >= len(self.collision_map) or x >= len(
                        self.collision_map[y]):
                    continue
                if self.collision_map[y][x] == 0:

                    distance = nav.get_distance_beteween_points(
                        self.current_pos, (y, x))
                    angle = nav.get_angle_of_direction_between_points(
                        self.current_pos, (y, x))
                    desired_angle = self.direction_map.get_angle(
                        self.current_pos)
                    angle_diff = abs(angle - desired_angle)

                    if angle_diff > 3 / 2 * np.pi:
                        angle_diff = abs(angle_diff - np.pi)
                    if distance <= self.max_step and angle_diff <= self.forward_move_angle / 2:
                        available_points.append((y, x))

        return available_points
コード例 #2
0
 def move_price(self, pos: (int, int)) -> float:
     if self.direction_map.direction_map[pos[0]][pos[1]] == Env.EXIT:
         return 256
     price = (nav.get_distance_beteween_points(
         self.direction_map.get_next_position(self.current_pos), pos))
     #price=price*nav.get_distance_beteween_points(pos,self.end[0])
     return np.floor(price)
コード例 #3
0
def mark_circle_obstacle(center_location: (int, int), radius: int,
                         collision_map: [[int]], marking_value: int):
    (loc_y, loc_x) = center_location
    for x in range(loc_x - radius, loc_x + radius + 1):
        for y in range(loc_y - radius, loc_y + radius + 1):
            distance = nav.get_distance_beteween_points(
                center_location, (y, x))
            if distance <= radius:
                mark_location((y, x), collision_map, marking_value)
コード例 #4
0
 def get_step_size(self, current_pos: (int, int)):
     return nav.get_distance_beteween_points(
         current_pos, self.get_next_position(current_pos))
コード例 #5
0
 def test_distane_cross(self):
     self.assertEqual(nav.get_distance_beteween_points((2, 2), (3, 7)),
                      (1**2 + 5**2)**(1 / 2), "Distance between points")
コード例 #6
0
 def test_distane(self):
     self.assertEqual(nav.get_distance_beteween_points((0, 0), (3, 4)), 5,
                      "Distance between points")
コード例 #7
0
    def test_geting_step_size(self):
        self.directions[2][5] = (12, 12)
        direction_map = DirectionMap(self.directions)

        step = nav.get_distance_beteween_points((2, 5), (12, 12))
        self.assertEqual(step, direction_map.get_step_size((2, 5)))