हम जानते हैं कि एक आयत को दो निर्देशांकों, ऊपरी बाएँ कोने और निचले दाएँ कोने का उपयोग करके दर्शाया जा सकता है। मान लीजिए कि दो आयत हैं, हमें यह जांचना है कि ये दोनों अतिव्यापन करते हैं या नहीं। चार निर्देशांक बिंदु (l1, r1) और (l2, r2) हैं।
- l1 पहले आयत का ऊपरी-बाएं कोना है
- r1 पहले आयत का निचला दायां कोना है
- l2 दूसरे आयत का ऊपरी-बाएं कोना है
- r2 दूसरे आयत का निचला दायां कोना है
हमने मान लिया है कि आयत निर्देशांक अक्षों के समानांतर हैं। इसे हल करने के लिए, हमें कुछ शर्तों की जाँच करनी होगी।
- एक आयत दूसरे आयत के ऊपरी किनारे के ऊपर है
- एक आयत दूसरे आयत के बाएँ किनारे के बाईं ओर है।
उदाहरण
#include<iostream> using namespace std; class Point { public: int x, y; }; bool isOverlapping(Point l1, Point r1, Point l2, Point r2) { if (l1.x > r2.x || l2.x > r1.x) return false; if (l1.y < r2.y || l2.y < r1.y) return false; return true; } int main() { Point l1 = {0, 10}, r1 = {10, 0}; Point l2 = {5, 5}, r2 = {15, 0}; if (isOverlapping(l1, r1, l2, r2)) cout << "Rectangles are Overlapping"; else cout << "Rectangles are not Overlapping"; }
आउटपुट
Rectangles are Overlapping