首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定一个矩形是否可以被另一个矩形覆盖?

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

Stack Overflow用户
提问于 2019-07-15 22:08:47
回答 3查看 241关注 0票数 1

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

A和B是我们要覆盖的第一个矩形的边的长度,C和D是第二个矩形的边的长度,这个矩形将覆盖第一个矩形。

我已经尝试了两个代码,但仍然不起作用。第一种是天真的解决方案,但我不知道它是否正确。

代码语言:javascript
复制
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º的角度。所以我的第二个代码是:

代码语言:javascript
复制
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

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

如果我犯了语法、句法或数学上的任何其他错误,请随时纠正我。

EN

回答 3

Stack Overflow用户

发布于 2019-07-15 22:33:16

我认为你只需要检查三个案例:

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

你不需要检查任何随机的角度。如果它在任何一般情况下都重叠,则必须在上述三种情况之一中这样做。

第三种情况是极限情况:考虑正方形中类似矩形的杆子。

票数 2
EN

Stack Overflow用户

发布于 2019-07-15 22:28:53

在你的代码中并不清楚矩形边的长度到底是多少。

但不应该有任何涉及角度的计算:当且仅当A时,B可以完全覆盖A.length <= B.lenght and A.width <= B.width

(抱歉,我不能发表评论)

票数 0
EN

Stack Overflow用户

发布于 2019-07-15 22:48:35

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

“只能旋转第二个矩形,看看它是否能覆盖第一个矩形。”

如果这是一个约束,你可以看看这个topic来旋转你的第二个矩形。

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

我知道这不是一个准确的答案,但我希望它能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57041540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档