2011-12-22 20 views
7

मेरे पास एक 3 डी वर्ण ऊपरी भुजा के घूर्णन का प्रतिनिधित्व करने वाला क्वाटरनियन है। मेरे पास एक रेखा भी है जो कि उन पात्रों की भुजा की नई स्थिति का प्रतिनिधित्व करती है। उन पंक्तियों की स्थिति दो 3 डी बिंदुओं द्वारा दी जाती है।दिशा वेक्टर?

यह मेरे पास एकमात्र डेटा है, और मैं एक 3 डी पैकेज (डिजिटल रूने) में एक विधि को कॉल करने का प्रयास कर रहा हूं जो 2 दिशा वैक्टर लेता है और हाथ को स्थानांतरित करने के लिए आवश्यक रोटेशन का प्रतिनिधित्व करने वाले क्वाटरनियन को वापस देता है।

समस्या यह है कि मुझे कुछ अजीब व्यवहार दिखाई देता है, जैसे अक्षों को मिश्रित किया जाता है और यह आमतौर पर व्यवहार नहीं कर रहा है। इसके अलावा, क्वाटरनियन ऑब्जेक्ट (जो 3 डी पैकेज से है) 3 डी लड़कों की बांह का प्रतिनिधित्व करता है डब्ल्यू, एक्स, वाई और जेड डू एक्स, वाई और जेड दिशा वेक्टर का प्रतिनिधित्व करते हैं? क्योंकि मुझे वही काम ठीक से कॉल करने की ज़रूरत है। मैं अपनी लाइन के अंतराल से मेरी गणना दिशा वेक्टर के साथ इसका उपयोग कर रहा हूं, लेकिन जैसा कि मैंने कहा कि यह मजाकिया लग रहा है।

यदि एक्स, वाई और जेड एक दिशा वेक्टर नहीं हैं, तो Quaternion से दो अंत बिंदुओं में कैसे परिवर्तित करें ताकि मैं दिशा वेक्टर की गणना कर सकूं?

+2

यह सहायक हो सकता है http://stackoverflow.com/q/1171849/10468 और यह http://stackoverflow.com/q/2646121/10468 – DarenW

उत्तर

7

आपके संदर्भ में (और अधिकांश कंप्यूटर ग्राफिक्स संदर्भों में), quaternion is used to represent a rotation। आप सीधे एक्स, वाई और जेड का उपयोग नहीं करना चाहते हैं; इसके बजाए (ऊपर दिए गए ट्यूटोरियल में वर्णित अनुसार), आप इसे rotation matrix उत्पन्न करने के लिए उपयोग करते हैं। फिर आपको रोटेशन मैट्रिक्स का उपयोग किसी अन्य 3D transformation matrix की तरह करना चाहिए; यह उत्पत्ति के चारों ओर बिंदु घुमाएगा जैसा कि क्वाटरनियन द्वारा वर्णित किया गया था।

quaternion का एक्स, वाई, और जेड रोटेशन की धुरी का प्रतिनिधित्व करता है, लेकिन quaternion घूर्णन की परिमाण को भी विशेष रूप से सीधा तरीके से एन्कोड करता है। यदि आपके पैकेज में ऐसे फ़ंक्शन शामिल हैं जो quaternion लौटाते हैं, तो इसमें ऐसे फ़ंक्शंस भी शामिल हो सकते हैं जो इसके quaternions को रोटेशन मैट्रिस में बदल दें; यदि संभव हो तो आपको पैक किए गए फ़ंक्शन का उपयोग करना चाहिए (क्योंकि इसे उसी पद्धति का उपयोग करना चाहिए जो उन्हें उत्पन्न करने वाली विधि के रूप में)।

quaternions और परिवर्तन matrices पर पढ़ने के बाद, आपको यह सुनिश्चित करने के लिए कि आप सही प्रकार के तर्क प्रदान कर रहे हैं, और यह सुनिश्चित करने के लिए कि आप परिणामों का उपयोग कर रहे हैं, फ़ंक्शन के दस्तावेज़ को सावधानी से पढ़ना चाहिए सही तरीका (यह गणित से परिचित होने पर भी इसे पेंच करने में काफी आसान है ...)।

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

  • कोई संबंधित समस्या नहीं^_^