কম্পিউটার টিউটোরিয়াল

C++-এ মিডপয়েন্ট ব্যবহার করে রেক্ট্যাঙ্গেলের কর্নার বের করা


ধরুন আমাদের একটি রেক্ট্যাঙ্গেল ABCD আছে, কিন্তু আমাদের শুধু মিডপয়েন্ট P এবং Q-এর কোঅর্ডিনেট এবং রেক্ট্যাঙ্গেলের দৈর্ঘ্য L দিয়ে আছে।

C++-এ মিডপয়েন্ট ব্যবহার করে রেক্ট্যাঙ্গেলের কর্নার বের করা

আমাদের কাজ হলো P এবং Q-এর কোঅর্ডিনেট এবং সাইডের দৈর্ঘ্য L ব্যবহার করে A, B, C, D-এর কোঅর্ডিনেট বের করা। উদাহরণস্বরূপ, P (1, 0), Q (1, 2), L = 2 হলে A, B, C, D যথাক্রমে (0, 0), (0, 2), (2, 2), (2, 0) হবে।

তিনটি কেস হতে পারে:

  • রেক্ট্যাঙ্গেল হরিজেন্টাল, তাই AD এবং BC X-অক্ষের সমান্তরাল।
  • রেক্ট্যাঙ্গেল ভার্টিক্যাল, তাই AD এবং BC Y-অক্ষের সমান্তরাল।
  • রেক্ট্যাঙ্গেল অক্ষের সাথে একটি কোণে ঝুকে আছে।

তৃতীয় কেসের জন্য, P এবং Q-এর কোঅর্ডিনেট ব্যবহার করে স্লপ বের করতে হবে। AD-এর স্লপ পেলে AD-এর সমীকরণ বের করা যায়, তারপর ডিস্ট্যান্স ফর্মুলা ব্যবহার করে রেজাল্ট পাওয়া যাবে।

$$Slope of AD,m=\frac{px-qx}{py-qy}$$ $$Displacement\:along\:x\:axis, dx=\frac{L}{2\sqrt{1+m^{2}}}$$ $$Displacement\:along\:y\:axis, dy=\frac{mL}{2\sqrt{1+m^{2}}}$$

উদাহরণ

#include <iostream> #include <cmath> using namespace std; class Point {    public:       float x, y;       Point(float a = 0.0f, float b = 0.0f) {       x = a, y = b;    } }; void printCorners(Point p, Point q, float l) {    Point a, b, c, d;    if (p.x == q.x) {       a.x = p.x - (l/2.0);       d.x = p.x + (l/2.0);       a.y = d.y = p.y;       b.x = q.x - (l/2.0);       c.x = q.x + (l/2.0);       b.y = c.y = q.y;    }else if (p.y == q.y) {       a.y = p.y - (l/2.0);       d.y = p.y + (l/2.0);       a.x = d.x = p.x;       b.y = q.y - (l/2.0);       c.y = q.y + (l/2.0);       b.x = c.x = q.x;    }else{       float m = (p.x-q.x)/float(q.y-p.y);       float dx = (l /sqrt(1+(m*m))) *0.5 ;       float dy = m*dx;       a.x = p.x - dx;       a.y = p.y - dy;       d.x = p.x + dx;       d.y = p.y + dy;       b.x = q.x - dx;       b.y = q.y - dy;       c.x = q.x + dx;       c.y = q.y + dy;    }    cout << "A (" << a.x << ", " << a.y << ")\n"    << "B (" << b.x << ", " << b.y << ")\n"    << "C (" << c.x << ", " << c.y << ")\n"    << "D (" << d.x << ", " << d.y << ")\n"; } int main() {    Point p(1, 1), q(-1, -1);    printCorners(p, q, 2*sqrt(2)); }

আউটপুট

A (0, 2) B (-2, 0) C (0, -2) D (2, 0)

  1. C++ দিয়ে একটি স্ট্রিংয়ের সাবস্ট্রিং-এর সংখ্যা বের করা

  2. C++-এ ট্রেন স্টপেজ স্টেশন সংখ্যা বের করুন

  3. C++-এ দিয়ে गये পয়েন্ট থেকে সম্ভাব্য কোয়াড্রিল্যাটারেল সংখ্যা বের করুন

  4. OpenCV-এ C++ ব্যবহার করে আয়ত আঁকা