catransform3d的M34的含义
-
28-09-2019 - |
题
结构Catransform3d的M34的含义是什么,我只知道它可以改变视角,但是当值为-0.001和0.001时,含义是什么?
解决方案
您可以找到完整的详细信息 这里. 。请注意,Apple使用反向的乘法顺序进行投影(相对于给定的链接),因此所有矩阵乘法都会相反,并将所有矩阵转换。
对含义的简短描述:
- M34 = 1/z距投射平面的距离(1/ez 参考链接中的术语)
- +对于z轴是朝向观看器的,在使用时会产生“在镜子里看”的感觉。
- 投影中心是(0,0,0)加上您设置的任何翻译
其他提示
我的决议在这里:
实体:
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);
}
不隶属于 StackOverflow