В чем смысл m34 структуры CATransform3D, я только знаю, что она может изменить перспективу, но что означает, когда значение равно -0,001 и 0,001?
Вы можете найти полную информацию здесь .Обратите внимание, что Apple использует обратный порядок умножения для проекции (относительно данной ссылки), поэтому все умножения матриц обращаются и все матрицы транспонируются.
Краткое описание значения:
Я прочитал несколько статей, включая эту: 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); }