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?

¿Fue útil?

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);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top