2009-02-19 18 views
10

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

उत्तर

24

वेक्टर गणित काम करता है जैसे आपको लगता है:

v3 = (v1 + v2)/2 

// so: 
v3.x = (v1.x + v2.x)/2; 
// same for Y and Z 
3

उन्हें जोड़ने और दो से विभाजित काम करता है

5

आसान सोचा प्रयोग: x और y दिशा में इकाई वैक्टर के लिए यह मत करो। सहजता से आप चित्रित कर सकते हैं कि "औसत" 45 डिग्री कोण पर और दाईं ओर एक यूनिट वेक्टर होगा। यह वही होता है जो होता है। विचार प्रयोग से पता चलता है कि एक इकाई वेक्टर प्राप्त करने के लिए आपको इसकी परिमाण से औसत सामान्य करने की आवश्यकता है। मैं सलाह दूंगा कि आप ऐसा करते हैं।

5

आप केवल दिशा में रुचि रखते हैं, आप उन्हें जोड़ सकते हैं और परिणाम वेक्टर को सामान्य करना चाहिए,

(v1 + v2)/abs(v1 + v2) 
+8

शून्य से डिवीजन! –

+0

चलो v1! = V2 ... – RickyA

+0

यदि केवल दिशा में रुचि रखते हैं, तो v1 और v2 पहले सामान्यीकृत होना चाहिए। – pikaille

7

आमतौर पर यह गति कारणों के लिए विभाजन से गुणा करने के लिए जब प्रोग्रामिंग तो मैं इस सिफारिश करेंगे ग्राफिक्स कर बेहतर है :

v3 = (v1 + v2) * 0.5f;

+8

इस तरह की चीजें कंपाइलर द्वारा अनुकूलित नहीं की जाएंगी, इसलिए '/ 2.0'' * 0.5' जैसा ही है? –

+0

हां इसे कम से कम सामान्य सी संकलक के साथ अपने अनुभव से चाहिए। यह एक और कहानी है यदि आपके पास एक वेरिएबल है जो स्थिर है तो चलो एक लूप कहें जिसमें आप इसके द्वारा कुछ विभाजित करते हैं। फिर यदि आप एक नए चर (उलटा) की गणना करते हैं और लूप में गुणा करते हैं तो मैं अंतर को माप सकता हूं। अनुकूलित कंपिलरों हालांकि काफी तेजी से सुधार कर रहे हैं। – oli

3

क्षमा करें, लेकिन यह गलत है। वेक्टर दुनिया में औसत घटकों के अर्थ में "मतलब" का अर्थ कुछ भी नहीं है। कल्पना करें (-1 0) और (1 0) -> औसत = 0 0 ;-)

1

यह उतना आसान नहीं है जितना यह दिख सकता है: आपको इकाई क्षेत्र पर आधा चाप खोजने के लिए स्लर्प-इंटरपोलेशन का उपयोग करना होगा: http://en.wikipedia.org/wiki/Slerp यहां गहराई में: http://www.essentialmath.com/index.htm

+0

तकनीकी रूप से हां, लेकिन यूनिट वैक्टर के लिए, बराबर वजन वाले स्लरप एक साधारण माध्य + सामान्यीकरण को कम कर देता है। –

1

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

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