Significado de M34 de CATransform3D
-
28-09-2019 - |
Pregunta
¿Cuál es el significado de M34 de la estructura CATransform3D, sólo sé que puede cambiar la perspectiva, pero ¿cuál es el sentido cuando el valor es -0,001 y 0,001?
Solución
Puede encontrar los detalles completos aquí . Nota que Apple utiliza el orden de multiplicación inversa para la proyección (en relación con el enlace dado) para todas las multiplicaciones matriciales se invierten y todas las matrices se transponen.
Una breve descripción del significado:
- m34 = 1 / z distancia al plano de proyección (el 1 / e z plazo en el enlace de referencia)
- + para el eje z es hacia el espectador, lo que resulta en una sensación "mirando en el espejo" cuando se utiliza -
- centro de proyección es (0,0,0), además de traducciones se estableció
Otros consejos
He leído algunos artículos incluyendo éste: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid / TP40004514-CH8-SW13
Mis resoluciones está aquí:
Entidades:
-
eye
- distancia de pantalla para el ojo -
scale
- escala visual de objeto transformado -
distance
- Distancia al objeto transformado
Conexión de fórmulas:
-
scale = eye / (eye + distance)
-
distance = eye * (1.0/scale - scale)
-
eye = distance / (1.0/scale - scale)
Ejemplo de calcular z-distancia de escala sin apresto de la distancia ojo seleccionado:
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);
}