math - Best way to find the Coordinates of a Point on a Line-Segment a specified Distance Away from another Point -


इस समस्या की छवि यहां है:

 यहाँ छवि विवरण दर्ज करें

मेरे कोड में मेरे पास 4 अंक हैं: Q , आर , एस , T

मुझे निम्न पता है

  • आर के लिए निर्देशांक, T , और एस ;
  • वह खंड आरटी & lt; आरक्यू & लेफ्टिनेंट; आरएस ;
  • मुझे Q के निर्देशांक का पता लगाना होगा।

    मुझे पहले से ही पता Q < / कोड> लाइन खंड TS पर पाया जा सकता है। हालांकि मुझे Q और I के लिए निर्देशांक प्राप्त करने की आवश्यकता है, इसे अपेक्षाकृत कुशल गणना की आवश्यकता है।

    मेरे पास इस समस्या के लिए कई समाधान हैं लेकिन वे सब बहुत जटिल हैं और लंबे समय तक मुझे पता है कि मुझे कुछ गलत करना होगा। मुझे लगता है कि इस को हल करने के लिए एक सरल सुरुचिपूर्ण तरीका होना चाहिए। सबसे अच्छा समाधान एक होगा जो अधिक गहन गणना की संख्या को कम करता है, लेकिन यह भी हास्यास्पद रूप से लंबा नहीं है।

    < P> क्यू आर के चारों ओर त्रिज्या घ के एक चक्र और रेखा टीएस के बीच का अंतरायन बिंदु है, जो गुणांक में कई मापदंडों के साथ एक द्विघात समीकरण की ओर जाता है। मुझे नहीं पता कि अगर निम्नलिखित में सबसे अच्छा है ??? समाधान (यह भी बीच में एक संख्यात्मक solver का उपयोग करने के लिए बेहतर हो सकता है), लेकिन यह पूरी तरह से काम किया है। क्योंकि मुझे लगता है कि यह और अधिक पठनीय है, मैंने आपके समन्वय के नामों को बदल दिया है ताकि टी (टी 1, टी 2), एस (एस 1, एस 2) में एस और सूत्रों को कम रखने के लिए (0, 0) ? बस एस और टी समायोजित करें और तदनुसार लौटा मान।
      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);   

    जाहिर है, मैं कोई वारंटी नहीं लेता कि मैंने बिना किसी प्रकार के टेप इत्यादि बनाया है: -)

    संपादित करें: वैकल्पिक रूप से, आप कुछ पुनरावृत्त पद्धति से भी अच्छा सन्निकटन प्राप्त कर सकते हैं ( कहते हैं, न्यूटन) [0,1] में टी के एक समारोह के रूप में 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

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -