আমরা জানি একটি রেক্ট্যাঙ্গেলকে দুটি কোয়ার্ডিনেট দিয়ে উপস্থাপন করা যায়: উপরের বাম কোণা (top left) এবং নিচের ডান কোণা (bottom right)। ধরি দুটি রেক্ট্যাঙ্গেল আছে, আমাদের চেক করতে হবে এগুলো ওভারল্যাপ করে কিনা। চারটি কোয়ার্ডিনেট পয়েন্ট (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