如何确定一个矩形是否可以被另一个矩形覆盖?

2024-03-29 02:00:30 发布

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

给定两个矩形边的长度,我必须编写代码来检查第一个矩形是否能被第二个矩形完全覆盖。只能旋转第二个矩形,看它是否能覆盖第一个矩形。你知道吗

A和B是第一个矩形边的长度,我们要覆盖的那个,C和D是第二个矩形边的长度,覆盖第一个的那个。你知道吗

我试过两个密码,但还是没用。第一个是天真的解决方案,但我不知道它是否正确。你知道吗

A, B, C, D = map(int, input().split())
if (C >= A and D >= B) or (C >= B and D >= A):
    print("covered")

然后我用我的数学技巧找出第二个矩形(l1l2)的边应该是l1 >= A*sin(a) + B*cos(a)l2 >= A*cos(a) + B*sin(a)a是一个角度,可以是090º。所以我的第二个代码是:

A, B, C, D = map(int, input().split())

import math
a = 0

while a <= 90 and value == False:
    ai = math.radians(a)
    t1 = math.ceil(A*math.cos(ai) + B*math.sin(ai))
    t2 = math.ceil(A*math.sin(ai) + B*math.cos(ai))
    if (C >= t1 and D >= t2) :
        value = True
    a = a + 1

我做了一些测试,但我的代码没有得到正确的答案。那么,我能做些什么来解决这个问题呢?我的想法正确吗?你知道吗

如果我犯了语法、语法或数学方面的错误,请随时纠正。你知道吗


Tags: and代码l1mapinputif数学math
3条回答

您的代码中不清楚矩形边的长度到底是多少。你知道吗

但是不应该有任何涉及角度的计算:A可以被B当且仅当A.length <= B.lenght and A.width <= B.width完全覆盖。你知道吗

(抱歉,我无法发表评论)

第一个代码部分验证第二个矩形最初是否适合第一个矩形,这很好。您可以找到其他方法来执行此操作here

"It's possible only to rotate the second rectangle to see if it can cover the first one."

如果这是一个约束,您可以查看这个topic来旋转第二个矩形。你知道吗

作为开发的here,我认为迭代验证第二个矩形在旋转时是否适合第一个矩形的一个好方法是检查“内矩形的两个相对的角是否在外矩形中。”

我知道这不是一个确切的答案,但我希望它会有所帮助。你知道吗

我想你只需要检查三个箱子:

  • 当一组边平行于另一个矩形的第一对边时
  • 旋转90度到第一种情况
  • 试着沿着另一个矩形的对角线调整一个矩形

你不需要检查任何随机角度。如果在任何一般情况下重叠,则必须在上述三种情况中的一种情况下重叠。你知道吗

第三种情况将是一个极限情况:考虑一个正方形中的棒状矩形。你知道吗

相关问题 更多 >