检查点列表是否是矩形的一部分

2024-05-04 10:48:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个点的列表,我需要找出这些点是否存在于由左上角和右下角定义的矩形中。如果所有点都属于矩形,则结果为真,否则结果为假。在

这是我的代码,但我在某个地方弄错了。在

 def Functn1(topLeft=(0,0), bottomRight=(0,0), pointList=[]):
        x1 = topLeft[0]
        y1 = topLeft[1]
        x2 = bottomRight[0]
        y2 = bottomRight[1]

        xa = pointList[i][0]
        ya = pointList[i][0]
        xb = pointList[i][1]
        yb = pointList[i][1]

        lengthofList = len(pointList)

        for i in range(lengthofList):
            if ((xa > x1 and xb < x2) and (ya > y1 and yb < y2)):

            #if ((x[i][0] > x1 and x[i][1] < x2) and (y[i][0] > y1 and y[i][1] < y2)): 
            #Also tried using this code but keep getting the same error                
                return True
            else:
                return False


Functn1((0,0), (5,5), [(1,1), (0,0), (5,6)]) #should get False

我得到了这个错误:

^{pr2}$

Tags: andx1x2矩形y1yay2xb
1条回答
网友
1楼 · 发布于 2024-05-04 10:48:56

根据我对您问题的理解,以下是您在代码中犯下的一些错误:

  1. {cd1>在初始化变量之前使用了}比如:-。在

    xa = pointList[i][0]
    ya = pointList[i][0]
    xb = pointList[i][1]
    yb = pointList[i][1]
    

    我想您想在for循环中使用它作为迭代变量,但是在循环之外使用了它。

  2. 您为pointList变量中的每个点创建了四个变量,我认为这些变量是针对点的x,y,width,height的,尽管一个点没有任何宽度或高度。

  3. 循环无效,因为它在循环列表中的第一项后返回True或{},并且它不会搜索其他点来知道它们是在矩形内还是在矩形之外。


因此,我创建了一个代码副本,并根据您的需要进行了一些更改,以便于理解:

^{pr2}$

如果你不知道矩形中的像素值是5,那么你应该知道这个矩形的值是6,我写了这样的代码,如果你想改变它,你可以很容易地把<操作符改成{},也可以把>改成{},以包括矩形的最后一个点。在

相关问题 更多 >