Представление пути в виде цветного изображения - PullRequest
1 голос
/ 06 марта 2020

Не знаете, что делает эта функция, кто-нибудь может объяснить? Алгоритм берет путь, который найден алгоритмом поиска в ширину, и возвращает его функции colour_path, которая предназначена для его раскрашивания, чтобы графически отображать ее на matplotlib.

Функция пути, в которой я не уверен:

def color_path(maze, path): #Function to represent the path when the user asks for a solution
    for (x, y) in path: #
        maze.board[x][y] = constants.RED

    if len(path):
        maze.board[path[0][0], path[0][1]] = constants.BLUE
        maze.board[path[-1][0], path[-1][1]] = constants.BLUE

1 Ответ

1 голос
/ 06 марта 2020

Итак, сначала вам нужно понять используемые структуры данных: path - это массив numpy из shape (path length, 2) и содержит список позиций x и y (пикселей на изображении).

  • path[0] дает вам first node пути
  • path[-1] last node.
  • path[i][0] дает вам x координату node i
  • path[i][1] дает вам y координату node i.

board является массивом numpy с формой (rows, columns) и содержит все пиксели лабиринта.

Первый l oop посещает каждую пару (x, y) пути и устанавливает цвет для этих пикселей красный:

for (x, y) in path: #
    maze.board[x][y] = constants.RED

# Example path around a 3x3 square
path = np.array([[1, 1],  # right
                 [2, 1],
                 [3, 1],  # up
                 [3, 2],
                 [3, 3],  # left
                 [2, 3],
                 [1, 3],  # down
                 [1, 2],
                 [1, 1]])  # back at the start

 # (1,3) <-- (3, 3)
 #   |         |
 #   |         |
 # (1,1) --> (3, 1)

Последние две строки функции устанавливают синий цвет для начала и целевого узла.

maze.board[path[0][0], path[0][1]] = constants.BLUE
maze.board[path[-1][0], path[-1][1]] = constants.BLUE

Впоследствии board используется для рисования изображения с черными стенами, красной дорожкой, синим цветом начала и цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...