CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵
来源:互联网 发布:剪辑音乐软件 编辑:程序博客网 时间:2024/05/17 03:18
官方介绍:Quartz 2D-Transforms
a、d缩放,b、c旋转,tx、ty平移;
基础的2D矩阵基本公式:
x=ax+cy+tx
y=bx+dy+ty
1.矩阵的基本知识:
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|
运算原理:原坐标设为(X,Y,1);
|a b 0|
[X,Y, 1] |c d 0| = [aX + cY + tx bX + dY + ty 1] ;
|tx ty 1|
通过矩阵运算后的坐标[aX + cY + tx bX + dY + ty 1],我们对比一下可知:
平移:设a=d=1, b=c=0.
[aX + cY + tx bX + dY + ty 1] = [X + tx Y + ty 1];
可见,这个时候,坐标是按照向量(tx,ty)进行平移,平移函数
CGAffineTransform CGAffineMakeTranslation(CGFloat tx,CGFloat ty)的计算原理。
缩放:设b=c=tx=ty=0.
[aX + cY + tx bX + dY + ty 1] = [aX dY 1];
可见,这个时候,坐标X按照a进行缩放,Y按照d进行缩放,a,d就是X,Y的比例系数,缩放函数
CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)的计算原理。a对应于sx,d对应于sy。
旋转:设tx=ty=0,a=cosa,b=sina,c=-sina,d=cosa。
[aX + cY + tx bX + dY + ty 1] = [Xcosa - Ysina Xsina + Ycosa 1] ;
可见,这个时候,ɵ就是旋转的角度,逆时针为正,顺时针为负。旋转函数
CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)的计算原理。angle即a的弧度表示。
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵
- CGAffineTransformMake(a,b,c,d,tx,ty)
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- Core Animation研究系列 : CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算的原理
- iOS 集移动,旋转,缩放于一体的函数:CGAffineTransformMake(a,b,c,d,tx,ty)
- a+++b+c+++d++
- a/b + c/d
- 在O(n^2)内寻找矩阵A中 A(c,d) - A(a,b) 的最大值, c > a 且 d > b.
- HDUOJ2503 a/b + c/d
- 翡翠 A, B, C, D
- HDU2503:a/b + c/d
- unsigned a,b,c,d;
- hdu2053 a/b + c/d
- 不要被阶乘吓到
- include的用法
- 关于androidStudio中使用ButterKnife8.4.0时点击事件显示为未使用
- matlab中的mat2cell及cellfun使用
- Windows 上搭建dryrun环境运行github上的Android程序
- CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵
- LevelDB:Bloom源码精读——数据结构
- Vue.js UI框架 - element
- Java断言(assert)介绍及使用
- 安卓复习之旅—Java多线程同步
- C语言指针引用二维数组
- SDL_SoftStretch函数
- iOS UITableView之cellForRowAtIndexPath和indexpathForCell分别获取指定cell和indexpath
- 如何在laravel/lumen中集成支付宝支付