কম্পিউটার

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 এর মধ্য দিয়ে সরল রেখার সমীকরণ তৈরি করতে পারি, তারপর দূরত্ব সূত্রটি ব্যবহার করে আমরা ফলাফল পাব।

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. কিভাবে C++ ব্যবহার করে OpenCV এ একটি আয়তক্ষেত্র আঁকবেন?