CGMath实践
在CGMath中实现如下封装:
缩放变换
翻转变换(水平/垂直)
剪切变换
旋转变换
2维点位齐次化
2维向量齐次化
平移变换
求取逆矩阵
假设形状M为面/线图形,存在包围盒
- 形状M围绕指定点位P的旋转
- 1.将M沿PO平移
- 2.将M进行旋转
- 3.将M沿OP平移
- 形状M以自身为轴,进行水平/垂直翻转
- 1.将M的中点平移至点O
- 2.将M进行水平/垂直翻转
- 3.将M中点平移回原先的位置
Linear Transforms 线性变换
Scale Matrix 缩放矩阵
Reflection Matrix 翻转矩阵
沿y轴水平翻转:
Shear Matrix 剪切矩阵
Rotate Matrix 旋转矩阵
绕原点CCW(逆时针)旋转:
旋转矩阵特性
- 旋转矩阵的逆等于它的转置
- 数学上,如果一个矩阵的逆等于它的转置,则称之为 正交矩阵
Homogeneous coordinates 齐次坐标
点位齐次化
向量齐次化
- 向量具有平移不变性
齐次坐标概念的延展
- Vector + Vector = Vector
- 向量相加结果为向量
- Point - Point = Vector
- 点位相减结果为向量
- Point + Vector = Point
- 点位使用向量移动结果为点位
- Point + Point = middlePoint
- 点位相加结果为中点
Transiation Matrix 平移矩阵
Affine Transformations 仿射变换
Inverse Transform 逆变换
Composing Transform 组合变换
- 第一步:绕原点逆时针旋转45°
- 第二步:沿x轴正方向平移1个单位
如果变换的顺序发生改变,会影响变换结果
Decomposing Complex Transforms 分解复杂变换
假设左下角为点P(pX, pY);
原点为点O;
- 第一步:将点P平移至点O
- 第二步:以O为原点,将图形逆时针旋转α角度
- 第三步,将点P重新平移回(pX, pY)
















