CATransform3D: Calcular la altura después de la transformación de perspectiva

Tengo una capa con una altura de 50, y la estoy rotando sobre el eje x. . . ¿Cómo puedo calcular la altura a medida que avanza la rotation?

CATransform3D subLayerTransform = CATransform3DMakeTranslation(0, 0, 0); subLayerTransform.m34 = -1 / 1800; //How does height relate to perspective and angle? subLayerTransform = CATransform3DTranslate(subLayerTransform, 0, 0, 0); subLayerTransform = CATransform3DRotate(subLayerTransform, 45 * (M_PI / 180), 1, 0, 0); _transitionLayer.sublayerTransform = subLayerTransform; 

Para girar alnetworkingedor del eje y

  • y '= y * cos q – z * sin q
  • z '= y * sin q + z * cos q
  • x '= x

Y la altura es y1 – y0. Por lo tanto, para calcular los nuevos y1 y y0:

 CGFloat y0 = 0; CGFloat y1 = 50; CGFloat z = -1800; //This relates to the m34 perspective matrix. y0 = y0 * cos(radians(45)) - z * sin(radians(45)); y1 = y1 * cos(radians(45)) - z * sin(radians(45)); CGFloat newHeight = y1 - y0;