सामान्य वैक्टर को बदलने के लिए उपयोग किए जाने वाले मॉडल व्यू मैट्रिक्स का ट्रांसपोज़्ड व्युत्क्रम क्यों होता है?


22

जब ऑब्जेक्ट्स पर लागू परिवर्तनों के साथ 3 डी दृश्यों का प्रतिपादन करते हैं, तो मानदंडों को मॉडल व्यू मैट्रिक्स के ट्रांसपोज़्ड व्युत्क्रम के साथ बदलना होगा। तो, एक सामान्य के साथ , modelViewMatrix एम , तब्दील सामान्य n ' हैnMn

n=(M1)Tn

वस्तुओं को रूपांतरित करते समय, यह स्पष्ट है कि मानदंडों को तदनुसार परिवर्तित करने की आवश्यकता है। लेकिन क्यों, गणितीय रूप से, यह इसी परिवर्तन मैट्रिक्स है?


यदि मॉडल मैट्रिक्स अनुवाद, रोटेशन और स्केल से बना है, तो आपको सामान्य मैट्रिक्स की गणना करने के लिए उलटा ट्रांस्पोज़ करने की आवश्यकता नहीं है। बस सामान्य को स्क्वेर्ड स्केल से विभाजित करें और मॉडल मैट्रिक्स द्वारा गुणा करें और हम कर रहे हैं। आप लंबवत कुल्हाड़ियों के साथ किसी भी मैट्रिक्स के लिए इसका विस्तार कर सकते हैं, बस आपके द्वारा उपयोग किए जा रहे मैट्रिक्स के प्रत्येक अक्ष के लिए चुकता पैमाने की गणना करें। मैंने अपने ब्लॉग में विवरण लिखा है: lxjk.github.io/2017/10/01/Stop-Using-Normal-Matrix.html
एरिक

जवाबों:


22

यहाँ एक सरल प्रमाण है कि उलटा संक्रमण आवश्यक है। मान लीजिए कि हमें एक विमान, एक विमान समीकरण द्वारा परिभाषित किया गया है , जहां n सामान्य है। अब मैं कुछ मैट्रिक्स एम द्वारा इस विमान को बदलना चाहता हूं । दूसरे शब्दों में, मैं एक नया विमान समीकरण लगाना चाहते हैं n 'एम एक्स + ' = 0 कि ठीक उसी के लिए संतुष्ट हो जाता है एक्स मूल्यों है कि पिछले विमान समीकरण को संतुष्ट।nx+d=0nMnMx+d=0x

ऐसा करने के लिए, यह दो समतल समीकरणों को बराबर सेट करने के लिए पर्याप्त है। (यह विमान समीकरणों मनमाने ढंग से rescale करने की क्षमता देता है, लेकिन यह तर्क करने के लिए महत्वपूर्ण नहीं है।) फिर हम सेट कर सकते हैं और इसे बाहर घटाना। हमारे पास जो बचा है वह है:d=d

nMx=nx

मैं इसे मैट्रिक्स नोटेशन में व्यक्त डॉट उत्पादों (1-कॉलम मैट्रिसेस के रूप में वैक्टर की सोच) के साथ फिर से लिखूंगा:

nTMx=nTx

अब सभी लिए इसे संतुष्ट करने के लिए , हमारे पास होना चाहिए:x

nTM=nT

अब संदर्भ में n Now के लिए हल करना ,nn

nT=nTM1n=(nTM1)Tn=(M1)Tn

Presto! यदि अंक एक मैट्रिक्स एम द्वारा बदल दिए जाते हैं , तो विमान के समीकरण को बनाए रखने के लिए विमान के मानदंडों को एम के व्युत्क्रम परिवर्तन द्वारा बदलना होगा ।xMM

यह मूल रूप से डॉट उत्पाद की एक संपत्ति है। एक परिवर्तन लागू होने पर डॉट उत्पाद अपरिवर्तित रहने के लिए, दो वैक्टर बिंदीदार होते हुए भी अलग-अलग लेकिन अलग-अलग तरीकों से बदलना पड़ता है।

गणितीय रूप से, यह यह कहकर वर्णित किया जा सकता है कि सामान्य वेक्टर एक साधारण वेक्टर नहीं है, लेकिन एक कोवेक्टर (उर्फ सहसंयोजक वेक्टर, दोहरी वेक्टर, या रैखिक रूप) नामक एक चीज है । एक कोवेक्टर को मूल रूप से "एक ऐसी चीज के रूप में परिभाषित किया जाता है जिसे एक अदिश स्केलर के उत्पादन के लिए एक वेक्टर के साथ डॉट किया जा सकता है"। इसे प्राप्त करने के लिए, साधारण वैक्टर पर जो भी मैट्रिक्स चल रहा है, उसके व्युत्क्रम ट्रांसपोज़ेशन का उपयोग करके इसे बदलना है। यह किसी भी संख्या में आयाम रखता है।

ध्यान दें कि विशेष रूप से 3 डी में, एक ट्रैक्टर एक कोवेक्टर के समान है। वे नहीं कर रहे हैं काफी एक ही है क्योंकि वे विभिन्न इकाइयों है: एक covector उलटा लंबाई की इकाइयों है, जबकि एक bivector लंबाई की इकाइयों, (क्षेत्र) चुकता तो वे स्केलिंग के तहत अलग ढंग से व्यवहार किया है। हालांकि, वे अपने अभिविन्यास के संबंध में उसी तरह से रूपांतरण करते हैं, जो मानदंडों के लिए मायने रखता है। हम आम तौर पर एक सामान्य की भयावहता के बारे में परवाह नहीं करते हैं (हम वैसे भी उन्हें यूनिट की लंबाई के लिए सामान्य करते हैं), इसलिए हमें आमतौर पर एक बिक्टर और कोवेक्टर के बीच के अंतर के बारे में चिंता करने की आवश्यकता नहीं है।


2
जबरदस्त व्याख्या। हालाँकि 2 बिंदुओं पर थोड़ा तेज़, थोड़ा और अधिक विवरण पसंद किया जाएगा: 1. आप डॉट उत्पादों से मैट्रिक्स उत्पादों तक कैसे कूदते हैं? 2. अंतिम उद्धृत खंड की पंक्ति 2 और 3 के बीच, क्या होता है (n को बाएं से दाएं से जादुई रूप से मेरे पास ले जाया जाता है)
v.oddou

4
1. (ए ^ टी) बी डॉट (ए, बी) के समान है यदि ए और बी समान आयाम के कॉलम मैट्रिसेस हैं। अपने लिए गणित का प्रयास करें! 2. (एबी) ^ टी = (बी ^ टी) (ए ^ टी), और (ए ^ टी) ^ टी = ए अधिक मैट्रिक्स पहचान के लिए, मैट्रिक्स कुकबुक की
मोकोशा

3
@ v.oddou हां, मोकोशा सही है। डॉट उत्पाद को × 1 मैट्रिक्स (कॉलम वेक्टर) के साथ 1 × n मैट्रिक्स (पंक्ति वेक्टर) को गुणा करने के रूप में व्यक्त किया जा सकता है; परिणाम एक 1 × 1 मैट्रिक्स है जिसका एकल घटक डॉट उत्पाद है। एक कॉलम वेक्टर का संक्रमण एक पंक्ति वेक्टर है, इसलिए हम एक · b को ^ T b के रूप में लिख सकते हैं। दूसरे प्रश्न के लिए, मैट्रिसेस के एक उत्पाद को ट्रांसप्लांट करना व्यक्तिगत कारकों को ट्रांसप्लांट करने और उनके आदेश को उलटने के बराबर है।
नाथन रीड

एकदम सही, अपने सभी अब मुद्दे के बिना स्पष्ट। दोनों को धन्यवाद।
v.oddou

@NathanReed (यह मुझे शुरुआती पॉवरवीआर दिनों में वापस ले जाता है जहां हमने विमानों के साथ अधिकांश चीजें बनाई हैं)। यह भी ध्यान देने योग्य हो सकता है कि, अनुकूलन उद्देश्यों के लिए, यदि आपके पास एक मैट्रिक्स श्री है जिसमें केवल घुमाव हैं, (यानी ऑर्थोगोनल है) तो उलटा ( Mr ) = ट्रांसपोज़ ( Mr ), और इसलिए Trans (व्युत्क्रमण ( Mr ) = Mr_। आप ट्रांसलेशन भाग के साथ शॉर्टकट भी ले सकते हैं और यदि आप जानते हैं कि स्केलिंग एक समान है। SGL PowerVR ग्राफिक्स लाइब्रेरी में FWIW, हम बूलियन को ट्रैक करने के लिए इस्तेमाल करते थे कि क्या ट्रांसफॉर्मेशन मैट्रिक्स में सामान्य परिवर्तनों के साथ लागत बचाने के लिए ये गुण थे
साइमन

6

यह केवल इसलिए है क्योंकि मानदंड वास्तव में वैक्टर नहीं हैं! वे क्रॉस उत्पादों द्वारा बनाए जाते हैं, जिसके परिणामस्वरूप बायवेक्टर होते हैं , न कि वैक्टर। बीजगणित इन निर्देशांक के लिए बहुत अलग काम करता है, और ज्यामितीय परिवर्तन सिर्फ एक ऑपरेशन है जो अलग तरह से व्यवहार करता है।

इस बारे में अधिक जानने के लिए एक महान संसाधन एरिक लेंगियल की ग्रासमैन बीजगणित पर प्रस्तुति है


सामान्य भी तथाकथित pseudovectors हैं। एक सामान्यीकरण और अंगूठे के नियम के रूप में, क्रॉस उत्पाद (जैसे विमानों) से उत्पन्न सब कुछ एक समान फैशन में बदल जाएगा।
मथायस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.