समस्या विवरण
इस समस्या में, हमें एक रेखा के दो बिंदुओं के निर्देशांक दिए गए हैं: प्रारंभिक बिंदु A(xₐ, yₐ) और मध्य बिंदु M(xₘ, yₘ)। हमारा कार्य दिए गए एक छोर और मध्य बिंदु के साथ रेखा का दूसरा छोर खोजना है।
उदाहरण
इनपुट
A = [1, 2], M = [3, 0]
आउटपुट
[5, -2]
हल का दृष्टिकोण
समस्या को हल करने के लिए, हम गणित में सीखी गई ज्यामिति की अवधारणाओं का उपयोग करेंगे। यदि आपको याद है तो हर रेखा के लिए एक मध्य बिंदु सूत्र होता है जो है:
mid(x) = (x1 + x2) / 2 mid(y) = (y1 + y2) / 2
लेकिन हमें समस्या में मध्य बिंदु का मान दिया गया है और x2 और y2 का मान चाहिए। इसलिए, हम सूत्र को तदनुसार बदलेंगे।
x2 = 2 × mid(x) - x1 y2 = 2 × mid(y) - y1
उपरोक्त सूत्र का उपयोग करके, हम मध्य बिंदु और रेखा के एक बिंदु का उपयोग करके दूसरे छोर का मान खोज सकते हैं।
C++ कार्यान्वयन
#include <iostream>
using namespace std;
void findMissingPointLine(float x1, float y1, float xm, float ym) {
float x2 = (2 * xm) - x1;
float y2 = (2 * ym) - y1;
cout << "B(x, y) = (" << x2 << ", " << y2 << ")";
}
int main() {
float x1 = -4, y1 = -1, xm = 3, ym = 5;
cout << "रेखा का दूसरा छोर है:\n";
findMissingPointLine(x1, y1, xm, ym);
return 0;
}
आउटपुट
रेखा का दूसरा छोर है: B(x, y) = (10, 11)
जटिलता विश्लेषण
- समय जटिलता: O(1)
- स्पेस जटिलता: O(1)
ज्यामितीय व्याख्या
मध्य बिंदु M, खंड AB का केंद्रक है। इसलिए, A से M तक का सदिश M से B तक के सदिश के बराबर होता है: M - A = B - M, जिससे B = 2M - A प्राप्त होता है।