एक विचित्रता क्या है?


50

एक चतुर्भुज क्या है, और वे कैसे काम करते हैं? इसके अलावा, 2 डी प्लेन पर तीन बिंदुओं का उपयोग करने से आपको क्या फायदे होंगे? आखिरकार, कब चतुराई का उपयोग करना अच्छा माना जाता है?



ऐतिहासिक रूप से, मुझे लगता है कि पहले चतुर्धातुक आया था, और बाद में डॉट और क्रॉस उत्पादों को चतुर्धातुक से प्राप्त किया गया था।

2
मुझे यह एनिमेटेड लेख बहुत जानकारीपूर्ण लगा: acko.net/blog/animate-your-way-to-glory-pt2/#quaternions
AShelly

शुद्ध गणित में, मेरा मानना ​​है कि चतुष्कोण 3 जटिल संख्याएँ हैं जैसे कि i² = j² = k² = ijk
Vinz243

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

जवाबों:


43

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

  1. एक रोटेशन अक्ष (एक 3-आयामी वेक्टर के रूप में)
  2. कितनी दूर तक उस धुरी पर घूमना है

ध्यान दें कि यह जानकारी चतुर्धातुक के भीतर साइन और कोजाइन के साथ एन्कोडेड है, इसलिए सामान्य तौर पर आपको व्यक्तिगत रूप से चतुर्भुज के आंतरिक घटकों (xyzw) को स्पष्ट रूप से सेट या पढ़ने की कोशिश नहीं करनी चाहिए। इस तरह से गलती करना और गैर-सार्थक परिणाम प्राप्त करना आसान है। एक चतुर्भुज गणित पुस्तकालय आमतौर पर चतुर्भुज (जैसे उन्हें यूलर कोण या अक्ष-कोण से परिवर्तित करना) को संचालित करने के लिए कार्य प्रदान करेगा, जो यह सुनिश्चित करता है कि गणित सही है और आपके कोड को पढ़ने और समझने में आसान बनाने के साइड लाभ हैं।

घूर्णन का वर्णन करने का एक वैकल्पिक तरीका यह है कि 3 निश्चित अक्ष 'x, y, और z (aka Euler angles) को कितनी दूर घुमाया जाए जो केवल 4 के बजाय 3 संख्याओं की आवश्यकता है और आमतौर पर उपयोग करने के लिए अधिक सहज है। हालांकि, यूलर-एंगल एक समस्या के अधीन होते हैं जिसे गिमबल-लॉक कहा जाता है : जब आप एक अक्ष के चारों ओर 90 ° घूमते हैं, तो अन्य दो अक्ष बराबर हो जाते हैं। चतुर्धातुक के साथ, यह समस्या नहीं होती है।

3 डी अंतरिक्ष में रोटेशन को व्यक्त करने का एक और तरीका 4x4 परिवर्तन मैट्रिक्स के साथ है । लेकिन एक परिवर्तन मैट्रिक्स के साथ आप न केवल घुमा सकते हैं, बल्कि स्केल, अनुवाद और तिरछा भी कर सकते हैं। जब आप केवल रोटेशन चाहते हैं , तो एक मैट्रिक्स ओवरकिल होगा और एक क्वेटरनियन एक बहुत तेज और सरल समाधान होगा।

यह समस्या केवल 3 डी स्पेस में प्रासंगिक है। 2d स्थान में, आपके पास केवल एक रोटेशन अक्ष है। किसी भी रोटेशन को एकल फ्लोटिंग-पॉइंट नंबर या सिंगल कॉम्प्लेक्स नंबर के साथ व्यक्त किया जा सकता है, इसलिए आपको यह समस्या नहीं है। जबकि आप सैद्धांतिक रूप से एक 2d विमान पर एक चतुर्भुज के साथ रोटेशन को व्यक्त कर सकते हैं जहां अक्ष विमान में (या बाहर) इंगित करता है, यह आमतौर पर ओवरकिल होता है।


6
यदि आप quaternions से शुरू करते हैं और quaternions के साथ समाप्त होते हैं, तो gimbal लॉक कोई समस्या नहीं है, जब आपके पास कोई ऐसा कदम होता है जो euler कोण या बैक में परिवर्तित हो जाता है।
शाफ़्ट सनकी

2
चतुर्भुज अक्ष + कोण नहीं हैं , वे 3 जटिल संख्याएं और एक पैमाने हैं।
ट्रांजिस्टर

11
@ transistor09 क्या आप मानेंगे कि आप दोनों सही हैं? एक इकाई चतुर्धातुक के 3-घटक काल्पनिक भाग को रोटेशन के अक्ष के साथ एक इकाई वेक्टर के रूप में व्याख्या की जा सकती है, जो रोटेशन के आधे कोण के साइन द्वारा बढ़ाया जाता है। यूनिट चतुर्धातुक का वास्तविक हिस्सा रोटेशन के आधे कोण का कोज्या है। तो आप सही हैं कि यह एक कोण-अक्ष प्रारूप नहीं है, लेकिन यह सच है कि एक चतुर्भुज के घटकों को एक अक्ष के रूप में व्याख्या की जा सकती है और उस अक्ष के चारों ओर कितनी दूर तक (गैर-रैखिक) माप है।
DMGregory

2
आप यह भी उल्लेख कर सकते हैं कि रोटेशन मैट्रिक्स पर क्या लाभ quaternions है: वे गठबंधन करने के लिए तेज़ हैं। घूर्णन के संयोजन के दौरान, दो चतुर्धातुक को गुणा करने के लिए मैट्रिसेस को गुणा करने से कम संचालन की आवश्यकता होती है।
मोनिका

3
दरअसल, 2 डी अंतरिक्ष में, जटिल संख्या सटीक एनालॉग हैं। एक जटिल संख्या के साथ एक 2D बिंदु को गुणा करें, और आपने इसे घुमाया है - वास्तव में, यह बिल्कुल सामान्य पाप / कॉस रोटेशन के रूप में ही है (जो कि स्पष्ट होना चाहिए यदि आप जटिल संख्याओं को अच्छी तरह से समझते हैं)। यह थोड़ा शोषण किया जा सकता है, लेकिन अंत में, 2 डी ग्राफिक्स आज उस गहन प्रदर्शन के सभी नहीं हैं, इसलिए यह आपको बहुत सुधार नहीं देता है जब तक कि आप जटिल संख्याओं का उपयोग करके वास्तव में सहज नहीं होते (जो कि ज्यादातर लोग निश्चित रूप से नहीं हैं - जैसा कि वहाँ बाहर अविश्वसनीय रूप से खराब चतुष्कोणीय आधारित कोड: डी) द्वारा स्पष्ट किया गया है।
लुआॅन

13

यह @ फिलिप के उत्तर में जोड़ना है।

इसके अलावा, 2 डी प्लेन पर तीन बिंदुओं का उपयोग करने से आपको क्या फायदे होंगे?

आप वास्तव में quaternions की जरूरत नहीं है अगर आप रुचि रखते हैं सभी विमान पर घूम रहा है, यानी z अक्ष के बारे में। इस मामले में, आप सभी की जरूरत है, कोण कोण है, और आप इस तथ्य का फायदा उठा सकते हैं कि z अक्ष के आवागमन के बारे में क्रमिक घुमाव। तो आप अपनी इच्छानुसार किसी भी क्रम में अपने घुमाव लगा सकते हैं।

यदि आप एक ऐसे विमान पर घूम रहे हैं जो XY विमान नहीं है तो स्थिति अलग है। यह रोटेशन एक मनमाना 3 डी अक्ष के घूर्णन के बराबर है। अब, आपके पास दो विकल्प हैं:

  • अपने प्लेन को 3D में घुमाएं ताकि वह XY प्लेन और फिर yaw से मेल खाए, और वापस ट्रांसफॉर्म हो, या

  • शुरू करने के लिए 3 डी में होने के रूप में अपने रोटेशन के बारे में सोचो।

दूसरी पसंद कोड करना आसान है। जैसा कि @Pippipp ने कहा, चतुर्भुज जिम्बल लॉक से बचते हैं (यदि आप मध्यवर्ती RPY या अक्ष / कोण रूपांतरण से बचते हैं)।

आखिरकार, कब चतुराई का उपयोग करना अच्छा माना जाता है?

जब भी थ्रीडी रोटेशन होते हैं, तो क्वाटरन का उपयोग करना अच्छा होता है।

उदाहरण के लिए:

  • में क्यूटीकोटों को घुमाव के बीच अंतर करना आसान होता है, जैसा कि स्लेरप फ़ंक्शन में होता है।

  • आरओएस उनका उपयोग रोबोट पोज़ बदलने के लिए करता है।

  • में बुलेट गतिशीलता इंजन

  • एक बहुत ही परिष्कृत अनुप्रयोग के लिए, शास्त्रीय 3 डी यांत्रिकी में उनके उपयोग के लिए यहां देखें ।


" जब भी 3 डी घुमाव होते हैं, तो quaternions का उपयोग करना अच्छा होता है।" बस थोड़ा बहुत मजबूत है। लगभग हमेशा बेहतर होता है; ऐसी परिस्थितियाँ हैं जहाँ विकल्प उपयुक्त हैं। (एक अपूर्णता के एक उदाहरण के रूप में, एक चतुर्भुज की मूल जड़ बहु-मूल्यवान है)
यक्क

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