एक उचित विश्व मैट्रिक्स के लिए स्केल, रोटेशन और अनुवाद मैट्रिसेस को गुणा करने का सही क्रम क्या है?


62

प्लेटफ़ॉर्म के रूप में डायरेक्टएक्स को मान लें, अगर यह महत्वपूर्ण है। (बहुत यकीन है कि यह नहीं है)

यह मानते हुए कि मेरे पास एक उचित पैमाना, रोटेशन और अनुवाद मैट्रिक्स है, मैं किस क्रम में उन्हें उचित विश्व मैट्रिक्स में परिणाम के लिए गुणा करूं और क्यों?

"उचित" से मेरा मतलब है कि "मैं उन्हें डायरेक्टएक्स में सीधे फेंक सकता हूं और सबसे अधिक इस्तेमाल किया जाने वाला 3 डी फ्रेम प्राप्त कर सकता हूं।"


6
यहाँ "रोटेट तो ट्रांसलेट" (कताई) बनाम "ट्रांसलेट तो रोटेट" (परिक्रमा) की
व्याख्या है

लिंक अच्छा है, लेकिन एक छोटी सी त्रुटि के साथ। इसका रोलिंग प्रभाव होना चाहिए और कताई नहीं होना चाहिए, गोलाई का उपयोग अनुवाद करने से अपनी स्थिति (अक्ष पर शेष) से ​​दूर चला जाता है।
अपराह्न

जवाबों:


77

आमतौर पर यह स्केल है, फिर रोटेशन और अंतिम रूप से अनुवाद। मैट्रिक्स डिनोटेशन के साथ (यानी अनुवाद मैट्रिक्स के लिए टी, रोटेशन मैट्रिक्स के लिए आर और स्केलिंग मैट्रिक्स के लिए एस) जो होगा:

टी * आर * एस

हालाँकि, यदि आप किसी निश्चित बिंदु के चारों ओर किसी ऑब्जेक्ट को घुमाना चाहते हैं, तो वह स्केल, पॉइंट ट्रांसलेशन, रोटेशन और लास्ट ऑब्जेक्ट ट्रांसलेशन है।

क्यों: पहले आप ऑब्जेक्ट को स्केल करना चाहते हैं ताकि अनुवाद ठीक से काम करें। फिर आप कुल्हाड़ियों को घुमाते हैं ताकि अनुवाद समायोजित कुल्हाड़ियों पर हो। अंत में आप इस स्थिति के लिए वस्तु का अनुवाद करते हैं।

OpenGL में आप एक कॉल में एक पूर्ण कैमरा परिवर्तन प्राप्त करने के लिए gluLookAt का उपयोग कर सकते हैं। डायरेक्टएक्स के लिए एक समान कॉल होने की संभावना है।


11
और याद रखें, यदि आप केंद्र के चारों ओर बदलना चाहते हैं, तो आपको पहले केंद्र को ऑफसेट करने के लिए अनुवाद करना होगा मूल पर, फिर जैसा कि user392858 ने कहा है, फिर उसी राशि से मूल से दूर फिर से अनुवाद करें। आम तौर पर हालांकि, यह केवल 2 डी में आवश्यक है, जहां आपके पास कुछ स्प्राइट है जो मूल में शीर्ष पर छोड़ दिया गया है।
इंजीनियर

महान। :) अब मुझे केवल यह पता लगाना है कि मेरा मॉडल अब क्षैतिज दृश्य में क्यों बदल रहा है और ऊर्ध्वाधर दृश्य में उल्टे दिशात्मक प्रकाश पर डॉट उत्पाद की आवश्यकता है। यह ऐसा करने के लिए इस्तेमाल नहीं किया गया था, तब मैंने कुछ गणित तय किया ...
नरफ़ द माउस

बस इसे नोट किया जाए, आई हेट मिस-नेगेटिव संकेत। वैसे भी, धन्यवाद, और आप इस प्रश्न पर विचार कर सकते हैं। :)
17

कोई समस्या नहीं, हमेशा मदद करने के लिए खुश।
राफेल आर।

2
@ मैथियास जहां तक ​​मुझे पता है, यह निर्भर करता है कि आप उस वेक्टर से कैसे गुणा करते हैं जिसे आप बदलना चाहते हैं। यदि आप M * v को गुणा करते हैं तो हां, उत्तर ने उलटा क्रम दिया है।
bialpio

-4

अनुवाद रोटेशन और स्केलिंग ऑपरेशन करने के लिए अनुक्रम है


-5

मेरा मानना ​​है कि यह ट्रांसलेशन रोटेशन और डायलॉग है


2
यह मौजूदा उत्तरों की तुलना में कोई अधिक स्पष्टीकरण प्रदान नहीं करता है।
DMGregory
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.