CATransform3D的m34的含义

时间:2010-10-07 12:07:33

标签: perspective catransform3d

结构CATransform3D的m34的含义是什么,我只知道它可以改变视角,但当值为-0.001和0.001时,它是什么意思?

2 个答案:

答案 0 :(得分:18)

您可以找到完整的详细信息here。请注意,Apple使用反向乘法顺序进行投影(相对于给定的链接),因此所有矩阵乘法都是相反的,并且所有矩阵都被转置。

含义的简短描述:

  • m34 =投影平面的1 / z距离(参考链接中的1 / e z 项)
  • z轴的
  • +朝向观察者,在使用时产生了“照镜子”的感觉 -
  • 投影中心是(0,0,0)加上您设置的任何翻译

答案 1 :(得分:1)

我读了一些文章,包括这篇文章:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid/TP40004514-CH8-SW13

我的决议在这里:

实体:

  • eye - 从屏幕到眼睛的距离
  • scale - 变换对象的视觉比例
  • distance - 距转换对象的距离

连接公式:

  • scale = eye / (eye + distance)
  • distance = eye * (1.0/scale - scale)
  • eye = distance / (1.0/scale - scale)

计算所选眼距的退格比例的z距离的示例:

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);
}