معنى M34 من catransform3d
-
28-09-2019 - |
سؤال
ما معنى M34 للهيكل catransform3d ، وأنا أعلم فقط أنه يمكن أن يغير المنظور ، ولكن ما هو المعنى عندما تكون القيمة -0.001 و 0.001؟
المحلول
يمكنك العثور على التفاصيل الكاملة هنا. لاحظ أن Apple تستخدم ترتيب الضرب العكسي للإسقاط (نسبة إلى الرابط المحدد) بحيث يتم عكس جميع مضاعفات المصفوفة ونقل جميع المصفوفات.
وصف قصير للمعنى:
- M34 = 1/Z المسافة إلى مستوى الإسقاط (1/Eض المصطلح في الرابط المرجعي)
- + بالنسبة للمحور z هو نحو المشاهد ، مما يؤدي إلى شعور "النظر في المرآة" عند استخدام -
- مركز الإسقاط هو (0،0،0) بالإضافة إلى أي ترجمات قمت بإعدادها
نصائح أخرى
قرأت بعض المقالات بما في ذلك هذا واحد: 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)
مثال على الحوسبة 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);
}
لا تنتمي إلى StackOverflow