检查点是否在负框内

时间:2013-11-12 23:45:24

标签: python

我已经做了这个小函数来检查一个点是否在选择框内:

def select(x1, y1, w, h):
    x, y = position
    x2 = x1 + w
    y2 = y1 + h

    if x >= x1 and y >= y1:
        if x <= x2 and y <= y2:
            selected = True
    else:
        selected = False

但只有当w和h的值大于x1和y1时才有效。例如,如果框具有负大小,则它不起作用。如何在未事先检查if w < x1 and h < y1的情况下检查这些案例?

2 个答案:

答案 0 :(得分:2)

为什么不使用以下检查:

if x >= min(x1,x2) and x <= max(x1,x2):
    if y >= min(y1,y2) and y <= max(y1,y2):
        ...

答案 1 :(得分:1)

您可以使用sorted(list)和解构分配找到两个数字的最小值和最大值,并将它们分配给一个语句中的变量。另请注意使用min <= value <= max链式比较:

def select(x1, y1, w, h):
    x, y = position

    minX, maxX = sorted([x1, x1 + w])
    minY, maxY = sorted([y1, y1 + h])

    if minX <= x <= maxX and minY <= y <= maxY:
        selected = True
    else:
        selected = False