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?

War es hilfreich?

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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top