在Python中查找矩形内的整数点?
在二维平面中,我有一个由4个顶点定义的矩形,在Python中查找矩形内的整数点?,python,algorithm,Python,Algorithm,在二维平面中,我有一个由4个顶点定义的矩形,a,B,C和D。我现在希望找到落入矩形ABCD中的整数点(坐标为整数) 在询问之前,我所做的计算非常昂贵。简单地说,我列举了所有整数点,并检查该点是否在矩形中。我发现在我的项目中使用它太残酷了,因为我有很多观点 这应该如何优雅地完成 更新:请注意,矩形可以是随机方向,具体取决于四个点的坐标。假设放置得很好有点作弊。您可以在坐标轴上映射4个顶点。假设A(x1,y1)、B(x2,y1)、C(x1,y2)、D(x2,y2)和x1您的矩形由四条线限定。假设你有
a
,B
,C
和D
。我现在希望找到落入矩形ABCD
中的整数点(坐标为整数)
在询问之前,我所做的计算非常昂贵。简单地说,我列举了所有整数点,并检查该点是否在矩形中。我发现在我的项目中使用它太残酷了,因为我有很多观点
这应该如何优雅地完成
更新:请注意,矩形可以是随机方向,具体取决于四个点的坐标。假设放置得很好有点作弊。您可以在坐标轴上映射4个顶点。假设A(x1,y1)、B(x2,y1)、C(x1,y2)、D(x2,y2)和x1您的矩形由四条线限定。假设你有下面的矩形
A
/\
/ \
B \ \
\ /C
\/
D
现在画两条水平线,一条穿过B,另一条穿过C。这将矩形分成3个区域
A
/\
/__\P
B \___\
Q\ /C
\/
D
所有这三个区域都由两组不同的线定义
Top: AB to AP.
Middle: BQ to PC.
Bottom: QD to CD.
对于每个区域,
迭代满足边界线条件的整数值x和y。
例如,如果点A、B、D和C是(0,10.5),(-10.5,0),(0,-10.5)和(10.5,0),则为旋转正方形,只有一条水平线(X轴) 对于Top region,循环可以如下所示(您可以为python修改它):
用于(int y=10;y>=0;y--)
对于(int x=int(y-10.5);x这就是我所做的,这在计算上非常昂贵。矩形可以小于一个角度,例如45度吗?@Evert是的。任何方向。未知。你最好问一下。你的实际问题与编程几乎没有关系。@Evert所以我标记了通用的“算法”另外,我认为它与编程有关,因为一些特定于Python的函数可能有助于优雅地解决这个问题。@mavErick从阅读《搭便车者算法指南》(Steven Skiena的算法设计手册)中关于“范围搜索”的条目开始
for ( int y = 10; y >= 0; y-- )
for ( int x = int(y-10.5); x <= int(10.5-y); x++ ) // the int an be changed to floor or ceiling.
print( x, y );