Bedeutung von m34 von CATransform3D
-
28-09-2019 - |
Frage
Was ist die Bedeutung von m34 der Struktur CATransform3D, ich weiß nur, es kann die Perspektive ändern, aber was ist der Sinn, wenn der Wert -0,001 und 0,001 ist?
Lösung
Sie können die vollständigen Details hier . Beachten Sie, dass Apple die umgekehrte Multiplikation um für die Projektion (bezogen auf den angegebenen Link) verwendet, so dass alle Matrix-Multiplikationen vertauscht sind und alle Matrizen werden umgesetzt.
Eine kurze Beschreibung der Bedeutung:
- M34 = 1 / z Abstand zur Projektionsebene (die 1 / e z Begriff in der Referenzverbindung)
- + für die z-Achse in Richtung des Betrachters ist, was zu einem Gefühl „im Spiegel“ bei der Verwendung von -
- Projektionszentrum ist (0,0,0) sowie alle Übersetzungen, die Sie einrichten
Andere Tipps
Ich las einige Artikel einschließlich dieser: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid / TP40004514-K8-SW13
Meine Auflösungen sind hier:
Instanzen:
-
eye
- Abstand von Bildschirm Auge -
scale
- visuelle Skala von transformierten Objekt -
distance
- Abstand zu transformierte Objekt
Verbindungs ??Formeln:
-
scale = eye / (eye + distance)
-
distance = eye * (1.0/scale - scale)
-
eye = distance / (1.0/scale - scale)
Beispiel des Berechnen der Z-Abstand für entschlichtet Skala von ausgewähltem Augenabstand:
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);
}