को देखते हुए अंक के 2 सेटखोजें दो त्रिकोण एक दूसरे को काटना या नहीं,
((x1, y1, z1), (x2, y2, z2), (x3, Y3, z3)) और
((पी 1, क्यू 1, आर 1), (पी 2, क्यू 2, आर 2), (पी 3, क्यू 3, आर 3)) प्रत्येक 3 डी स्पेस में त्रिकोण बनाते हैं।
आप कैसे पता लगाएंगे कि ये त्रिभुज छेड़छाड़ करते हैं या नहीं?
इस समस्या का एक स्पष्ट समाधान प्रत्येक त्रिभुज द्वारा बनाए गए विमान के समीकरण को ढूंढना है। यदि विमान समानांतर हैं, तो वे अंतर नहीं करते हैं।
अन्यथा, इन विमानों के सामान्य वैक्टरों का उपयोग करके इन विमानों के चौराहे से गठित लाइन के समीकरण को ढूंढें।
अब, यदि यह रेखा त्रिकोणीय क्षेत्रों दोनों में निहित है, तो इन दो त्रिकोणों का अंतर होता है, अन्यथा नहीं।
trianglesIntersect(Triangle T1, Triangle T2)
{
if(trianglesOnParallelPlanes(T1, T2))
{
return false
}
Line L1 = lineFromPlanes(planeFromTriangle(T1), planeFromTriangle(T2))
if(lineOnTriangle(T1, L1) AND lineOnTriangle(T2, L1))
{
return true
}
return false
}
यह देखते हुए कि मुझे उपर्युक्त कार्यों को कैसे लिखना है, त्रिकोणों के अन्य कार्यान्वयन क्या मुझे समझना चाहिए?
क्या इस समस्या को हल करने वाले तेज़ एल्गोरिदम हैं?
[math.stackexchange.com] (पर http://math.stackexchange.com पूछने का प्रयास करें) बजाय। एस प्रोग्रामिंग सवालों के लिए है। – PengOne
http://www.applet-magic.com/trintersection.h.hm – Jacob
मुझे निराश है कि यह प्रश्न बंद कर दिया गया था। यह एक प्रसिद्ध प्रोग्रामिंग समस्या है जो कंप्यूटर ग्राफिक्स, रे-ट्रेसिंग, वीडियो गेम में फसल है। मैंने इसे एक से अधिक बार प्रोग्राम किया है। यह यहां विषय कैसे हो सकता है? –