2010-10-07 17 views
14

संरचना का m34 का अर्थ क्या है, मैं केवल परिप्रेक्ष्य को बदल सकता हूं, लेकिन मूल्य क्या है -0.001 और 0.001 का अर्थ क्या है?का अर्थ CATransform3D

उत्तर

18

आप पूरा विवरण here देख सकते हैं। ध्यान दें कि ऐप्पल प्रक्षेपण के लिए उलटा गुणा क्रम का उपयोग करता है (दिए गए लिंक के सापेक्ष) ताकि सभी मैट्रिक्स गुणाओं को उलट दिया जा सके और सभी matrices transposed हैं।

अर्थ का एक संक्षिप्त विवरण:

  • M34 = 1/z दूरी प्रक्षेपण विमान (संदर्भ कड़ी में 1/ई z अवधि)
  • + z अक्ष के लिए की ओर है दर्शक, एक "आईने में देख" में जिसके परिणामस्वरूप का उपयोग करते समय लग रहा है -
  • प्रक्षेपण केंद्र है (0,0,0) के साथ साथ किसी भी अनुवाद आप की स्थापना की
+0

क्या 'है' 1/z''? मुझे अभी भी आपकी व्याख्या नहीं मिली है। एम34 का क्या मतलब है? परिवर्तन क्या करते हैं? – confile

+1

जेड आपके प्रोजेक्शन प्लेन की दूरी है, m43 = 1/z। मैंने इस बिंदु को थोड़ा स्पष्ट बनाने के लिए उत्तर अपडेट किया है। परिवर्तन दूरी बदलते हैं और परिप्रेक्ष्य को एक ही दृश्य पर अलग दिखते हैं। –

1

मैं कुछ लेख includin पढ़ जी इस एक: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid/TP40004514-CH8-SW13

मेरे प्रस्तावों यहाँ है:

संस्थाओं:

  • eye - स्क्रीन से आंखों के लिए दूरी
  • scale - तब्दील वस्तु
  • distance के दृश्य पैमाने - के लिए दूरी रूपांतरित ऑब्जेक्ट

कनेक्ट सूत्रों:

  • scale = eye/(eye + distance)
  • distance = eye * (1.0/scale - scale)
  • eye = distance/(1.0/scale - scale)

चयनित नेत्र दूरी की desized पैमाने के लिए कंप्यूटिंग z दूरी का उदाहरण:

CATransform3D transformByScaleAndEye(CGFloat scale, CGFloat eye) { 
    CATransform3D t = CATransform3DIdentity; 
    t.m34 = -1.0/eye; 
    CGFloat distance = -eye*(1.0/scale - scale); 
    return CATransform3DTranslate(t, 0, 0, distance); 
} 
संबंधित मुद्दे