2010-06-22 26 views
14

मैं एक 4by4 परिवर्तन मैट्रिक्स में 3 डी अंतरिक्ष में किसी ऑब्जेक्ट की स्थिति की दुकान अंतर्वेशन के लिए कैसे। अब मैट्रिक्स ए में संग्रहीत स्थिति से ऑब्जेक्ट को स्थानांतरित करने के लिए मैट्रिक्स बी में संग्रहीत स्थिति में, मैं उन्हें अलग करना चाहता हूं।3 डी ज्यामिति: एक मैट्रिक्स

तो मैं सिर्फ मैट्रिक्स में 16 से प्रत्येक मान के interpolating द्वारा इस करते हैं, या मैं कुछ के बारे में विशेष देखभाल करने के लिए है?

धन्यवाद!

+1

पर आधारित आप किसी ऑब्जेक्ट की "स्थिति" को रूपांतरण मैट्रिक्स में कैसे संग्रहीत करते हैं? क्या यह कैमरा है? अधिक जानकारी की आवश्यकता है। – Jacob

उत्तर

4

बस interpolating मैट्रिक्स मूल्यों संभव है कि आप नहीं देंगे आप क्या चाहते हैं जब तक आप केवल बहुत सरल परिवर्तनों (उदाहरण, अनुवाद या स्केलिंग के लिए) कर रहे हैं।

मुझे लगता है कि तरीकों कि अनुवाद, रोटेशन, स्केलिंग, आदि में एक मैट्रिक्स विघटित और फिर आप नए मैट्रिक्स है कि उन मापदंडों के आधार पर अमान्य तरीके से निर्माण कर सकते हैं।

तुम भी बस से पहले और परिवर्तन के बाद एक करते हैं, और फिर वस्तु के verts lerp सकता है। इससे आपको परिणाम भी मिल सकते हैं।

5

मैं क्या कह रहे हैं है, तो आप एक वस्तु एक्स मिल गया है, आप एक linear transformationइसे करने के लिए एककुल्हाड़ी प्राप्त करने के लिए आवेदन किया है मान लेते हैं और अब आप को बदलने के लिए यह इस तरह यह है कि चाहते हैं स्थिति यह होगा किया गया है में हो सकता है अगर आप कुछ अन्य परिवर्तन बी यानी लागू होता है। एक्स से बीएक्स से बदलना।

मान लिया जाये कि एक, invertible है सिर्फ बीए पाने के लिए बीए -1 लागू -1 (कुल्हाड़ी) = Bx

[संपादित करें] जब से तुम आगे बढ़ उल्लेख किया है, आप इसके बजाय affine transformation(अनुवाद के बाद एक रैखिक परिवर्तन) के बारे में बात कर रहे हैं। यदि ऐसा है, तो आप
से एक्स + सी से बीएक्स + डी स्थानांतरित करने के लिए देख रहे हैं।

ऐसा करने के लिए, सी घटाना (यानी मूल करने के लिए वस्तु को स्थानांतरित।), लागू बीए -1, और डी जोड़ें:
(बीए -1 ((कुल्हाड़ी + C) - सी)) + डी = Bx + डी

16

चेक बाहर केन Shoemake और टॉम गूंथा हुआ आटा के Matrix Animation and Polar Decomposition । बुनियादी विचार ट्रांसफॉर्मेशन मैट्रिस को खिंचाव, रोटेशन और अनुवाद जैसे सार्थक घटकों में तोड़ना है, और फिर उनको अलग करना है।

13

यदि आप अपने मैट्रिक्स की सभी 16 प्रविष्टियों को विभाजित करते हैं, तो परिणाम अजीब लगेगा क्योंकि इंटरप्लाटेड मैट्रिस कठोर परिवर्तन नहीं होंगे (आपको स्कूइंग और वॉल्यूम विकृतियां मिलेंगी)। अनुवाद करने के लिए उचित बात यह है कि अनुवाद और रोटेशन/स्केलिंग को अलग करना, आपको एक अनुवाद वेक्टर टी और 3x3 रोटेशन मैट्रिक्स आर देना (यह केवल आपके मूल 4x4 को कठोर परिवर्तन का प्रतिनिधित्व करने में काम करता है)। फिर 3x3 आर = क्यूडीक्यू (टिक का अर्थ है ट्रांसपोज़शन) का एक ईजेनवल्यू अपघटन लेना, आपको ऑर्थोगोनल क्यू और विकर्ण स्केलिंग डी देना। अब आप टी और डी को रैखिक रूप से इंटरपोलेट करते हैं, जबकि आप slerp क्यू के कॉलम करते हैं, और फिर आप पुनः इकट्ठा करते हैं मैट्रिक्स।

आप R0 और आर 1 के बीच अंतर्वेशन की जरूरत है:

4

मुझे आपके सवाल का अलग तरीके से व्यक्त करते हैं।

और यह करने के लिए के रूप में प्रस्ताव:

री = aR0 + (1-क) आर 1

यह उसकी/उसके जवाब में उल्लेख किया विजेता के रूप में अच्छी तरह से काम नहीं करेगा,: आप skewing और मात्रा विकृति मिल जाएगा।

गणितीय (3 डी ज्यामिति संदर्भ में), अतिरिक्त समझ में नहीं आता है: दो अनुवाद मैट्रिक्स का अर्थ क्या है?

एक स्थापित समाधान के रूप में अंतर्वेशन के लिए है:

री = (आर 1 * (उलटा (R0)))^एक * R0

जहां हम एक ऑपरेशन के रूप में आर^एक को परिभाषित है कि हमें * थेटा डिग्री द्वारा वेक्टर [केएक्स, के, केजे] के बारे में घूर्णन देता है।

तो जब एक = 0, Ri = R0; जब एक = 1, Ri = R1। यह गुणा के आधार पर इंटरपोलेशन बनाता है, जो 3 डी ज्यामिति संदर्भ में अधिक प्राकृतिक है।

अब संचालन का प्रतिनिधित्व करने के लिए कठिन हिस्सा आर^ए। आर के quaternion representation का उपयोग करके बाहर निकलता है हम ऑपरेशन आर^ए का प्रतिनिधित्व करने की अनुमति देता है। केन शोमेक के पेपर animating rotation with quaternion curves

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