Android Matrix变换
来源:互联网 发布:2018房价知乎 编辑:程序博客网 时间:2024/05/24 01:44
Matrix变换公式:
left [ matrix {scalex # skewx # transx ## skewy # scaley # transy ## persp0 # persp1 #persp2} right ] * left [ matrix{x ## y ## 1} right ] = left [ matrix{x^’ ## y^’ ## 1} right ]
Matrix无参数初始化或reset后是单位矩阵:
left [ matrix{1 # 0 # 0 ## 0 # 1 # 0 ## 0 # 0 # 1} right ]
五种掩码类型(单位,平移,缩放,仿射和透视):
enum TypeMask { kIdentity_Mask = 0, kTranslate_Mask = 0x01, //!< set if the matrix has translation kScale_Mask = 0x02, //!< set if the matrix has X or Y scale kAffine_Mask = 0x04, //!< set if the matrix skews or rotates kPerspective_Mask = 0x08 //!< set if the matrix is in perspective };
Matrix的旋转变换:
I.以原点为中心旋转
对于离原点距离为r,与X轴夹角为a的原始点R0(X0,Y0):
left lbrace matrix{ X_{0} = r cos(a) ## Y_{0} = r sin(a)} right none
旋转b角后,新的点R1(X1,Y1):
left lbrace matrix{ X_{1} = r cos(a+b) = r(cos(a)cos(b) - sin(a)sin(b)) = X_{0}cos(b) - Y_{0}sin(b) ## Y_{1} = r sin(a+b) = r(sin(a)cos(b) + sin(b)cos(a)) = Y_{0}cos(b) + X_{0}sin(b)} right none
三角函数公式
转换为矩阵公式即为:
left [ matrix{X_{1} ## Y_{1}} right ] = left [ matrix{cos(b) # -sin(b) ## sin(b) # cos(b)} right ] * left [ matrix{X_{0} ## Y_{0}} right ]
II. 以(px,py)为中心点旋转
以(px,py)为中心点旋转,可分为三步完成:
1. 平移坐标系到(px, py)点:
2. 以新的原点为中心旋转:
3. 平移坐标系至原始位置:
整个过程即为(注意:矩阵乘法不满足交换率):
对应函数SkMatrix::setSinCos
Matrix的错切变换:
以(px,py)为中心点做(sx,sy)错切:
对应函数SkMatrix::setSkew
preconcats和postconcats处理
初始点为P0,转换后为P1,此矩阵为M:
只有此矩阵,没有preconcats和postconcats处理时, P1 = M * P0
preconcats表示参数中的值先于给定矩阵处理(M’ = M * TKS(x,y)) 即 P1 = M’ * P0 = M * TKS(x,y) * P0
postconcats表示参数中的值在矩阵处理后再处理(M’ = TKS(x,y) * M) 即 P1 = M’ * P0 = TKS(x,y) * M * P0
以点P0(2,0),做T(1,0)平移和S(3,1)缩放:
先平移,再缩放,P1位置为(3,0);
先缩放,再平移,P1位置为(5,0);
- Android Matrix 对称变换
- Android Matrix图形变换
- Android Matrix变换
- Android:使用Matrix控制变换
- Android--Matrix图片变换处理
- android图像变换之Matrix
- 关于android中matrix变换
- Android Matrix图像变换处理
- Android--Matrix图片变换处理
- Android 图片变换处理Matrix
- android Matrix图片变换处理
- Android 使用Matrix进行图像变换
- Android 使用Matrix进行图像变换
- Android中图像变换Matrix的原理
- android 图形特效处理 Matrix控制变换
- 图形变换Matrix(从零开始学Android)
- Android中图像变换Matrix的原理
- Android中Matrix的相关变换
- 傅里叶变换
- EASY——Two Sum
- python groupby用法实战
- 编写可维护代码的中间件模式
- JVM详解-从入门到深入了解
- Android Matrix变换
- [GDKOI2014][JZOJ3572]基因模式
- ITEXT-小图片并排显示,大图片按行显示
- BFC-块级格式化上下文
- centos下的vim安装
- Temporal-Difference (TD) Learning
- hdu2087_剪花布条_KMP水题
- 大数据初步学习
- java post接口测试代码