как получить все координаты в прямоугольнике между двумя координатами? - PullRequest
0 голосов
/ 19 июня 2019

говорят, что у меня есть прямоугольник, и его верхняя левая и нижняя правая координаты A (0,0) и B (2,3) соответственно.Есть ли метод / формула, которую я могу использовать, чтобы получить все координаты внутри этого прямоугольника?Я хочу, чтобы мой вывод был таким, как если бы входные данные были следующими двумя координатами:

input: [(0, 0), (2, 3)]
output: [(0, 0), (1, 0), (2, 0), (0, 1), (1, 1), (2, 1), (0, 2), (1, 2), (2, 2), (0, 3,) (1, 3,) (2, 3)]

также, реализация Python 3 будет принята с благодарностью, хотя и не обязательна.

спасибо

РЕДАКТИРОВАТЬ: полная история: я использую python, и сначала я подумал, что могу достичь того, чего хочу, получив все значения между x1 и x2, y1 и y2.так, например, у меня есть х = 0, х = 1, х = 2 и у = 0, у = 1, у = 2, у = 3, но я, честно говоря, не знаю, куда идти, или если этоисправить в первую очередь.я думал, что смогу получить все координаты, каким-то образом получив все координаты с y = 0 с разными значениями x, затем все координаты с y = 1 ... но я не могу обернуть голову, как это сделать,любая помощь приветствуется, спасибо.

1 Ответ

0 голосов
/ 19 июня 2019

Одна вещь, которую вы можете сделать, это составить список всех x координат внутри прямоугольника [x1..x2] и всех y координат внутри прямоугольника [y1..y2], а затем взять декартово произведение двух списковиспользуя itertools:

import itertools
...
input = [(0, 0), (2, 3)]
x_coords = [x for x in range(input[0][0], input[1][0] + 1)]
y_coords = [y for y in range(input[0][1], input[1][1] + 1)]
output = list(itertools.product(x_coords, y_coords))

Если вы не хотите использовать itertools для вычисления продукта, вы могли бы также легко использовать цикл for или представление списка, чтобы сделать это вместо этого, чтов любом случае примерно эквивалентно тому, что itertools делает за кулисами:

output = [(x, y) for x in x_coords for y in y_coords]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...