/ / मॉडलव्यू मैट्रिक्स के विपरीत कैसे प्राप्त करें? - opengl, मैट्रिक्स-उलटा

मॉडलव्यू मैट्रिक्स के विपरीत कैसे प्राप्त करें? - opengl, मैट्रिक्स-उलटा

मैंने मॉडल व्यू मैट्रिक्स के साथ इसे गुणा करके एक वेक्टर को बदल दिया।

glGetDoublev( GL_MODELVIEW_MATRIX, cam );
newX=cam[0]*tx+cam[1]*ty+cam[2]*tz+cam[3];
newY=cam[4]*tx+cam[5]*ty+cam[6]*tz+cam[7];
newZ=cam[8]*tx+cam[9]*ty+cam[10]*tz+cam[11];

रिवर्स ट्रांसफॉर्मेशन के लिए मैं मॉडल व्यू मैट्रिक्स के विपरीत कैसे प्राप्त करूं?

उत्तर:

जवाब के लिए 2 № 1

आपके पोस्ट कोड में आपके पास मॉडेलव्यू मैट्रिक्स को लागू करने का सही तरीका नहीं है। ओपनजीएल मैट्रिक्स के लिए कॉलम प्रमुख ऑर्डर का उपयोग करता है। आपकी गणना को इस तरह दिखने की आवश्यकता होगी:

newX=cam[0]*tx+cam[4]*ty+cam[8]*tz+cam[12];
newY=cam[1]*tx+cam[5]*ty+cam[9]*tz+cam[13];
newZ=cam[2]*tx+cam[6]*ty+cam[10]*tz+cam[14];

उलटा मैट्रिक्स के लिए, आप बस एक का उपयोग कर सकते हैंजेनेरिक मैट्रिक्स इनवर्जन एल्गोरिदम, जैसा कि @ डेटनवॉल्फ ने पहले से ही सुझाव दिया है। यदि आप मैट्रिक्स के बारे में कुछ धारणाएं कर सकते हैं, तो आसान और अधिक कुशल तरीके हैं। एक सामान्य मामला यह है कि आप जानते हैं कि आपका परिवर्तन मैट्रिक्स केवल घूर्णन, अनुवाद और स्केलिंग से बना था। उस स्थिति में, आप इन घटकों में मैट्रिक्स को अलग-अलग चुन सकते हैं, प्रत्येक को उलटा कर सकते हैं, और उन्हें उलटा मैट्रिक्स में फिर से इकट्ठा कर सकते हैं। चूंकि घूर्णन, अनुवाद और स्केलिंग उलटा करने के लिए सभी तुच्छ हैं, जो बहुत सरल गणित के साथ किया जा सकता है।


उत्तर № 2 के लिए 1

खैर, एह, मैट्रिक्स को निष्क्रिय करके। यह एक मानक गणितीय प्रक्रिया है जिसे आप सचमुच रैखिक बीजगणित पर प्रत्येक पाठ्यपुस्तक में पा सकते हैं। सभी मैट्रिक्स गणित पुस्तकालयों में एक मैट्रिक्स को बदलने के लिए एक फ़ंक्शन है। ओपनजीएल एक मैट्रिक्स गणित पुस्तकालय नहीं है, इसलिए इसके लिए कोई फ़ंक्शन नहीं है। जीएलएम, ईजिन या linmath.h जैसे पुस्तकालयों को देखो