significato di m34 di CATransform3D
-
28-09-2019 - |
Domanda
Qual è il significato di m34 della struttura CATransform3D, so solo che può cambiare la prospettiva, ma qual è il significato quando il valore è -0,001 e 0,001?
Soluzione
Puoi trovare tutti i dettagli Qui.Tieni presente che Apple utilizza l'ordine di moltiplicazione invertito per la proiezione (relativo al collegamento fornito), quindi tutte le moltiplicazioni di matrice vengono invertite e tutte le matrici vengono trasposte.
Una breve descrizione del significato:
- m34 = 1/z distanza dal piano di proiezione (1/ez termine nel link di riferimento)
- + perché l'asse z è rivolto verso lo spettatore, dando la sensazione di "guardarsi allo specchio" quando si utilizza -
- il centro di proiezione è (0,0,0) più eventuali traduzioni impostate
Altri suggerimenti
Ho letto alcuni articoli, tra cui questa: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid / TP40004514-CH8-SW13
I miei risoluzioni è qui:
Entità:
-
eye
- distanza da schermo a occhio -
scale
- scala visiva di oggetto trasformato -
distance
- distanza di oggetto trasformato
Collegamento formule:
-
scale = eye / (eye + distance)
-
distance = eye * (1.0/scale - scale)
-
eye = distance / (1.0/scale - scale)
Esempio di calcolo Z-distance per la scala desized di distanza dell'occhio selezionato:
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);
}