हम जानते हैं कि एक आयत को दो निर्देशांकों का उपयोग करके दर्शाया जा सकता है: ऊपरी बायां कोना (top-left corner) और निचला दायां कोना (bottom-right corner)। मान लीजिए दो आयत हैं, हमें जांचना है कि ये दोनों ओवरलैप होते हैं या नहीं। चार निर्देशांक बिंदु (l1, r1) और (l2, r2) हैं।
- l1 पहले आयत का ऊपरी-बायां कोना है
- r1 पहले आयत का निचला-दायां कोना है
- l2 दूसरे आयत का ऊपरी-बायां कोना है
- r2 दूसरे आयत का निचला-दायां कोना है
हमने माना है कि आयत निर्देशांक अक्षों के समानांतर हैं। इसे हल करने के लिए, हमें कुछ शर्तों की जांच करनी होगी।
- एक आयत दूसरे आयत के शीर्ष किनारे से ऊपर है
- एक आयत दूसरे आयत के बाएं किनारे के बाईं ओर है
C++ उदाहरण
#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";
return 0;
}
आउटपुट
Rectangles are Overlapping