当前位置: 首页 > 知识库问答 >
问题:

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

红鸿运
2023-03-14

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

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, 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

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

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


共有3个答案

董子航
2023-03-14

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

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

如果这是一个约束,您可以查看本主题以旋转第二个矩形。

如本文所述,我认为在旋转时迭代验证第二个矩形是否适合第一个矩形的一个好方法是检查“内矩形的两个相对角是否在外矩形中”

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

拓拔嘉颖
2023-03-14
匿名用户

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

但是不应该有任何涉及角度的计算:当且仅当< code>A.length时,< code>A可以被< code>B完全覆盖

(抱歉我不能评论)

束飞捷
2023-03-14

我认为您只需要检查三种情况:

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

不需要检查任何随机角度。如果它在任何一般情况下重叠,它必须在上述三种情况之一。

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

 类似资料:
  • 我有一个点[xmin,ymin,xmax,ymax]的列表,每个点都按黑点显示 请注意,有许多这样的矩形,如图像所示。红色的应检测删除,绿色的应保留。 输入是 n 矩形 输出是覆盖区域和它覆盖的矩形 id 。最好给出一些算法和解释。

  • 问题内容: 创建哪一个将坐标从一个矩形映射到另一个矩形(给出浮动/双矩形)的最简单方法是什么? 更新1 矩形可以完全不同。例如[(0,0)-(1,1)]和[(150,-14)-(-1000,-14.1)]。并且转换应该统一转换。例如,矩形角应一一变换。例如,坐标(0,0)应该变成(150,-14)。 更新2 我需要对象,而不仅仅是计算。因为我想将其应用于对象。我也想以一些简单转换的串联形式。 更新

  • 在上面的图片中,我展示了两个矩形 矩形1,其x可以从-900到13700不等,Y可以从-600到6458 矩形2,其坐标X可以从0到3000变化,而y可以从0到2000变化 同样:矩形2的起点位于左上角位置(0,0),而矩形1的起点位于左上角位置(宽度/2,高度/2)。 我需要做的是:使用缩放或平移将矩形1的点转换为矩形2的点。 那么,为了将矩形1的坐标转换为矩形2的坐标,< code>x和< c

  • 我有两个矩形:红色和绿色。对于它们中的每一个,我有以下信息: 中心点( 和 坐标)。 旋转角度 宽度和高度 矩形将始终以正坐标移动。编辑:没有坐标可以是负的:矩形总是位于正坐标。因此,中心永远不会是(0,0)。 问题 我有一个起始位置。为了简化示例,假设我的红色和绿色矩形的位置如下: 现在,我使用0º和90º之间的角度φ旋转红色矩形。但是,绿色矩形需要旋转并保持其相对于红色矩形的位置。绿色矩形不仅

  • 我正在创建一个简单的Java2D程序。它应该从另一个类中绘制矩形,但它不起作用。如果你们中有人能花点时间看看我哪里出了问题,我将不胜感激。这是我明天要交的最后一项作业。 以下是我迄今为止所编写的代码: Block.java 下面是主类: 非常感谢。

  • 假设我有一组矩形(维度不同或相同)。 任务是从集合中查找(并删除)大于或等于给定矩形的矩形 它也应该是集合中可以包含给定矩形的最小矩形 这很容易通过线性搜索/更新在O(n)时间内解决,但是有可能获得更好的结果吗?我认为O(log n)是最佳值。Insert和removal也必须比O(n)快,这样在我的例子中才有用。 是否可以通过不找到最佳矩形来制定任何快捷方式,而是将第二个限制放宽为:“它也应该是