यहां ऊपर-नीचे प्रिमिटिव का उपयोग करके यह जांचने के लिए एक C++ प्रोग्राम है कि क्या दो लाइन्स इंटरसेक्ट करती हैं। इसका उपयोग यह जांचने के लिए किया जा सकता है कि क्या कोई लाइन किसी लाइन सेगमेंट को इंटरसेक्ट करती है। यह तभी होता है जब सेगमेंट का एक एंडपॉइंट लाइन के बाईं ओर हो और दूसरा दाईं ओर।
एल्गोरिदम
Begin पहली लाइन का समीकरण उत्पन्न करने के लिए, कंपाइलेशन के हर बार rand का उपयोग करके x और y के गुणांक के लिए रैंडम नंबर उत्पन्न करें। दूसरी लाइन का समीकरण उत्पन्न करने के लिए, कंपाइलेशन के हर बार rand का उपयोग करके x और y के गुणांक के लिए रैंडम नंबर उत्पन्न करें। लाइन 1 के सेगमेंट को Y1 के रूप में खोजें। if (Y1 < 0) लाइन 2 का सेगमेंट खोजें if (Y2 >= 0) प्रिंट करें वे इंटरसेक्ट कर रहे हैं। else if (Y2 < 0) प्रिंट करें वे इंटरसेक्ट नहीं कर रहे हैं। else if (Y1 >0) लाइन 2 का सेगमेंट खोजें if (Y2 <= 0) प्रिंट करें वे इंटरसेक्ट कर रहे हैं। else if (Y2 >0) प्रिंट करें वे इंटरसेक्ट नहीं कर रहे हैं। End.
उदाहरण कोड
#include<time.h> #include<stdlib.h> #include<iostream> #include<math.h> using namespace std; const int L = 2; const int H= 20; int main(int argc, char **argv) { time_t s; time(&s); srand((unsigned int) s); int x1, x2, y1, y2; x1 = rand() % (H - L+ 1) + L; x2 = rand() % (H - L+ 1) + L; y1 = rand() % (H- L+ 1) + L; y2 = rand() % (H - L + 1) + L; cout << "The Equation of the 1st line is : (" << (y2 - y1) << ")x+(" << (x1 - x2) << ")y+(" << (x2 * y1 - x1 * y2) << ") = 0\n"; int p1, p2, q1, q2; p1 = rand() % (H- L+ 1) + L; p2 = rand() % (H- L + 1) + L; q1 = rand() % (H - L + 1) + L; q2 = rand() % (H - L + 1) + L; cout << "The Equation of the 2nd line is : (" << (q2 - q1) << ")x+(" << (p1 - p2) << ")y+(" << (p2 * q1 - p1 * q2) << ") = 0\n"; int Y1 = (y2 - y1) * p1 + (x1 - x2) * q1 + (x2 * y1 - x1 * y2); //Y1 सेगमेंट if (Y1 < 0) { int Y2 = (y2 - y1) * p2 + (x1 - x2) * q2 + (x2 * y1 - x1 * y2); //Y2 सेगमेंट if (Y2 >= 0) cout << "Lines are intersecting"; else if (Y2 < 0) cout << "Lines are not intersecting"; } else if (Y1 >0) { int Y2 = (y2 - y1) * p2 + (x1 - x2) * q2 + (x2 * y1 - x1 * y2); if (Y2 <= 0) cout << "Lines are intersecting"; else if (Y2 >0) cout << "Lines are not intersecting"; } else cout << "The point lies on the line"; return 0; }आउटपुट
The Equation of the 1st line is : (-3)x+(2)y+(1) = 0 The Equation of the 2nd line is : (-5)x+(-5)y+(130) = 0 Lines are intersecting The Equation of the 1st line is : (-1)x+(7)y+(-15) = 0 The Equation of the 2nd line is : (-4)x+(4)y+(-8) = 0 Lines are not intersecting