2010-10-27 18 views
5

मैं कैसे पता लगा सकता हूं कि एक रेखा (बिंदु डी से दिशा डी और डीडी) और एक रेखा खंड (अंक पी 1 और पी 2 के बीच) 2 डी में छेड़छाड़ करता है? यदि वे करते हैं, तो मैं उनके चौराहे बिंदु कैसे प्राप्त कर सकता हूं।रेखा और रेखा सेगमेंट चौराहे

बहुत सारे उदाहरण हैं कि यह पता लगाने के लिए कि क्या दो रेखा खंड अलग-अलग हैं लेकिन यह भी आसान मामला होना चाहिए।

मैं इस पाया, लेकिन मुझे समझ नहीं आता एक पक्ष ऑपरेटर है क्या: http://www.loria.fr/~lazard//ARC-Visi3D/Pant-project/files/Line_Segment_Line.html

+0

पर आयन बिंदु कृपया लाइन और सेगमेंट के लिए अपनी अभिव्यक्ति पोस्ट करें, ताकि हम उत्तर संरेखित कर सकें। Tnx! –

+0

क्या यह 2 डी या 3 डी कार्य है? – user434507

उत्तर

5

यह एक 2 डी कार्य (लाइन और एक ही विमान में खंड झूठ है और वे 2-आयामी द्वारा निर्दिष्ट कर रहे हैं निर्देशांक), यह आसान है।

डी (सामान्य की रेखा की दिशा) के लिए सामान्य वेक्टर बनाएं।

गणना डॉट उत्पादों डी * (पी 1-पी) और डी * (पी 2-पी)। अगर उनके पास एक ही संकेत है, तो कोई चौराहे नहीं है। यदि उनके विपरीत संकेत हैं, तो एक चौराहे है। थोड़ी सी सोच के साथ, आप पी, पी 1-पी और पी 2-पी के संदर्भ में चौराहे के स्थान की गणना कैसे कर सकते हैं।

+0

आपको एक वेक्टर बनाने की आवश्यकता क्यों है जो डी के लिए सामान्य है? आप बाद के स्पष्टीकरण में उपयोग नहीं कर रहे हैं ... –

+0

मुझे लगता है कि बाद के डॉट उत्पादों में आप "डी" कहलाते हैं, वास्तव में सामान्य दिशा है। –

3

आप आसानी से जांच सकते हैं कि दो लाइनें (आपकी रेखा, और एक रेखा खंड रेखा) छेड़छाड़ बिंदु का अंतर और मूल्यांकन करती है या नहीं।

लाइन 1: (एक्स, वाई) (टी) = पी + टी * डी; पंक्ति 2: (एक्स, वाई) (टी) = p1 + K * (p2 - p1)

चौराहे बिंदु पर: p + टी * d = p1 + K * (p2 - p1) - दो समीकरणों (प्रति एक्स और प्रति वाई)

उस समीकरणों से आप आसानी से के और टी पैरामीटर पा सकते हैं।यदि 0 < कश्मीर < 1 प्रतिच्छेदन बिंदु (P1, P2) में है

क्या आप जानते हैं k या टी आप बस (एक्स, वाई) से प्रतिच्छेदन बिंदु की गणना कर सकते हैं (टी) = P + टी * घ या (एक्स, वाई) (टी) = p1 + K * (p2 - p1)

0

जाने p(x,y) और a अपनी दिशा लाइन समीकरण D = a.x+b जहां b = y - a.x

जाने p1(x1,y1) और p2(x2,y2) एक खंड जो समीकरण D' = a'.x+b' हैमें x के लिए अगर कोई है जिसके लिए [x1;x2] के बीच एक x जहां a' = (y2-y1)/(x2-x1) और b' = y2 - a'.x2 = y1 - a'.x1

आप एक चौराहे मिल गया है D = D' इस प्रकार यदि X = (b'-b)/(a-a')[x1;x2] से संबंध रखते हैं तो Y = a.X+b = a'.X+b आप प्रतिच्छेदन बिंदु P(X,Y)

उदाहरण के लिए देता है:

p(255,255), a = 1 =>b = 0

जाने p1(60,179) और p2(168,54)

=>a' = -125/108

=>b' = 24596/99

=>X = (24596/99 - 0)/(1+125/108) = 115,1587983

= तो वहाँ है 60 और 168 के बीच>Y = (24596/99 - 0)/(1+125/108) = 115,1587983

X है एक एक दूसरे को काटना P(X,Y)

संबंधित मुद्दे