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

有帮助吗?

解决方案

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

对含义的简短描述:

  • M34 = 1/z距投射平面的距离(1/ez 参考链接中的术语)
  • +对于z轴是朝向观看器的,在使用时会产生“在镜子里看”的感觉。
  • 投影中心是(0,0,0)加上您设置的任何翻译

其他提示

我读了一些文章,包括这篇文章: https://developer.apple.com/library/content/content/cocoa/cocoa/conceptual/coreanimation_guide/advancedanimationtricks/advancedanimationtrickss.htmlucks.html#//apple/apple_re_redoc/doc/doc/uid/doc/uid/tp40004514-s-sw8-sw8-sw8-sw8-sw8-sw8一下

我的决议在这里:

实体:

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

连接公式:

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

计算Z-Distance的Z-Distance的示例,用于选定的眼睛距离的范围:

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);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top