如何获得两个坐标之间的矩形中的所有坐标?

时间:2019-06-19 13:42:07

标签: python-3.x geometry

说我有一个矩形,它的左上和右下坐标分别是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之间的所有值来实现我想要的。例如,我有x = 0,x = 1,x = 2和y = 0,y = 1,y = 2,y = 3,但老实说我不知道​​从那里去哪里,或者如果这是首先正确。我以为我可以通过以不同的x值以某种方式获取y = 0的所有坐标,然后以y = 1的所有坐标来获取所有坐标,但是我似乎无法将自己的头缠在一个这样做的方法上。感谢您的任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以做的一件事是列出矩形[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循环或列表推导来代替它,这与{{ 1}}仍在幕后做事:

itertools