परिचय
एक 2D तल में, चार बिंदु दिए गए हैं। यह एल्गोरिदम जांचेगा कि क्या चार बिंदु एक वर्ग बना रहे हैं या नहीं।
वर्ग की जांच के लिए हमें इन शर्तों का मिलान करना होगा:
- दिए गए बिंदुओं द्वारा बने सभी चार पक्ष समान हैं।
- सभी दो जुड़े हुए पक्ष समकोण हैं।
इनपुट और आउटपुट
इनपुट: चार बिंदु {(20, 10), (10, 20), (20, 20), (10, 10)}
आउटपुट: बिंदु एक वर्ग बना रहे हैं।
एल्गोरिदम
isFormingSquare(p1, p2, p3, p4)
इस प्रक्रिया में, हम squareDist(p1, p2) नामक एक विधि का उपयोग करेंगे, यह दो दिए गए बिंदुओं की वर्ग दूरी लौटाएगा।
इनपुट: चार बिंदु
आउटपुट: सत्य जब दिए गए बिंदु एक वर्ग बना रहे हों
Begin
dist12 := squareDist(p1, p2)
dist13 := squareDist(p1, p3)
dist14 := squareDist(p1, p4)
यदि dist12 = dist13 और 2*dist12 = dist14, तो
dist := squareDist(p2, p4)
सत्य लौटाएं जब dist = squareDist(p3, p4) और dist = dist12
यदि dist13 = dist14 और 2*dist13 = dist12, तो
dist := squareDist(p2, p3)
सत्य लौटाएं जब dist = squareDist(p2, p4) और dist = dist13
यदि dist12 = dist14 और 2*dist12 = dist13, तो
dist := squareDist(p2, p3)
सत्य लौटाएं जब dist = squareDist(p3, p4) और dist = dist12
असत्य लौटाएं
End
उदाहरण (C++ कोड)
#include <iostream>
using namespace std;
struct Point {
int x, y;
};
int squareDist(Point p, Point q) {
return (p.x - q.x)*(p.x - q.x) + (p.y - q.y)*(p.y - q.y);
}
bool isSquare(Point p1, Point p2, Point p3, Point p4) {
// जांचें कि चार बिंदु वर्ग बना रहे हैं या नहीं
int dist12 = squareDist(p1, p2); // p1 से p2 की दूरी
int dist13 = squareDist(p1, p3); // p1 से p3 की दूरी
int dist14 = squareDist(p1, p4); // p1 से p4 की दूरी
// जब p1-p2 और p1-p3 की लंबाई समान हो, और (p1-p4) का वर्ग = 2*(p1-p2)
if (dist12 == dist13 && 2*dist12 == dist14) {
int dist = squareDist(p2, p4);
return (dist == squareDist(p3, p4) && dist == dist12);
}
// अन्य सभी संयोजनों के लिए समान शर्त
if (dist13 == dist14 && 2*dist13 == dist12) {
int dist = squareDist(p2, p3);
return (dist == squareDist(p2, p4) && dist == dist13);
}
if (dist12 == dist14 && 2*dist12 == dist13) {
int dist = squareDist(p2, p3);
return (dist == squareDist(p3, p4) && dist == dist12);
}
return false;
}
int main() {
Point p1 = {20, 10}, p2 = {10, 20}, p3 = {20, 20}, p4 = {10, 10};
if (isSquare(p1, p2, p3, p4))
cout << "Points are forming a square.";
else
cout << "Points are not forming a square";
}
आउटपुट
Points are forming a square.