एक चतुर्भुज क्या है, और वे कैसे काम करते हैं? इसके अलावा, 2 डी प्लेन पर तीन बिंदुओं का उपयोग करने से आपको क्या फायदे होंगे? आखिरकार, कब चतुराई का उपयोग करना अच्छा माना जाता है?
एक चतुर्भुज क्या है, और वे कैसे काम करते हैं? इसके अलावा, 2 डी प्लेन पर तीन बिंदुओं का उपयोग करने से आपको क्या फायदे होंगे? आखिरकार, कब चतुराई का उपयोग करना अच्छा माना जाता है?
जवाबों:
गणितीय रूप से, एक चतुर्भुज एक जटिल संख्या है जिसमें 4 आयाम हैं। लेकिन खेल के विकास में, क्वाटरनियनों को अक्सर एन्कोडिंग द्वारा 3 डी अंतरिक्ष में एक रोटेशन का वर्णन करने के लिए उपयोग किया जाता है:
ध्यान दें कि यह जानकारी चतुर्धातुक के भीतर साइन और कोजाइन के साथ एन्कोडेड है, इसलिए सामान्य तौर पर आपको व्यक्तिगत रूप से चतुर्भुज के आंतरिक घटकों (xyzw) को स्पष्ट रूप से सेट या पढ़ने की कोशिश नहीं करनी चाहिए। इस तरह से गलती करना और गैर-सार्थक परिणाम प्राप्त करना आसान है। एक चतुर्भुज गणित पुस्तकालय आमतौर पर चतुर्भुज (जैसे उन्हें यूलर कोण या अक्ष-कोण से परिवर्तित करना) को संचालित करने के लिए कार्य प्रदान करेगा, जो यह सुनिश्चित करता है कि गणित सही है और आपके कोड को पढ़ने और समझने में आसान बनाने के साइड लाभ हैं।
घूर्णन का वर्णन करने का एक वैकल्पिक तरीका यह है कि 3 निश्चित अक्ष 'x, y, और z (aka Euler angles) को कितनी दूर घुमाया जाए जो केवल 4 के बजाय 3 संख्याओं की आवश्यकता है और आमतौर पर उपयोग करने के लिए अधिक सहज है। हालांकि, यूलर-एंगल एक समस्या के अधीन होते हैं जिसे गिमबल-लॉक कहा जाता है : जब आप एक अक्ष के चारों ओर 90 ° घूमते हैं, तो अन्य दो अक्ष बराबर हो जाते हैं। चतुर्धातुक के साथ, यह समस्या नहीं होती है।
3 डी अंतरिक्ष में रोटेशन को व्यक्त करने का एक और तरीका 4x4 परिवर्तन मैट्रिक्स के साथ है । लेकिन एक परिवर्तन मैट्रिक्स के साथ आप न केवल घुमा सकते हैं, बल्कि स्केल, अनुवाद और तिरछा भी कर सकते हैं। जब आप केवल रोटेशन चाहते हैं , तो एक मैट्रिक्स ओवरकिल होगा और एक क्वेटरनियन एक बहुत तेज और सरल समाधान होगा।
यह समस्या केवल 3 डी स्पेस में प्रासंगिक है। 2d स्थान में, आपके पास केवल एक रोटेशन अक्ष है। किसी भी रोटेशन को एकल फ्लोटिंग-पॉइंट नंबर या सिंगल कॉम्प्लेक्स नंबर के साथ व्यक्त किया जा सकता है, इसलिए आपको यह समस्या नहीं है। जबकि आप सैद्धांतिक रूप से एक 2d विमान पर एक चतुर्भुज के साथ रोटेशन को व्यक्त कर सकते हैं जहां अक्ष विमान में (या बाहर) इंगित करता है, यह आमतौर पर ओवरकिल होता है।
यह @ फिलिप के उत्तर में जोड़ना है।
इसके अलावा, 2 डी प्लेन पर तीन बिंदुओं का उपयोग करने से आपको क्या फायदे होंगे?
आप वास्तव में quaternions की जरूरत नहीं है अगर आप रुचि रखते हैं सभी विमान पर घूम रहा है, यानी z अक्ष के बारे में। इस मामले में, आप सभी की जरूरत है, कोण कोण है, और आप इस तथ्य का फायदा उठा सकते हैं कि z अक्ष के आवागमन के बारे में क्रमिक घुमाव। तो आप अपनी इच्छानुसार किसी भी क्रम में अपने घुमाव लगा सकते हैं।
यदि आप एक ऐसे विमान पर घूम रहे हैं जो XY विमान नहीं है तो स्थिति अलग है। यह रोटेशन एक मनमाना 3 डी अक्ष के घूर्णन के बराबर है। अब, आपके पास दो विकल्प हैं:
अपने प्लेन को 3D में घुमाएं ताकि वह XY प्लेन और फिर yaw से मेल खाए, और वापस ट्रांसफॉर्म हो, या
शुरू करने के लिए 3 डी में होने के रूप में अपने रोटेशन के बारे में सोचो।
दूसरी पसंद कोड करना आसान है। जैसा कि @Pippipp ने कहा, चतुर्भुज जिम्बल लॉक से बचते हैं (यदि आप मध्यवर्ती RPY या अक्ष / कोण रूपांतरण से बचते हैं)।
आखिरकार, कब चतुराई का उपयोग करना अच्छा माना जाता है?
जब भी थ्रीडी रोटेशन होते हैं, तो क्वाटरन का उपयोग करना अच्छा होता है।
उदाहरण के लिए: