एबी और सीडी - कोड दो खंडों के चौराहे बिंदु को खोजने के लिए प्रयास करता है।
वहाँ समझाने के लिए कि यह कैसे यह कर रहा है, आप कैसे इन आपरेशनों की व्याख्या के आधार पर कई अलग अलग तरीके हैं।
मान लीजिए कि बिंदु A निर्देशांक करते हैं (Xa, फिर), बी - (XB, वाई बी) और इतने पर। हम कहते हैं
dxAB = xb - xa
dyAB = yb - ya
dxCD = xd - xc
dyCD = yd - yc
दो रेखीय समीकरण निम्नलिखित प्रणाली
| dxAB dxCD | | t | | xc-xa |
| | * | | = | |
| dyAB dyCD | | u | | yc-ya |
अगर के लिए हल tऔर u, आप प्रतिच्छेदन बिंदु रेखा एबी (मूल्य पर की आनुपातिक स्थिति दे देंगे t) और लाइन सीडी (मूल्य पर u)। इन मूल्यों की रेंज में झूठ होगा [0, 1]अगर बिंदु (खंड युक्त लाइन पर) खंड के बाहर स्थित बिंदु इसी खंड के लिए और कहा कि सीमा के बाहर अंतर्गत आता है, तो।
हम अच्छी तरह से ज्ञात का उपयोग कर सकते रेखीय समीकरण की इस प्रणाली हल करने के लिए क्रेमर के शासन । ऐसी स्थिति में हमने की निर्धारक की आवश्यकता होगी
| dxAB dxCD |
| |
| dyAB dyCD |
जो वास्तव में determinant(b - a, c - d)अपने कोड से। (वास्तव में, क्या मैं यहाँ है determinant(b - a, d - c), लेकिन यह इस स्पष्टीकरण के प्रयोजनों के लिए वास्तव में महत्वपूर्ण नहीं है। कोड आप किसी कारण से तैनात सी और डी, नीचे पुनश्च नोट दिखाई स्वैप)।
और हम भी की निर्धारक की आवश्यकता होगी
| xc-xa dxCD |
| |
| yc-ya dyCD |
जो वास्तव में determinant(c-a,c-d)अपने कोड से, और के निर्धारक
| dxAB xc-xa |
| |
| dyAB yc-ya |
जो वास्तव में है determinant(b-a,c-a)।
क्रेमर के शासन के अनुसार इन निर्धारकों डिवाइडिंग हम में से मूल्यों दे देंगे tऔर uहै, जो वास्तव में क्या कोड आप पोस्ट में किया जाता है।
कोड तो के मूल्यों का परीक्षण के लिए आगे बढ़ता tहै और uयदि खंडों वास्तव में एक दूसरे को काटना जाँच, दोनों चाहे यानी करने के लिए tऔर uके हैं [0, 1]सीमा होती है। और अगर वे करते हैं, यह वास्तविक प्रतिच्छेदन बिंदु मूल्यांकन द्वारा गणना करता है a*t+b*(1-t)(समतुल्य रूप में, यह मूल्यांकन कर सकता है c*u+d*(1-u))। (फिर से, नीचे पुनश्च टिप्पणी देखें)।
पुनश्च मूल कोड अंक डी और सी में "बदली" कर रहे हैं एक भावना है कि कोड करता है c - d, जहां मैं क्या d - cमेरी व्याख्या में। लेकिन इस एक के संकेत के साथ सावधान के रूप में रूप में लंबे समय एल्गोरिथ्म के सामान्य विचार के लिए कोई फर्क नहीं पड़ता,।
सी और डी बिंदु के इस अदला-बदली भी कारण है a*(1-t)+t*bअभिव्यक्ति जब प्रतिच्छेदन बिंदु का मूल्यांकन किया जाता है। आम तौर पर, मेरी व्याख्या के रूप में, की तरह कुछ देखने की उम्मीद one'd a*t+b*(1-t)वहाँ। (मैं हालांकि इस बारे में मेरे शक है। मैं देखने की अपेक्षा करेंगे a*t+b*(1-t)यहां तक कि अपने संस्करण में वहाँ। एक बग हो सकता है।)
पी पी एस लेखक कोड के लिए जाँच करने के लिए भूल गए हैं det == 0(या बहुत करीब 0), जिस स्थिति में होगा जब खंडों समानांतर हैं।