Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

สี่เหลี่ยมผืนผ้าทับซ้อนกันใน Python


สมมติว่ามีสี่เหลี่ยมผืนผ้าที่แสดงเป็นรายการ [x1, y1, x2, y2] โดยที่ (x1, y1) คือพิกัดของมุมล่างซ้าย และ (x2, y2) คือพิกัดของ มุมขวา. ตอนนี้สี่เหลี่ยมสองรูปทับซ้อนกันถ้าพื้นที่ของจุดตัดเป็นบวก ดังนั้น เราจึงเข้าใจได้ว่าสี่เหลี่ยมผืนผ้าสองรูปที่แตะเฉพาะที่มุมหรือขอบจะไม่ทับซ้อนกัน

หากเรามีสี่เหลี่ยม (จัดแนวแกน) สองอัน เราต้องตรวจสอบว่าเหลื่อมกันหรือไม่

ดังนั้น หากอินพุตเป็น R1 =[0,0,2,2], R2 =[1,1,3,3] ผลลัพธ์จะเป็น True

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้า R1[0]>=R2[2] หรือ R1[2]<=R2[0] หรือ R1[3]<=R2[1] หรือ R1[1]>=R2[3] แล้ว
    • คืนค่าเท็จ
  • มิฉะนั้น
    • คืนค่า True

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def isRectangleOverlap(self, R1, R2):
      if (R1[0]>=R2[2]) or (R1[2]<=R2[0]) or (R1[3]<=R2[1]) or
         (R1[1]>=R2[3]):
         return False
      else:
   return True
ob = Solution()
print(ob.isRectangleOverlap([0,0,2,2],[1,1,3,3]))

อินพุต

[0,0,2,2],[1,1,3,3]

ผลลัพธ์

True