【问题标题】:How to check if centroid of one rectangle is present inside another rectangle? [duplicate]如何检查一个矩形的质心是否存在于另一个矩形内? [复制]
【发布时间】:2020-12-15 04:49:33
【问题描述】:

我有一个矩形 ABCD。我通过将高度和宽度除以 3 将矩形分成 9 个相等的部分。现在我得到了 9 个矩形。如果我考虑这 9 个矩形 ABCD_1 中的一个,其坐标 = 166、104、332、156。除此之外,我还有另一个矩形,即质心 = 377.5、489.0 的 PQRS。我想确定给定的质心是否存在于矩形 ABCD_1 内。如何解决这个问题。

我是 Python 的完全初学者。任何帮助将是非常可观的。谢谢!!!

【问题讨论】:

    标签: python python-3.x python-2.7 point rectangles


    【解决方案1】:

    假设您的矩形坐标表示为数组[x1,y1,y2,x2] 并指向[x,y] 然后我们将首先检查 x 是否位于矩形的 x 坐标之间,如果是,那么我们将检查它们是否位于 y 坐标之间,如果为真,则该点位于矩形内,否则不在。 abcd 下面是你的矩形,p 是点。

    abcd=[166, 104, 332, 156]
    p=[377.5, 489.0]
    
    if p[0]>=abcd[0] and p[0]<=abcd[3]:
        if p[1]>=abcd[1] and p[0]<=abcd[2]:
            print('Inside')
    else:
        print('Outside')
    

    【讨论】:

      【解决方案2】:

      假设您给出的四个数字,我猜它是一个边平行于 x 轴和 y 轴的矩形。如果你的号码是两个对角的(x1, y1), (x2, y2)P = (x, y),你的逻辑应该是

      if x1 < x < x2 and y1 < y < y2:
          is_in_rect = True
      

      其中x1 &lt; x2y1 &lt; y2(你需要根据哪个数字更大来调整比较)

      对于所有x1, y1, x2, y2 where x1!=x2, y1!=y2

      if (x1 < x < x2 if x1 < x2 else x2 < x < x1) and \
         (y1 < y < y2 if y1 < y2 else y2 < y < y1):
          is_in_rect = True
      

      【讨论】:

      • 感谢您的解释和代码。但这并不能解决我的问题。实际上我有一个矩形,我把它分成 9 个相等的部分。上面给出了矩形 ABCD 的坐标,它是 9 段之一。当我尝试你的逻辑时,它给出的重点是在外面,但实际上它在里面。只是想知道这里出了什么问题。
      • 1.你的矩形旋转了吗?还是平行于xy 轴的边?
      • 未旋转。是的,边是平行的。这些点是 x,y,width,height
      • 2.我假设坐标是两个对角是否正确,顺序是x1, y1, x2, y2
      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2012-08-22
      • 2020-07-11
      相关资源
      最近更新 更多