मैं दो वैक्टर के बीच रैखिक रूप से कैसे प्रक्षेपित करूं?


16

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

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

काला तीर क्लाइंट वेग वेक्टर है, लाल तीर सर्वर पर क्लाइंट वेग वेक्टर है और नीला तीर वह है जिसे मैं गणना करना और प्रक्षेपित करना चाहता हूं।

मैं नीले वेक्टर की गणना कैसे करूं? फिर, मैं उनके बीच रैखिक अंतर कैसे कर सकता हूं?

जवाबों:


18

ब्लू वेक्टर की गणना आसानी से की जा सकती है: लाल - काला (वैक्टर के बीच का चिह्न माइनस है)। लेकिन अगर आप काले और लाल वेक्टर के बीच अंतर करना चाहते हैं, तो आपको इसकी गणना करने की आवश्यकता नहीं है। रैखिक प्रक्षेप सिर्फ रैखिक संयोजन है। तो आप बस ले सकते हैं: अल्फा * काला + (1 - अल्फा) * लाल, जहां अल्फा को अंतराल से होना है <0,1>। यदि अल्फा 1 होगा, तो आपको काला वेक्टर मिलेगा, जब अल्फा 0 है, तो आपको लाल वेक्टर मिलेगा।

और अगर मैंने इसे सही समझा, तो आप समय के साथ इन वैक्टरों के बीच अंतर करेंगे। तो बस समय में अल्फा का सही वेतन वृद्धि चुनें।

क्या मैंने आपको सही समझा? या क्या आपका मतलब कुछ पूर्ण रूप से अलग है?


हां, आपने मुझे सही किया है। बस एक और सवाल, मैं वेक्टर के लिए संख्या को कैसे गुणा करूं? क्या वह ऑपरेशन मुझे एक नया वेक्टर लौटाएगा? उदाहरण के लिए, लाल एक वेक्टर (0, 10) है जिसकी लंबाई 8 है और काला है (-2, 5) जिसकी लंबाई 4. है। मैं अल्फा * काला या (1 - अल्फा) * लाल कैसे करूं? धन्यवाद।
गमरियो

आप बस प्रत्येक वेक्टर को अलग से गुणा करते हैं। यदि अल्फा उदाहरण 0.5 के लिए है, तो अल्फा * काला + (1 - अल्फा) * लाल = (0,5) + (-1, 2.5) = (-1, 7.5) - यदि आप इसे कुछ कागज पर आकर्षित करेंगे, तो आप यह वास्तव में उन दो वैक्टर के बीच देखेंगे।
zacharmarz

10

इस तस्वीर को लेना:

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

AB, A से B तक का लाल वेक्टर है

कहते हैं P, A से B. का 25% रास्ता है। मूल से P तक पहुंचने का मूल तरीका है

A + ( B - A ) / 4
= 3/4 A   +   B / 4

तो 3/4 ए और 1/4 बी।

यह पता लगाने का एक और तरीका है कि आप एक वेक्टर 75% ए के करीब और 25% "करीब" से बी चाहते हैं (एक वेक्टर जो ए से 100% "करीब" सिर्फ एक वेक्टर है।)

तो आप भी पी को इस प्रकार से पाएंगे:

A*t + (1-t)*B

टी = 0.75 के साथ (75% को "ए के करीब" कहने के लिए)

0.75A + 0.25B

तो एक साधारण LERP फ़ंक्शन C में वेक्टर 3 एफ वर्ग के लिए होगा:

static Vector3f lerp( const Vector3f& A, const Vector3f& B, float t ){
  return A*t + B*(1.f-t) ;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.