2009-08-09 17 views
18

मेरे पास एक प्रश्न है, मुझे एक पंक्ति पता है, मुझे बस इसकी ढलान (एम) और एक बिंदु पर पता है ए (एक्स, वाई) मैं अंक की गणना कैसे कर सकता हूं (वास्तव में उनमें से दो) इस रेखा पर दूरी ए से दूरी (डी) के साथ ??? मैं इसे एक लाइन पर पिक्सेल की तीव्रता खोजने के लिए कह रहा हूं जो एक दूरी के साथ ए (एक्स, वाई) से गुजरता है। इस मामले में प्रतिरोध पिक्सेल की संख्या होगी।किसी दिए गए दूरी के साथ लाइन पर अंक ढूंढना

उत्तर

15

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

चूंकि आपकी लाइन ढलान मीटर है, इसकी दिशा वेक्टर < 1, m> है। चूंकि यह x में प्रत्येक 1 पिक्सेल के लिए y में m पिक्सल चलाता है। आप उस दिशा वेक्टर को इकाई लंबाई के लिए सामान्य बनाना चाहते हैं ताकि आप वेक्टर की परिमाण से विभाजित हो जाएं।

 
    magnitude = (1^2 + m^2)^(1/2) 

    N = <1, m>/magnitude = <1/magnitude, m/magnitude> 

सामान्यीकृत दिशा वेक्टर एन है। अब आप लगभग पूरा कर चुके हैं।

 
    f(t) = A + t*N 

यह vector math उपयोग करता है: तुम बस पैरामिट्रीकृत प्रारूप में अपनी लाइन के लिए समीकरण लिखने के लिए की जरूरत है। विशेष रूप से, scalar vector multiplication (आपके पैरामीटर टी और वेक्टर एन) और vector addition (ए और टी * एन) के। फंक्शन एफ का परिणाम लाइन के साथ एक बिंदु है। आप जिन 2 बिंदुओं की तलाश में हैं वे हैं f (d) और f (-d)। अपने चयन की भाषा में लागू करें।

इस विधि का उपयोग करने के लिए अब तक के सभी अन्य उत्तरों के विपरीत, यह है कि आप "अनंत" ढलान वाली रेखा का समर्थन करने के लिए आसानी से इस विधि का विस्तार कर सकते हैं। यही है, x = 3. जैसी ऊर्ध्वाधर रेखा आपको वास्तव में ढलान की आवश्यकता नहीं है, आपको केवल सामान्यीकृत दिशा वेक्टर की आवश्यकता है। एक लंबवत रेखा के लिए, यह < 0, 1> है। यही कारण है कि ग्राफिक्स ऑपरेशंस अक्सर वेक्टर गणित का उपयोग करते हैं, क्योंकि गणना अधिक सीधे आगे होती है और एकवचन के लिए कम प्रवण होती है। यह पहली बार थोड़ा जटिल लग सकता है, लेकिन एक बार जब आप वेक्टर ऑपरेशंस का लटका लेते हैं, तो बहुत सारे कंप्यूटर ग्राफिक्स कार्यों को बहुत आसान हो जाता है।

+0

मदद के लिए धन्यवाद – Emre

+0

@ALevy आप एक चर, 'ए' पेश करते हैं, लेकिन मुझे नहीं लगता कि 'ए' को किस प्रकार परिभाषित किया गया है। क्या है'? –

+0

@ टोमएगर मैंने इस उत्तर के प्रारंभिक अनुच्छेद में ए को पेश किया। ए लाइन पर एक बिंदु है। कोई फर्क नहीं पड़ता कि कौन सा बिंदु। लाइन पर मौजूद कोई भी बिंदु करेगा। –

0

चलो उस बिंदु को कॉल करें जिसे आप पी ढूंढने की कोशिश कर रहे हैं, निर्देशांक पीएक्स, पीई, और आपके शुरुआती बिंदु ए के समन्वय कुल्हाड़ी और एई के साथ। स्लोप एम एक्स में परिवर्तन के ऊपर वाई में परिवर्तन का अनुपात है, इसलिए यदि आपका बिंदु पी ए से दूरी है, तो इसके निर्देशांक पीएक्स = अक्ष + एस, और py = ay + m * s हैं। अब पायथागोरस का उपयोग करके, ए से पी की दूरी डी डी = एसकर्ट (एस * एस + (एम * एस) * (एम * एस) होगी। पी को एक विशिष्ट डी इकाइयों को ए से दूर करने के लिए, s = D/sqrt (1 + m * m) के रूप में खोजें।

2

Let me explain the answer in a simple way

प्रारंभ बिंदु - (x0, y0)

अंतिम बिंदु - (x1, y1)

हम अंत बिंदु की ओर प्रारंभ बिंदु से एक दूरी डीटी पर एक बिंदु (xt, yt) खोजने की जरूरत है।

Point on a line at a distance

प्रारंभ और अंत बिंदु के बीच की दूरी दूरी के अनुपात, t = dt/d

तब बिंदु (xt, yt) = (((1 - t) * x0 + t * x1), ((1 - t) * y0 + t * y1))

द्वारा d = sqrt((x1 - x0)^2 + (y1 - y0)^2)

दिया जाता है चलो जब 0 < t < 1, बिंदु पर है रेखा।

t < 0, बिंदु (x0, y0) के पास लाइन के बाहर है।

t > 1, बिंदु (x1, y1) के पास लाइन के बाहर है।

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