CGAffineTransform 原理
2013-06-18 16:43
267 查看
参考:http://guxiaojje.blog.163.com/blog/static/14094229120131510359399/
http://www.buildapp.net/iphone/show.asp?id=10192
矩阵的基本知识:
struct CGAffineTransform
{
CGFloat a, b, c, d;
CGFloat tx, ty;
};
CGAffineTransform CGAffineTransformMake (CGFloat a,CGFloat b,CGFloat c,CGFloat d,CGFloat tx,CGFloat ty);
为了把二维图形的变化统一在一个坐标系里,引入了齐次坐标的概念,即把一个图形用一个三维矩阵表示,其中第三列总是(0,0,1),用来作为坐标系的标准。所以所有的变化都由前两列完成。
以上参数在矩阵中的表示为:
|a b 0|
|c d 0|
|tx ty 1|
The identity transform: [ 1 0 0 1 0 0 ].
CG_EXTERN const CGAffineTransform CGAffineTransformIdentity
/* Return the transform [ a b c d tx ty ]. 可控制变换任何变化*/
CG_EXTERN CGAffineTransform CGAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty)
/* Return a transform which translates by `(tx, ty)': t' = [ 1 0 0 1 tx ty ] 控制位移*/
CG_EXTERN CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)
/* Return a transform which scales by `(sx, sy)': t' = [ sx 0 0 sy 0 0 ] 控制缩放*/
CG_EXTERN CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
/* Return a transform which rotates by `angle' radians: t' = [ cos(angle) sin(angle) -sin(angle) cos(angle) 0 0 ] 控制旋转*/
CG_EXTERN CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
=====================
简单记忆:
在使用矩阵控制图片的缩放和旋转的时候,CGAffineTransformMake(a,b,c,d,tx,ty);
这几个参数里面,哪些是控制缩放,哪些是控制旋转:
a,d缩放;
b,c旋转;
tx,ty位移。
基础的2D矩阵,文档里有。
http://www.buildapp.net/iphone/show.asp?id=10192
矩阵的基本知识:
struct CGAffineTransform
{
CGFloat a, b, c, d;
CGFloat tx, ty;
};
CGAffineTransform CGAffineTransformMake (CGFloat a,CGFloat b,CGFloat c,CGFloat d,CGFloat tx,CGFloat ty);
为了把二维图形的变化统一在一个坐标系里,引入了齐次坐标的概念,即把一个图形用一个三维矩阵表示,其中第三列总是(0,0,1),用来作为坐标系的标准。所以所有的变化都由前两列完成。
以上参数在矩阵中的表示为:
|a b 0|
|c d 0|
|tx ty 1|
The identity transform: [ 1 0 0 1 0 0 ].
CG_EXTERN const CGAffineTransform CGAffineTransformIdentity
/* Return the transform [ a b c d tx ty ]. 可控制变换任何变化*/
CG_EXTERN CGAffineTransform CGAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty)
/* Return a transform which translates by `(tx, ty)': t' = [ 1 0 0 1 tx ty ] 控制位移*/
CG_EXTERN CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)
/* Return a transform which scales by `(sx, sy)': t' = [ sx 0 0 sy 0 0 ] 控制缩放*/
CG_EXTERN CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
/* Return a transform which rotates by `angle' radians: t' = [ cos(angle) sin(angle) -sin(angle) cos(angle) 0 0 ] 控制旋转*/
CG_EXTERN CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
=====================
简单记忆:
在使用矩阵控制图片的缩放和旋转的时候,CGAffineTransformMake(a,b,c,d,tx,ty);
这几个参数里面,哪些是控制缩放,哪些是控制旋转:
a,d缩放;
b,c旋转;
tx,ty位移。
基础的2D矩阵,文档里有。
相关文章推荐
- 第6月第17天 CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- IOS-CGAffineTransformMake 矩阵变换 的运算原理
- CGAffineTransformMake 矩阵变换 的运算原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- Core Animation研究系列 : CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake 矩阵变换 的运算原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake 矩阵变换 的运算原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算原理
- CGAffineTransformMake 矩阵变换 的运算原理
- [原]CGAffineTransformMakeTranslation和CGAffineTransformTranslate、CGAffineTransformScale和CGAffineTransf
- CGAffineTransform 放射变换
- CGAffineTransform 放射变换
- iOS CGAffineTransform属性
- 初窥 CGAffineTransform 文档解读
- Karhunen-Loeve Transform (KLT) 原理及PCA应用