2009-12-17 28 views
10

मुझे एक रेखा खंड के अंतिम बिंदु और लंबवत अंत कैप्स की दूरी/आकार पता है जिसे मैं बनाना चाहता हूं लेकिन मुझे लंबवत रेखा के अंतिम बिंदुओं को कैलकुलेट करने की आवश्यकता है। मैं 45-45-90 त्रिकोण और डॉट उत्पादों का उपयोग कर दीवार के खिलाफ अपने सिर को टक्कर लगी हूं, लेकिन मैं इसे एक साथ आने के लिए प्रतीत नहीं कर सकता।लम्बवत रेखा खंडों के अंतिम बिंदुओं की गणना कैसे करें?

मुझे नीले रंग के बिंदु और लाल रंग की दूरी की दूरी पता है, मुझे लाल रंगों को लाल रंग में ढूंढना होगा।

डुप्लिकेट के रूप में चिह्नित करने से पहले, मैंने this question में पोस्ट किए गए उत्तर की कोशिश की लेकिन इसके परिणामस्वरूप अंत कैप्स जो हमेशा लंबवत थे।

http://rauros.net/files/caps.png http://rauros.net/files/caps.png

+0

यह उस ज्ञात रेखा पर बिंदु पर निर्भर करेगा जिस पर आप लंबवत रेखा को पूरा करने की इच्छा रखते हैं। आपका उदाहरण आरेख उन्हें ज्ञात रेखाओं के मध्य बिंदु पर दिखा रहा है। – ZombieSheep

+0

हां, लाल रेखा – basszero

+0

के मध्य बिंदु पर छेड़छाड़ करने के लिए संबंधित हैं: [एक विकर्ण रेखा से लंबवत ऑफसेट की गणना करें] (http://stackoverflow.com/q/17195055/183120)। – legends2k

उत्तर

16

तो बी 1 2 लाल बिंदुओं के बीच नीले बिंदु है, और बी 2 तो तरीका यह है अन्य नीले बिंदु है:

  • ढूँढें बी 1 - बी 2
  • मानक के अनुसार इस सदिश
  • तो फिर इस सदिश 90 डिग्री
  • द्वारा लाल अंक
  • घुमाएँ के बीच आधे दूरी के अनुसार पैमाने बी 1 को यह वेक्टर जोड़ें (इस R1 है)
  • र बी 1 से यह वेक्टर btract (यह आर 2 है)

उपर्युक्त सभी स्पष्ट रूप से सरल हैं - सबसे कठिन बिट यह पता लगाएगा कि पाठ में इसे कैसे लिखना है!

यह हालांकि उपयोगी हो सकता है - मैट्रिक्स 90 डिग्री से बारी बारी से करने के लिए:

[ 0 -1 ] 
[ 1 0 ] 
+0

सादा अंग्रेजी वेक्टर स्पष्टीकरण बिल्कुल वही है जो मुझे चाहिए मेरे सिर में टुकड़े एक साथ रखो। धन्यवाद! शर्मिंदा आप कई अपवित्र नहीं मिला – basszero

3

आप ब्लू लाइन की ढलान पता है, की यह m फोन करते हैं। और नीली रेखा के लंबवत रेखा को -1/m ढलान होगा।

एक्स-समन्वय को खोजने के लिए आपको कुछ ट्रिगर, sine \theta = d/delta_x की आवश्यकता है, जहां \ theta x-axis के लिए नीली रेखा का कोण है और डी नीली बिंदु से लाल बिंदुओं में से एक की दूरी है। फिर नीली बिंदु के एक्स-समन्वय में delta_x जोड़ें/घटाएं, जिसे आप रेखा लंबवत होना चाहते हैं। अब आप वाई समन्वय को समझने के लिए बिंदु-ढलान सूत्र का उपयोग कर सकते हैं।

+0

लेकिन आपको बिंदु-ढलान फ़ॉर्म को रेखा खंड में बदलने के लिए दूरी से जुड़े समीकरणों की एक प्रणाली को हल करने की आवश्यकता है। मैं एक हल सिस्टम सिस्टम – basszero

+0

हाँ की उम्मीद कर रहा था, हाँ, मुझे एक कदम याद आया, आपको पहले बिंदु-ढलान सूत्र के एक्स-समन्वय को खोजने की आवश्यकता है, जहां ट्रिगर आता है। – nlucaroni

8

इस एक के आसपास आसान तरीका ढलान मीटर के मामले में सोचने के लिए नहीं है, बल्कि x और y में परिवर्तन है, जो मैं डीएक्स, डीई (कैलकुस नोटेशन से) कहते हैं। कारण एक बात के लिए है, जो एक लंबवत रेखा के लिए ढलान से निपटना अनंत है, और किसी भी मामले में, आपको ट्रिग फ़ंक्शंस का उपयोग करने की आवश्यकता नहीं है, यह कोड तेज़ और सरल होगा।

dx = x2 - x1; 
dy = y2 - y1; 

मुझे लगता है कि बिंदु 2 वांछित रेखा का चौराहे है।

ठीक है, इसलिए लंबवत रेखा में पहले के नकारात्मक पारस्परिक संबंध के साथ एक ढलान है। वहाँ ऐसा करने के लिए दो तरीके हैं:

dx2 = -dy 
dy2 = dx 

या

dx2 = dy 
dy2 = -dx 

इस दो दिशाओं से मेल खाती है, एक सही मोड़, और अन्य बाईं।

हालांकि, डीएक्स और डीई मूल रेखा खंड की लंबाई तक बढ़ाए गए हैं। आपकी लंबवत की एक अलग लंबाई है। , एक तरफ या अन्य पर जाने के लिए

double length(double x1, double y1, double x2, double y2) { 
return sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)); 
} 

, तुम क्या चाहते हो रहा है::

यहाँ दो अंक के बीच की लंबाई है

double scale = length(whatever length you want to go)/sqrt(dx*dx+dy*dy); 
double dx2 = -dy * scale; 
double dy2 = dx * scale 

और फिर उसी फिर दूसरे पक्ष के लिए । मुझे अभी एहसास हुआ कि मेरा उदाहरण कुछ हद तक सी ++ है, क्योंकि मैंने वर्ग का उपयोग किया था, लेकिन मतभेद छोटे हैं। ध्यान दें कि आप वर्ग की जड़ों को संयोजित करते हुए कोड को अधिक कुशलता से लिख सकते हैं।

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