检查坐标是否在矩形内

时间:2017-01-21 15:20:01

标签: python logic coordinates

我在检查坐标是否在矩形内时遇到问题。我需要检查特定对象是否在某个坐标范围内。例如,给定下面的矩形:

enter image description here

以红色突出显示的坐标和我的蓝色物体的坐标,我可以通过这样做检查我的物体是否在矩形内(这是我能想到的最简单的解决方案):

if xa > x1 and xd < x4 and ya > y1 and yb < y2:
    #success

假设我的原点位于图片的左上角,这始终是真的:xa = xbxd = xcya = ydyb = yc,这非常简单。

我的矩形旋转时遇到问题,如下图所示:

enter image description here

我总是拥有所有坐标,红色和蓝色的物体。在这种情况下哪一个是最有效的方法?

我使用过Python代码,但这更像是一个逻辑问题,我无法真正找到解决方案。

提前谢谢

1 个答案:

答案 0 :(得分:1)

尽管回答得有点晚,但请注意,您始终可以找到平面上任意两个已知点之间的直线(即超平面)。特别是,您可以定义外部矩形的所有线段所属的直线(即,包含(x1,y1)和(x2,y2)的直线,包含(x2,y2)和(x3,y3)等)。一旦有了任何一条这样的线的方程式,就可以检查特定点是位于该线的“上方”,“下方”还是内部。通过使用与简单情况相同的逻辑,可以确定特定点是否属于矩形(也就是说,如果该点位于通过点(x1,y1)和(x4)的直线之内或之下,y4),穿过点(x2,y2)和(x3,y3)等的线的上方或内部)。