मैंने सेब से कुछ दस्तावेज़ों में देखा है कि एक कैलियर की ट्रांसफॉर्म संपत्ति के पीछे मैट्रिक्स में एम 14, एम 21, एम 22 और इसी तरह के क्षेत्र हैं। मुझे यह भी याद है कि मैंने एक टेबल देखा जो लगभग एक या दो महीने पहले उन क्षेत्रों को समझाता है। मुझे इसे खोजने का प्रयास करने में कठिन समय था। कोई भी स्रोत जानता है?मुझे सभी ट्रांसफॉर्म मैट्रिक्स फ़ील्ड का स्पष्टीकरण कहां मिल सकता है?
उत्तर
कि struct इस तरह दिखता है:
struct CATransform3D
{
CGFloat m11, m12, m13, m14;
CGFloat m21, m22, m23, m24;
CGFloat m31, m32, m33, m34;
CGFloat m41, m42, m43, m44;
};
typedef struct CATransform3D CATransform3D;
यह केवल एक 4x4 4-वैक्टर को बदलने के लिए इस्तेमाल किया मैट्रिक्स को बदलने है। इसका उपयोग किसी भी रैखिक परिवर्तनों का प्रतिनिधित्व करने के लिए किया जा सकता है। इस प्रकार के मैट्रिक्स पर this विकिपीडिया लेख देखें। उन तत्वों में से अधिकांश को वास्तव में स्वतंत्र रूप से व्याख्या नहीं किया जा सकता है, लेकिन कुछ कर सकते हैं। उदाहरण के लिए m41, m42, और m43 3-space में अनुवाद का प्रतिनिधित्व करते हैं। उदाहरण के लिए आप इस मैट्रिक्स द्वारा एक बिंदु गुणा करता है, तो:
[ 1 0 0 0 ]
[ 0 1 0 0 ]
[ 0 0 1 0 ]
[ 1 2 3 1 ]
तो यह उस समय 1 से + X की ओर, अनुवाद करेगा + Y की ओर 2 इकाइयों, और + Z की ओर 3।
[ 1 0 0 0 ]
[ x y z 1 ] x [ 0 1 0 0 ] = [ x+1 y+2 z+3 1 ]
[ 0 0 1 0 ]
[ 1 2 3 1 ]
नोट उस बिंदु 4 तत्व होने 1. भी ध्यान रखें कि इस सदिश वास्तव में एक मैट्रिक्स ही है और इस मैट्रिक्स के प्रारूप है के साथ एक 4 वेक्टर के रूप में प्रतिनिधित्व किया जाना चाहिए विकिपीडिया आलेख में वर्णित एक से अलग है परिवर्तन मैट्रिस पर। ऐसा इसलिए होता है क्योंकि एक बिंदु आमतौर पर एक कॉलम, 4 पंक्ति मैट्रिक्स द्वारा दर्शाया जाता है, हालांकि, ऐप्पल उन्हें 4 कॉलम, सिंगल पंक्ति मैट्रिस के रूप में दर्शाता है। इसका अर्थ यह है कि विकिपीडिया आलेख में आपके द्वारा देखे जाने वाले किसी भी ट्रांसफॉर्म मैट्रिक्स को आईफोन पर सही तरीके से काम करने के लिए इसे इस्तेमाल करने से पहले ट्रांसफर किया जाना चाहिए।
एक अन्य उदाहरण एक स्केलिंग को बदलने है:
[ 2 0 0 0 ]
[ 0 2 0 0 ]
[ 0 0 2 0 ]
[ 0 0 0 1 ]
यह होगा डबल आपकी बिंदु के निर्देशांक, तो (1, 2, 3) हो जाएगा के सभी (2, 4, 6)। अन्य परिवर्तन, जैसे घूर्णन और परिप्रेक्ष्य अनुमान दृष्टि पर पहचानना अधिक कठिन होता है।
ऐप्पल से transforms पर और जानकारी यहां दी गई है। इन matrices उत्पन्न करने के लिए ऐप्पल द्वारा उपयोगिता परिवर्तन का एक गुच्छा प्रदान किया जाता है, this link देखें। वे वास्तव में CATransform3DMakeRotation के पीछे गणित पर चर्चा नहीं करते हैं, लेकिन this link करता है।
यह एक महान स्पष्टीकरण है, लेकिन मुझे लगता है कि आपको अपनी अक्षों को स्थानांतरित कर दिया गया है। एक्स, वाई और जेड अनुवाद मानों का प्रतिनिधित्व m41, m42 और m43 द्वारा किया जाता है, एम 14, एम 24 और एम 34 नहीं। –
@ निकलॉकवुड अच्छी पकड़, मैंने तदनुसार स्पष्टीकरण अपडेट किया है। – Gabe