2009-05-22 9 views
5

मेरे 3 डी एप्लिकेशन में मैं एक वेक्टर में ऑब्जेक्ट की स्थिति संग्रहीत करता हूं और यह एक quaternion में मूल के चारों ओर घूर्णन है। मुझे ऑब्जेक्टिव मूल के साथ एक वेक्टर के चारों ओर ऑब्जेक्ट घुमाने की आवश्यकता है। मैंने स्थिति को परिवर्तित करने की कोशिश की - वेक्टरऑरिगिन और रोटेशन मैट्रिक्स में घुमाए, मैट्रिक्स को घूर्णन कर रहा था और फिर वेक्टर के रूप में स्थिति और रोटेशन निकालने और परिणामस्वरूप मैट्रिक्स से एक quaternion निकालने की कोशिश की। स्थिति ठीक हो जाती है, लेकिन घूर्णन स्थिर रहता है (ऑब्जेक्ट दिए गए वेक्टर के चारों ओर घूमता है लेकिन यह हमेशा एक ही दिशा में सामना करता है)।quaternions का उपयोग कर एक बिंदु के आसपास ऑब्जेक्ट घुमाने के लिए कैसे?

क्या मेरी विधि गलत है या क्या मेरे पास एक बग है?

उत्तर

7

मुझे यकीन नहीं है कि आप घूर्णन को बदलने की अपेक्षा क्यों करते हैं। आपके पास प्रोग्रामेटिक "जीव" मूल बिंदु, गंतव्य बिंदु और घूर्णन का प्रतिनिधित्व करते हैं। अन्य दो "प्राणियों" के आधार पर गंतव्य बिंदु की गणना करना उन्हें प्रभावित नहीं करना चाहिए।

सामान्य दृष्टिकोण के बारे में क्या? यदि आपको बिंदु (ए, बी, सी) के आस-पास स्थिति (x, y, z) को घुमाने की आवश्यकता है, तो पहले स्थिति का अनुवाद करें ताकि घूर्णन उत्पत्ति के चारों ओर हो: उपयोग (xa, yb, zc) स्थिति के रूप में , नई अनुवादित स्थिति (x'-a, y'-b, z'-c) प्राप्त करने के लिए सामान्य रूप से मूल के चारों ओर घुमाएं, और वापस अनुवाद करें और अपनी नई स्थिति (x ', y', z ') प्राप्त करें।

+0

यही वह है जो मैं कर रहा था। वस्तु एक मनमानी उत्पत्ति के साथ एक वेक्टर के चारों ओर घूमती है, लेकिन यह हमेशा एक ही दिशा में सामना कर रही है। मुझे वेक्टर की उत्पत्ति का सामना करना चाहिए। मैंने अपने एल्गोरिदम को स्पष्ट करने के लिए प्रश्न संपादित किया। – user17544

+0

यदि मैं सही ढंग से समझता हूं, तो आपको एक वर्ण के समानांतर वेक्टर के चारों ओर एक और रोटेशन जोड़ने की आवश्यकता है, लेकिन यह ऑब्जेक्ट के * केंद्र * के माध्यम से जाता है। –

+0

आप सही हैं। मैंने इसे अपने केंद्र के चारों ओर ऑब्जेक्ट घुमाने और फिर दिए गए वेक्टर के आस-पास ऑब्जेक्ट की स्थिति को घूर्णन करके हल किया। – user17544

1

मैं quaternions से परिचित नहीं हूँ, और शायद यह पूरी तरह से offtopic है, लेकिन आप एक बिंदु के आसपास एक 3 डी वस्तु घुमा नहीं सकते हैं, घूर्णन की धुरी एक रेखा होना चाहिए।

+0

पूरी तरह से विषय और एक अच्छी बात से नहीं ... –

+0

उचित बिंदु। मेरा मतलब एक मनमाना मूल के साथ एक वेक्टर के चारों ओर घूर्णन करना था। मैंने सवाल संपादित किया। – user17544

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