значение m34 CATransform3D

В чем смысл m34 структуры CATransform3D, я только знаю, что она может изменить перспективу, но какой смысл, когда значение равно -0,001 и 0,001?

Ответы на вопрос(2)

Решение Вопроса

Вот, Обратите внимание, что Apple использует обратный порядок умножения для проекции (относительно данной ссылки), поэтому все умножения матриц обращаются вспять и все матрицы транспонируются.

Краткое описание значения:

m34 = 1 / z расстояние до плоскости проекции (1 / еz термин в ссылочной ссылке)+, поскольку ось z направлена ​​к зрителю, что дает ощущение "глядя в зеркало" при использовании -Центр проекции (0,0,0) плюс любые переводы, которые вы создали
 Mihai Timar05 июн. 2015 г., 13:06
z - расстояние до вашей проекционной плоскости, m43 = 1 / z. Я обновил ответ, чтобы прояснить этот вопрос. Изменения меняют расстояние и заставляют перспективу выглядеть по-разному в одной и той же сцене.
 confile04 июн. 2015 г., 02:51
Что такое1/z? Я до сих пор не понимаю твоего объяснения. Что значит м34? Что делают изменения?

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);
}

Ваш ответ на вопрос