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

标签 python algorithm geometry

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

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

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

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

最佳答案

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

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

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

第三种情况将是一个极限情况:考虑正方形中的长方形杆。

关于python - 我如何确定一个矩形是否可以被另一个矩形覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57041540/

相关文章:

python - 对键值列表进行排序,其中值是字典,并且需要对字典中的 STRING 值进行排序

c++ - 通过从每个位置的特定位置词池中选择词来高效生成所有序列

将新点添加到多边形的算法

java - 如何使用 Java 检查两个矩形几何图形之间的空间关系

python - 使用 TreeTagger 进行标记时必须使用 *unicode* 字符串作为标记文本吗?

python - 使用python修改文本文档

java - 需要按 'R' 、 'B' 、 'W' 的顺序对任意长度的字符数组进行排序

Java 3D 几何库

python - 获取相关模型的数量

algorithm - 确定 'cute' 级别的可能指标