एंड्रॉयड मैट्रिक्स skia और उसके पंक्ति-प्रमुख का उपयोग करता है सूचकांक अर्थ के रूप में
0 1 2
3 4 5
6 7 8
मैं विपरीत ओपन इसलिए
तरह सूचकांकों का उपयोग करता है इस प्रकार हैं
0 3 6
1 4 7
2 5 8
"अर्थ" मैट्रिक्स स्थिति के संबंध में समान हैं।
a b tx
c d ty
0 0 1
ए, बी, सी, डी एनकोड पैमाने & एक ही समय में रोटेशन। टीएक्स/टाई एनकोड अनुवाद। यदि आप m.getValues (vals) करते हैं; फिर vals [2] == टीएक्स, vals [5] == ty, और बाकी सीधे आगे है। सबसे अच्छा तरीका है अनुवाद को निकालने के लिए एक वेक्टर
float[] point = {0, 0};
तो यह नक्शा और देखो, जहां यह समाप्त होता है और यह कि आपके अनुवाद है (जो वास्तव में है (TX, Ty) बनाना है।दुर्लभ परिस्थितियों में अपने पैमाने नक्शा नहीं
पाने के लिए एक दूसरे बिंदु
float[] point2 = {1, 0};
अब अंतर rel = (बिंदु - अंक 2) लेने के लिए और है कि वेक्टर की लंबाई हो और है कि अपने पैमाने है। रोटेशन निकालने के लिए, रिलायंस सामान्य करें और यह मानक कोण प्राप्त करना आसान है।
स्रोत
2013-03-22 15:01:09
धन्यवाद लेकिन इस संबंध में परिप्रेक्ष्य का क्या अर्थ है? – Matt
अकेले, मुझे नहीं पता .. मुझे यकीन है कि ये मान आरक्षित हैं, और कारण वे मौजूद हैं शायद मैट्रिक्स को पूरा करना है। यहां आपको इस विषय पर अधिक जानकारी मिलेगी: http://mobiledevelop.blogspot.com/2009/02/android-canvas-translation-discussion.html –
एंड्रॉइड स्की का उपयोग करता है और मैंने एंड्रॉइड मैट्रिक्स क्लास के लिए स्रोत कोड की जांच की है सी ++ कोर, यह स्कामैट्रिक्स के साथ बस मैट्रिक्स glues। मैट्रिक्स 3x3 पंक्ति प्रमुख है। इस MSCALE_X/Y की वजह से वास्तव में स्केल नहीं है। जब तक कोई रोटेशन शामिल नहीं होता है तब तक यह स्केल होता है। यदि मैट्रिक्स एक रोटेशन एन्कोड करता है तो आपको स्केल की गणना करने के लिए अतिरिक्त गणित करने की आवश्यकता होती है। MPERSP का उपयोग "z" समन्वय की गणना करने के लिए किया जाता है, डिफ़ॉल्ट z = 1 द्वारा। यदि z! = 1 फिर x = x/z; y = y/z; z = z/z = 1। आम तौर पर आपको इसके बारे में चिंता करने की आवश्यकता नहीं है z। यह एंड्रॉइड को 3 डी 3 के लिए 3 डी के अलावा, 3 डी के लिए ओपनजीएल 4x4 की तरह है –