iOS坐标系详解
CATransform3D 特效详解
iOS 3D变换 -- CALayer的transform
矩阵变换基础--CALayer的transform扩展解析
理解iOS中CGAffineTransform与矩阵的关系
左手坐标系,左上角为(0,0)
对于CATransform3D其实主要要理解的就是图层的矩阵变化方式。在CALayer的显示系统中,默认的相机使用正交投影,正交投影没有远小近大效果,所以,只能造成相应轴上的缩放。所以不管你旋转多少度都没有效果。
图层中有两个属性指定了矩阵变化,分别是:
- transform
结合anchorPoint的位置来对图层和图层上的子图层进行变化。 - sublayerTransform
结合anchorPoint的位置来对图层的自图层进行变化,不包括本身。
概念解释
CATransform3D是一个4x4的CGFloat的矩阵。
1 - m11 x缩放 | 0 | 0 | 0 |
---|---|---|---|
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
tx | ty | tz | 1 |
CATransform3D 又是一个结构。他有自己的一个公式,可以进行套用。
struct CATransform3D
{
CGFloat m11, m12, m13, m14;
CGFloat m21, m22, m23, m24;
CGFloat m31, m32, m33, m34;
CGFloat m41, m42, m43, m44;
};
struct CATransform3D
{
CGFloat m11(x缩放), m12(y切变), m13(旋转), m14();
CGFloat m21(x切变), m22(y缩放), m23(), m24();
CGFloat m31(旋转), m32( ), m33(), m34(透视效果,要操作的这个对象要有旋转的角度,否则没有效果。正直/负值都有意义);
CGFloat m41(x平移), m42(y平移), m43(z平移), m44();
};
CATransform3DIdentity
CATransform3DIdentity是单位矩阵,该矩阵没有缩放,旋转,歪斜,透视。该矩阵设置到图层上就是设置默认值。
CATransform3DMakeTranslation
CATransform3D CATransform3DMakeTranslation (CGFloat tx, CGFloat ty, CGFloat tz)
tx:x平移 ,ty:y平移,tz:平移
tx:X轴偏移位置,往右为正数。
ty:Y轴偏移位置,往下为正数。
tz:Z轴偏移位置,往外为正数。
CATransform3DMakeScale
CATransform3D CATransform3DMakeScale (CGFloat sx, CGFloat sy, CGFloat sz);
sx:X轴缩放,代表一个缩放比例,一般都是 0 --- 1 之间的数字。
sy:Y轴缩放。
sz:整体比例变换时,也就是m11(sx)== m22(sy)时,若m33(sz)>1,图形整体缩小,若0<1,图形整体放大,若m33(sz)<0,发生关于原点的对称等比变换。
网友评论