GGB数学云 SwiftGraphics绘图基础:变换矩阵

SwiftGraphics绘图基础:变换矩阵

2015年4月6日 人阅读 Graphics»Swift

摘要: SwiftGraphics使用说明(变换矩阵)。

上一篇 介绍了绘图核心结构 CGPoint,本文介绍 CGAffineTransform(仿射变换矩阵)。

CGAffineTransform 有六个元素:a、b、c、d、tx、ty,可表达放缩、旋转、位移等变换矩阵。
[ab0cd0txty1]\begin{bmatrix} a & b & 0 \\ c & d & 0 \\ tx & ty & 1 \end{bmatrix}

1. 构造函数

为注明参数类型的都为 CGFloat。

  • CGAffineTransform():构造为单位矩阵。
  • CGAffineTransform(a, b, c, d, tx, ty):直接指定矩阵的所有元素构造。
  • CGAffineTransform([a, b, c, d, tx, ty]):直接指定矩阵的所有元素构造。
  • CGAffineTransform(transform: CGAffineTransform):拷贝构造。
  • CGAffineTransform(translation: CGPoint):位移矩阵。
  • CGAffineTransform(tx, ty):位移矩阵。
  • CGAffineTransform(scale: CGSize):放缩矩阵。
  • CGAffineTransform(sx, sy)、`CGAffineTransform(scale):放缩矩阵。
  • CGAffineTransform(scale, origin:CGPoint):以一点为中心放缩的矩阵。
  • CGAffineTransform(rotation):旋转矩阵。
  • CGAffineTransform(rotation, origin:CGPoint)::以一点为中心旋转的矩阵。
  • CGAffineTransform(transforms:[CGAffineTransform]):对多个矩阵级联变换构造。
  • CGAffineTransform(from1:CGPoint, from2:CGPoint, to1:CGPoint, to2:CGPoint):为双指触摸构造复合变换矩阵,可实现捏合、旋转、双指拖动等几何变换。

2. 级联变换函数(相当于表达式:本矩阵 * 另一矩阵)

  • translated(translation:CGPoint):右乘以一个位移矩阵。
  • translated(tx, ty):右乘以一个位移矩阵。
  • scaled(scale:CGSize):右乘以一个放缩矩阵。
  • scaled(sx, sy):右乘以一个放缩矩阵。
  • scaled(scale:CGFloat):右乘以一个放缩矩阵。
  • scaled(scale, origin:CGPoint):右乘以一个以一点为中心放缩的矩阵。
  • rotated(angle):右乘以一个旋转矩阵。
  • rotated(angle, origin:CGPoint):右乘以一个以一点为中心旋转的矩阵。
  • concated(CGAffineTransform):右乘以一个矩阵。
  • inverted():返回逆矩阵。
  • 矩阵 + 矩阵:相当于 concated
  • CGAffineTransform(transforms:[CGAffineTransform]):对多个矩阵级联变换。

3. 设置为新的矩阵(相当于表达式:本矩阵 *= 另一矩阵)

  • translate(translation:CGPoint):右乘一个位移矩阵。
  • translate(tx, ty):右乘一个位移矩阵。
  • scale(scale:CGSize):右乘一个放缩矩阵。
  • scale(sx, sy):右乘一个放缩矩阵。
  • scale(scale:CGFloat):右乘一个放缩矩阵。
  • scale(scale, origin:CGPoint):右乘一个以一点为中心放缩的矩阵。
  • rotate(angle):右乘一个旋转矩阵。
  • rotate(angle, origin:CGPoint):右乘一个以一点为中心旋转的矩阵。
  • concat(CGAffineTransform):右乘一个矩阵。
  • invert():设置为逆矩阵。
  • 矩阵 += 矩阵:相当于 concat

4. 矩阵变换应用

  • CGPoint * 矩阵CGPoint *= 矩阵:点的矩阵变换。
  • CGSize * 矩阵CGSize *= 矩阵:大小的矩阵变换。
  • CGRect * 矩阵CGRect *= 矩阵:矩形的矩阵变换。
  • transformVector(vec:CGPoint):矢量的矩阵变换。
分享到: 更多