struct CATransform3D
{
CGFloat m11, m12, m13, m14;
CGFloat m21, m22, m23, m24;
CGFloat m31, m32, m33, m34;
CGFloat m41, m42, m43, m44;
};
*************************************
{
CGFloat m11(x缩放), m12(y切变), m13(), m14();
CGFloat m21(x切变), m22(y缩放), m23(), m24();
CGFloat m31(), m32(), m33(), m34(透视效果,要操作的这个对象要有旋转的角度,否则没有效果。当然,z方向上得有变化才会有透视效果);
CGFloat m41(x平移), m42(y平移), m43(z平移), m44();
CGFloat m11(x缩放), m12(y切变), m13(), m14();
CGFloat m21(x切变), m22(y缩放), m23(), m24();
CGFloat m31(), m32(), m33(), m34(透视效果,要操作的这个对象要有旋转的角度,否则没有效果。当然,z方向上得有变化才会有透视效果);
CGFloat m41(x平移), m42(y平移), m43(z平移), m44();
};
****************************************************
typedef struct CATransform3D CATransform3D;
CA_EXTERN_C_BEGIN
CA_EXTERN_C_BEGIN
/* The identity transform: [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1].
* 单位矩阵
*/
CA_EXTERN const CATransform3D CATransform3DIdentity
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Returns true if 't' is the identity transform.
返回布尔值 判断是否是单位矩阵
*/
CA_EXTERN bool CATransform3DIsIdentity (CATransform3D t)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN bool CATransform3DIsIdentity (CATransform3D t)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Returns true if 'a' is exactly equal to 'b'.
返回布尔值 判断两个
CATransform3D 变量是否相等
*/
CA_EXTERN bool CATransform3DEqualToTransform (CATransform3D a,
CATransform3D b)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Returns a transform that translates by '(tx, ty, tz)':
* t' = [1 0 0 0; 0 1 0 0; 0 0 1 0; tx ty tz 1].
* 传入 (x,y,z) 向量,转换成
CATransform3D 变量
*/
CA_EXTERN CATransform3D CATransform3DMakeTranslation (CGFloat tx,
CGFloat ty, CGFloat tz)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Returns a transform that scales by `(sx, sy, sz)':
* t' = [sx 0 0 0; 0 sy 0 0; 0 0 sz 0; 0 0 0 1].
* 对 X,Y,Z 三个变量进行缩放,传入参数其实是个比率
*/
CA_EXTERN CATransform3D CATransform3DMakeScale (CGFloat sx, CGFloat sy,
CGFloat sz)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Returns a transform that rotates by 'angle' radians about the vector
* '(x, y, z)'. If the vector has length zero the identity transform is
* returned.
* 在某个方向上旋转某个角度。返回一个 相对于某个矢量的旋转角度 的3D变换
*/
CA_EXTERN CATransform3D CATransform3DMakeRotation (CGFloat angle, CGFloat x,
CGFloat y, CGFloat z)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Translate 't' by '(tx, ty, tz)' and return the result:
* t' = translate(tx, ty, tz) * t.
* 在某个矢量基础上 进行另一个矢量运算。返回一个 相对于某个矢量的矢量运算的 的3D变换
*/
CA_EXTERN CATransform3D CATransform3DTranslate (CATransform3D t, CGFloat tx,
CGFloat ty, CGFloat tz)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Scale 't' by '(sx, sy, sz)' and return the result:
* t' = scale(sx, sy, sz) * t.
* 在某个矢量基础上 进行另一个矢量放缩。返回一个 相对于某个矢量的矢量放缩 的3D变换
*/
CA_EXTERN CATransform3D CATransform3DScale (CATransform3D t, CGFloat sx,
CGFloat sy, CGFloat sz)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Rotate 't' by 'angle' radians about the vector '(x, y, z)' and return
* the result. If the vector has zero length the behavior is undefined:
* t' = rotation(angle, x, y, z) * t.
* 在某个矢量基础上 进行某个矢量方向上的旋转一定角度
*/
CA_EXTERN CATransform3D CATransform3DRotate (CATransform3D t, CGFloat angle,
CGFloat x, CGFloat y, CGFloat z)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Concatenate 'b' to 'a' and return the result: t' = a * b.
* 把两个向量变换 combine 到一起。相当于是 两个向量进行向量运算。
*/
CA_EXTERN CATransform3D CATransform3DConcat (CATransform3D a, CATransform3D b)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Invert 't' and return the result. Returns the original matrix if 't'
* has no inverse.
* 返回一个逆向量
*/
CA_EXTERN CATransform3D CATransform3DInvert (CATransform3D t)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Return a transform with the same effect as affine transform 'm'.
* 返回一个相同效果的向量 相当于 copy
*/
CA_EXTERN CATransform3D CATransform3DMakeAffineTransform (CGAffineTransform m)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Returns true if 't' can be represented exactly by an affine transform.
* 判断放射变换是否可以被精确表示
*/
CA_EXTERN bool CATransform3DIsAffine (CATransform3D t)
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
/* Returns the affine transform represented by 't'. If 't' can not be
* represented exactly by an affine transform the returned value is
* undefined.
* 返回以“T”为代表的 放射变换。如果不能进行放射变换 则 返回 未定义。
*/
CA_EXTERN CGAffineTransform CATransform3DGetAffineTransform (CATransform3D t)
__OSX_AVAILABLE_STARTING
(__MAC_10_5, __IPHONE_2_0);