बढ़ाएँ मैं एक विशिष्ट दूरी के अनुसार एक रेखा खंड विस्तार करने के लिए एक रास्ता खोजने की कोशिश कर रहा हूँ। उदाहरण के लिए यदि मेरे पास 10,10 से 20,13 तक बढ़ने वाला लाइन सेगमेंट है और मैं लंबाई 3 तक बढ़ा सकता हूं तो मैं नए एंडपॉइंट की गणना कैसे करूं। मैं इस उदाहरण 10.44 इसलिए यदि मैं 13.44 की लंबाई क्या computationally सबसे तेज़ तरीका होगा साथ 10,10 से नए अंत बिंदु जानना चाहता था में से sqrt (एक^2 + b^2) लंबाई मिल सकता है? मैं ढलान को भी जानता हूं लेकिन यह नहीं जानता कि इससे मुझे इस मामले में कोई मदद मिलती है या नहीं।एक रेखा खंड एक विशिष्ट दूरी
उत्तर
आप अपने रेखा खंड की इकाई वेक्टर खोजकर इसे करते हैं और अपने वांछित लंबाई करने के लिए इसे पैमाने पर कर सकते हैं, तो अनुवाद इस सदिश के साथ अपने रेखा खंड के अंत बिंदु। अपने रेखा खंड अंत अंक A
और B
रहे हैं और आप अंत बिंदु B
के बाद का विस्तार करना चाहते हैं (और lenAB
लाइन खंड की लंबाई है) मान लें।
#include <math.h> // Needed for pow and sqrt.
struct Point
{
double x;
double y;
}
...
struct Point A, B, C;
double lenAB;
...
lenAB = sqrt(pow(A.x - B.x, 2.0) + pow(A.y - B.y, 2.0));
C.x = B.x + (B.x - A.x)/lenAB * length;
C.y = B.y + (B.y - A.y)/lenAB * length;
जहां lenAB = sqrt ((A.x - B.x) ** 2 + (A.y - B.y) ** 2) –
इस समाधान सबसे तेजी से काम करने के लिए लगता है। सिर्फ मामले में आपकी मदद के – goodgulf
के लिए धन्यवाद आप सोच रहे हैं, जहां इस बात आती है, से (Bx - कुल्हाड़ी)/lenAB * लंबाई के रूप में cos (slope_alpha) एक ही * लंबाई है ... मेरे – fersarr
आप पहले से ही ढलान आप नए बिंदु की गणना कर सकते हैं:
x = old_x + length * cos(alpha);
y = old_y + length * sin(alpha);
मैं इस एक समय में नहीं किया है, तो यह एक अलग नज़रिए के साथ ले लो।
जहां अल्फा = atan2 (y-old_y, एक्स old_x) –
आपकी मदद के लिए धन्यवाद, यह समाधान थोड़ी धीमी तो कम समाधान लगता है। मैं मदद की सराहना करता हूं, यह भी काम करता है। – goodgulf
मैं सिर्फ इस बात के लिए अपने आप को खोजने के बाद इस पर ठोकर खाई है, और आप एक बाहर के बॉक्स समाधान देने के लिए, आप एक मानक वेक्टर वर्ग के अंदर कोड पर एक नज़र (किसी भी भाषा में) हो सकता है और चेरी आपको किस भाग की आवश्यकता है, लेकिन मैं इसका उपयोग कर समाप्त हुआ और कोड इस तरह दिखता है:
vector.set(x,y);
vector.normalize();
vector.multiply(10000);// scale it by the amount that you want
शुभकामनाएँ!
मुझे लगता है कि यह सबसे सुंदर जवाब है –
- 1. खोजें एक रेखा खंड
- 2. दो समांतर रेखा खंड चौराहे
- 3. किसी दिए गए बिंदु से एक रेखा खंड पर लंबवत
- 4. एक बहुभुज और रेखा
- 5. बिंदु से रेखा खंड और लाइन सेगमेंट तक लाइन सेगमेंट
- 6. एक "असममित" जोड़ी दूरी दूरी मैट्रिक्स
- 7. सी # में एक स्ट्रिंग से विशिष्ट रेखा कैसे प्राप्त करें?
- 8. सी में फ़ाइल से एक विशिष्ट रेखा fgets() कैसे करें?
- 9. उपयोग विशिष्ट एक विशिष्ट एक
- 10. एक स्पलीन और रेखा
- 11. एक प्रश्नोत्तरी खंड
- 12. एक कस्टम खंड शेडर
- 13. एक विशिष्ट स्क्रिप्ट लाइन
- 14. रेखा और रेखा सेगमेंट चौराहे
- 15. एक 2 डी हस्ताक्षरित दूरी क्षेत्र कंप्यूटिंग
- 16. एक विशिष्ट
- 17. एक बिंदु से एक रेखा से विपरीत सर्कल पर एक रेखा खींचें? AS3
- 18. एक LINQ के साथ एक विशिष्ट को अनदेखा कैसे करें जहां खंड?
- 19. कॉलम उर्फ एक कहां खंड
- 20. एक खंड में अजीब वाक्यविन्यास
- 21. को न काटने रेखा खंड जबकि संचयी लंबाई
- 22. बदलने और इसे एक विशिष्ट प्रारूप
- 23. एक विशिष्ट त्रिज्या में ज़िप कोड ढूँढना
- 24. इकाइयों के लिए लिंक विशिष्ट खंड
- 25. प्रति तालिका एक प्रति या एक कार्यात्मक खंड प्रति एक?
- 26. एक दूरी मैट्रिक्स के समानांतर निर्माण
- 27. मैनहट्टन एक स्वीकार्य ह्युरिस्टिक कैसे दूरी है?
- 28. एक विशिष्ट आरएसएस
- 29. एक विशिष्ट दायरे
- 30. एक विशिष्ट नाम स्थान
यह एक प्रोग्रामिंग सवाल है, लेकिन सरल गणित है, जो आप तो अपने कोड का विस्तार करने की जरूरत नहीं है। – Constantinius
@ कॉन्स्टेंटिनीस यह अभी भी एक एल्गोरिदम प्रश्न है, केवल गणित में आधारित एक (जो कंप्यूटर विज्ञान बेहद भारी है)। – corsiKa
@glowcoder: मैं असहमत हूं। नीचे गणित को समझने के बिना कोई सवाल नहीं है कि वह अपने काम में विफल रहता है। दूसरी तरफ, यदि वह गणित से परिचित है, तो इसे प्रोग्राम कोड में अनुवाद करने का एक छोटा सा काम है। – Constantinius