簡體   English   中英

我如何確定一個矩形是否可以被另一個矩形覆蓋?

[英]How do I find out if a rectangle can be covered by another rectangle?

給定兩個矩形的邊長,我必須編寫代碼來檢查第一個矩形是否可以被第二個矩形完全覆蓋。 只能旋轉第二個矩形以查看它是否可以覆蓋第一個矩形。

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度到第一種情況
  • 嘗試沿着另一個對角線調整一個矩形

您無需檢查任何隨機角度。 如果在任何一般情況下重疊,則在以上三種情況之一中必須這樣做。

第三種情況是一種極限情況:考慮一個正方形的矩形桿。

您的代碼尚不清楚矩形的邊長到底是什么。

但是不應進行任何涉及角度的計算:並且僅當A.length <= B.lenght and A.width <= B.width時, A才能被B完全覆蓋。

(對不起,我無法發表評論)

您的第一個代碼部分將驗證第二個矩形是否最初可以適合第一個矩形,這很好。 您可以在此處找到其他方法來執行此操作

“只能旋轉第二個矩形以查看它是否可以覆蓋第一個矩形。”

如果這是一個約束,則可以查看此主題以旋轉第二個矩形。

正如此處開發的那樣,我認為一種在旋轉時反復驗證第二個矩形是否適合第一個矩形的好方法是檢查“內部矩形的兩個相對角是否在外部矩形中”。

我知道這不是一個精確的答案,但我希望它會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM