Значение M34 Catransform3D
-
28-09-2019 - |
Вопрос
В чем смысл M34 структуры Catransform3D, я только знаю, что это может изменить перспективу, но в чем смысл, когда значение равно -0.001 и 0,001?
Решение
Вы можете найти полную информацию здесь. Отказ Обратите внимание, что Apple использует обратный порядок умножения для проекции (относительно данной ссылки), поэтому все мультипликации матрицы обращаются, и все матрицы транспонированы.
Краткое описание значения:
- M34 = 1 / Z расстояние до проекционной плоскости (1 / еz. Срок в ссылке ссылки)
- + Для оси z - к зрителю, что приводит к тому, что «выглядит в зеркале», когда используете -
- Центр проекции (0,0,0) плюс любые переводы, которые вы настроили
Другие советы
Я прочитал некоторые статьи, включая этот: https://developer.apple.com/library/content/documentation/cocoa/coneptual/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);
}