初窥 CATransform3D  文档解读

来源:互联网 发布:魅族网络打印 编辑:程序博客网 时间:2024/06/06 08:42

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();
};
****************************************************
typedef struct CATransform3D CATransform3D;

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

/* 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);
0 0