math - Best way to find the Coordinates of a Point on a Line-Segment a specified Distance Away from another Point -
इस समस्या की छवि यहां है:
मेरे कोड में मेरे पास 4 अंक हैं: मुझे निम्न पता है मुझे पहले से ही पता मेरे पास इस समस्या के लिए कई समाधान हैं लेकिन वे सब बहुत जटिल हैं और लंबे समय तक मुझे पता है कि मुझे कुछ गलत करना होगा। मुझे लगता है कि इस को हल करने के लिए एक सरल सुरुचिपूर्ण तरीका होना चाहिए। सबसे अच्छा समाधान एक होगा जो अधिक गहन गणना की संख्या को कम करता है, लेकिन यह भी हास्यास्पद रूप से लंबा नहीं है। जाहिर है, मैं कोई वारंटी नहीं लेता कि मैंने बिना किसी प्रकार के टेप इत्यादि बनाया है: -) संपादित करें: वैकल्पिक रूप से, आप कुछ पुनरावृत्त पद्धति से भी अच्छा सन्निकटन प्राप्त कर सकते हैं ( कहते हैं, न्यूटन) [0,1] में टी के एक समारोह के रूप में अपनी आवश्यक सटीकता को नियंत्रित करने के लिए ईपीएस सेट करें, लेकिन इसे बहुत कम सेट न करें "??? कंप्यूटिंग एफ में एक घटाव शामिल है जिसमें समाधान के पास गंभीर रद्द करने की समस्याएं होंगी। Q ,
आर ,
एस ,
T ।
आर के लिए निर्देशांक,
T , और
एस ;
आरटी & lt; आरक्यू & लेफ्टिनेंट; आरएस ;
Q के निर्देशांक का पता लगाना होगा।
Q < / कोड> लाइन खंड
TS पर पाया जा सकता है। हालांकि मुझे
Q और
I के लिए निर्देशांक प्राप्त करने की आवश्यकता है, इसे अपेक्षाकृत कुशल गणना की आवश्यकता है।
tmp1 = S1 ^ 2 - एस 2 * टी 2 - एस 1 * टी 1 + एस 2 ^ 2; Tmp2 = sqrt (- S1 ^ 2 * T2 ^ 2 + S1 ^ 2 * d ^ 2 + 2 * एस 1 * एस 2 * टी 1 * टी 2 - 2 * एस 1 * टी 1 * डी ^ 2 - एस 2 ^ 2 * टी 1 ^ 2 + एस 2 ^ 2 * d ^ 2 - 2 * S2 * T2 * d ^ 2 + T1 ^ 2 * d ^ 2 + टी 2 ^ 2 * d ^ 2); टीएमपीई = एस 1 ^ 2 - 2 * एस 1 * टी 1 + एस 2 ^ 2 - 2 * एस 2 * टी 2 + टी 1 ^ 1 + टी 2 ^ 2; टी = (टीएमपी 1 + टीएमपी 2) / टीएमपीपीई; यदि (0 & gt; टी || टी & gt; 1) {// अन्य समाधान को बजाय टी = (टीएमपी 1 - टीएमपी 2) / टीएमपीपीई चुनें; } Q1 = S1 + t * (T1-S1); क्यू 2 = एस 2 + टी * (टी 2-एस 2);
dist (एस + टी * (टीएस), आर) -डी का शून्य खोजने के लिए। अगर मैं सही ढंग से गिनता हूं, तो उस पर सात गुणा और एक डिविजन प्रति न्यूटन कदम होगा। ऊपर से नामों को फिर से प्रयोग करना, यह कुछ ऐसा दिखाई देगा:
t = 0.5; डी 2 = डी ^ 2; एस 1 टी 1 = एस 1 - टी 1; एस 2 टी 2 = एस 2 - टी 2; करो {टीएस 1 टी 1 = एस 1 - टी * एस 1 टी 1; टीएस 2 टी 2 = एस 2 - टी * एस 2 टी 2; F = tS1T1 * टीएस 1 टी 1 + टीएस 2 टी 2 * टीएस 2 टी 2 - डी 2; एफपी = 2 * (एस 1 टी 1 * टीएस 1 टी 1 + एस 2 टी 2 * टीएस 2 टी 2); टी = टी + एफ / एफपी; } जबकि (एफ & gt; ईपीएस);
Comments
Post a Comment