2010-07-08 12 views
6

मैं मुसीबत से बाहर काम कर नीचे कोड pMeasure = PathMeasure, मी = मैट्रिक्स की लौटे मूल्यों रही है, इसलिए distCount है पथएंड्रॉइड मैट्रिक्स, क्या मिलता है वैल्यूज() वापसी?

pMeasure.getMatrix(distCount, m, 0x01 | 0x02); 
m.getValues(float[] values) 

नाव [2] & नाव [5] कर रहे हैं स्थिति एक्स के साथ दूरी & y क्रमशः लेकिन मैं शेष

किसी भी मदद की सराहना नहीं कर सकता।

उत्तर

12

Matrix class documentation से लिया:

सार्वजनिक स्थिर अंतिम पूर्णांक MPERSP_0
लगातार मूल्य: 6 (0x00000006)

सार्वजनिक स्थिर अंतिम पूर्णांक MPERSP_1
लगातार मूल्य: 7 (0x00000007)

सार्वजनिक स्थिर अंतिम int MPERSP_2
लगातार मूल्य: 8 (0x00000008)

सार्वजनिक स्थिर अंतिम पूर्णांक MSCALE_X
स्थिरांक मान: 0 (0x00000000)

सार्वजनिक स्थिर अंतिम पूर्णांक MSCALE_Y
लगातार मूल्य: 4 (0x00000004)

सार्वजनिक स्थिर अंतिम पूर्णांक MSKEW_X
लगातार मूल्य: 1 (0x00000001)

सार्वजनिक स्थिर अंतिम पूर्णांक MSKEW_Y
लगातार मूल्य: 3 (0x00000003)

सार्वजनिक स्थिर अंतिम पूर्णांक MTRANS_X
लगातार मूल्य: 2 (0x00000002)

सार्वजनिक स्थिर अंतिम पूर्णांक MTRANS_Y
लगातार मूल्य: 5 (0x00000005)

+0

धन्यवाद लेकिन इस संबंध में परिप्रेक्ष्य का क्या अर्थ है? – Matt

+3

अकेले, मुझे नहीं पता .. मुझे यकीन है कि ये मान आरक्षित हैं, और कारण वे मौजूद हैं शायद मैट्रिक्स को पूरा करना है। यहां आपको इस विषय पर अधिक जानकारी मिलेगी: http://mobiledevelop.blogspot.com/2009/02/android-canvas-translation-discussion.html –

+2

एंड्रॉइड स्की का उपयोग करता है और मैंने एंड्रॉइड मैट्रिक्स क्लास के लिए स्रोत कोड की जांच की है सी ++ कोर, यह स्कामैट्रिक्स के साथ बस मैट्रिक्स 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 की तरह है –

6

एंड्रॉयड मैट्रिक्स 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) लेने के लिए और है कि वेक्टर की लंबाई हो और है कि अपने पैमाने है। रोटेशन निकालने के लिए, रिलायंस सामान्य करें और यह मानक कोण प्राप्त करना आसान है।

संबंधित मुद्दे