2010-08-25 8 views
9

से रोटेशन कोण की गणना करता है I इनपुट के रूप में CATransform3D संरचना देकर जेड-अक्ष के आसपास रेडियंस में रोटेशन की गणना कैसे करूं?आईफोनएसडीके कैटर्रांसफॉर्म 3 डी

मूल रूप से मुझे जो चाहिए वह CATransform3DMakeRotation का दूसरा तरीका है।

उत्तर

23

यह इस बात पर निर्भर करता है कि आप किस अक्ष पर रोटेशन कर रहे हैं। z- अक्ष के बारे में

रोटेशन के रूप में प्रस्तुत किया जाता है:

a = angle in radians 
x' = x*cos.a - y*sin.a 
y' = x*sin.a + y*cos.a 
z' = z 

(cos.a sin.a 0 0) 
(-sin.a cos.a 0 0) 
(0  0 1 0) 
(0  0 0 1) 

इतना कोण होना चाहिए एक = atan2 (transform.m12, transform.m11); x- अक्ष के बारे में

रोटेशन:

a = angle in radians 
y' = y*cos.a - z*sin.a 
z' = y*sin.a + z*cos.a 
x' = x 

(1 0  0 0) 
(0 cos.a sin.a 0) 
(0 -sin.a cos.a 0) 
(0 0  0  1) 

y- अक्ष के बारे में रोटेशन:

a = angle in radians 
z' = z*cos.a - x*sin.a 
x' = z*sin.a + x*cos.a 
y' = y 

(cos.a 0 -sin.a 0) 
(0  1 0  0) 
(sin.a 0 cos.a 0) 
(0  0 0  1) 
+1

और सही वृत्त का चतुर्थ भाग में एक कोण नहीं देंगे atan2 का उपयोग सुनिश्चित करें बाद में के रूप में atan नहीं हो। –

+0

धन्यवाद, आपके उत्तर से पहले, मैंने सीएएलएयर की एफ़िन ट्रान्सफॉर्म प्रॉपर्टी का उपयोग करने के लिए वापस आ गया था ट्रांसफॉर्म 3 डी को एफ़िनट्रांसफॉर्म में परिवर्तित करें और फिर इस गणना से कोण को बाहर निकालें: http: //stackoverflow.com/questions/2051811/iphone- sdk-cgaffinetransform-getting-the-angle-of-rotation-of-an-object अब मुझे पता है, ट्रांसफॉर्म 3 डी से सीधे गणना कैसे करें। धन्यवाद! – ravinsp

+0

हाँ मैंने पहले साल में इस बारे में सीखा था और मुझे अपने दोस्त से पूछना याद रखना चाहिए कि "वह ऐसा क्यों करेगा, हमें यह जानने की जरूरत है" –

15

तो बदलना एक परत से जुड़ा हुआ है, तो आप की तरह रोटेशन के मूल्य प्राप्त कर सकते हैं इस प्रकार है:

CGFloat angle = [(NSNumber *)[layer valueForKeyPath:@"transform.rotation.z"] floatValue]; 

,210

documentation से:

कोर एनिमेशन हो रही है और प्रमुख रास्तों के माध्यम से एक परत के CATransform3D मैट्रिक्स के समान मूल्यों की स्थापना की अनुमति के लिए कुंजी-मान कोडिंग प्रोटोकॉल फैली हुई है। सारणी 4 कुंजी पथ जिसके लिए एक परत को बदलने और sublayerTransform गुण कुंजी-मान कोडिंग और अवलोकन का वर्णन शिकायत