iOS - 仿射变换
2016-04-16 02:16
411 查看
AffineTransform类描述了一种二维仿射变换的功能,它是一种二维坐标到二维坐标之间的线性变换,保持二维图形的“平直性”
(译注: straightness,即变换后直线还是直线不会打弯,圆弧还是圆弧)和“平行性”(译注:parallelness,其实是指保持二维图形间的相对位置关系不变,平行线还是平行线,而直线上点的位置顺序不变,另特别注意向量间夹角可能会发生变化。)
仿射变换可以通过一系列的原子变换的复合来实现,包括:平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和错切(Shear)。
[ 1 0 tx ]
[ 0 1 ty ]
[ 0 0 1 ]
[ sx 0 0 ]
[ 0 sy 0 ]
[ 0 0 1 ]
[ cosθ sinθ 0 ]
[ -sinθ cosθ 0 ]
[ 0 0 1 ]
[ -1 0 0 ]
[ 0 1 0 ]
[ 0 0 1 ]
翻转前已经旋转了一定的角度,变换矩阵
[ cosθ sinθ][ -1 0]
[ -sinθ cosθ][ -0 1]
(译注: straightness,即变换后直线还是直线不会打弯,圆弧还是圆弧)和“平行性”(译注:parallelness,其实是指保持二维图形间的相对位置关系不变,平行线还是平行线,而直线上点的位置顺序不变,另特别注意向量间夹角可能会发生变化。)
仿射变换可以通过一系列的原子变换的复合来实现,包括:平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和错切(Shear)。
平移变换
将每一点移动到(x+tx, y+ty),变换矩阵[ 1 0 tx ]
[ 0 1 ty ]
[ 0 0 1 ]
缩放变换
将每一点的横坐标放大(缩小)至sx倍,纵坐标放大(缩小)至sy倍,变换矩阵[ sx 0 0 ]
[ 0 sy 0 ]
[ 0 0 1 ]
旋转变换
绕原点顺时针旋转θ角度,变换矩阵[ cosθ sinθ 0 ]
[ -sinθ cosθ 0 ]
[ 0 0 1 ]
翻转变换
水平翻转,变换矩阵[ -1 0 0 ]
[ 0 1 0 ]
[ 0 0 1 ]
翻转前已经旋转了一定的角度,变换矩阵
[ cosθ sinθ][ -1 0]
[ -sinθ cosθ][ -0 1]
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C#实现图形位置组合转换的方法
- C#实现判断图形文件格式的方法
- C#实现图形路径变换的方法
- php生成图形验证码几种方法小结
- CentOS的图形安装及初始环境设置教程
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法