В чем смысл m34 структуры CATransform3D, я знаю, что это может изменить перспективу, но в чем смысл, когда значение -0.001 и 0.001?Значение m34 of CATransform3D
14
A
ответ
18
Вы можете найти более подробную информацию: here. Обратите внимание, что Apple использует обратный порядок умножения для проекции (относительно данной ссылки), поэтому все матричные умножения меняются на противоположные и все матрицы транспонируются.
Краткое описание значения:
- m34 = 1/г расстояние до плоскости проекции (1/е г термина в ссылке и в)
- + при ось г в направлении зритель, в результате чего «глядя в зеркало» чувствовать себя при использовании -
- проекция центра (0,0,0) плюс любые переводы настройки
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)
Пример вычисления Z-расстояния для desized масштаба выбранного расстояния глаз:
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);
}
Что такое '' 1/z''? Я до сих пор не понимаю ваше объяснение. Что означает m34? Что делают изменения? – confile
z - расстояние до вашей проекционной плоскости, m43 = 1/z. Я обновил ответ, чтобы сделать этот пункт более понятным. Изменения меняют расстояние и делают перспективу другой на той же сцене. –