您的位置:首页 > 移动开发 > IOS开发

IOS Dev Intro - CGAffineTransform

2016-07-25 13:56 246 查看
CGAffineTransform

1. define

typedef struct CGAffineTransform CGAffineTransform;

struct CGAffineTransform {

  CGFloat a, b, c, d;

  CGFloat tx, ty;

};

2. math form

CGAffineTransform = 

[a  b  0]

[c  d  0]

[tx ty 1]

Point pt = [x, y, 1];

pt' = pt * t 

=>

x = a * x + c * y + tx;

y = b * x + d * y + ty;

z = 0 * x + 0 * y + 1 * 1 = 1;

In summary, CGAffineTransform is row-majored matrix,

which is alike to Direct3D

3. transform combine

CGAffineTransform t = CGAffineTransformIsIdentity

t = [1 0 0 1 0 0]

CGAffineTransform CGAffineTransformRotate ( CGAffineTransform t, CGFloat angle );

t = CGAffineTransformRotate(t, -M_PI/2);

rt = [cosu  sinu 0]   [1 0 0]

     [-sinu cosu 0] * [0 1 0]
[0     0    1]   [0 0 1]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: