鸿蒙ohos.agp.utils.Matrix矩阵使用
矩阵Matrix到底如何运算的?
了解矩阵的使用,首先我们要了解矩阵的操作对象,是什么呢?
是这个
x代表x坐标,y代表y坐标,1代表平移
我们再来了解一下矩阵的意义,如下图:
注:
zoom_x:x轴缩放
zoom_y:y轴缩放
skew_x:x轴错切
skew_y:y轴错切
trans_x:x轴平移
trans_y:y轴平移
如果我们用
左乘
会得到什么呢?
代表x坐标放大到了2倍,y坐标放大到了3倍,没有进行平移
以上是理论基础,非常重要,可结合以下命令去熟悉。
Matrix
1、创建矩阵
Matrix matrix=new Matrix();此处创建的矩阵样式为
代表没有进行任何变换,因为它和
运算后为
,坐标没有任何变化
2、matrix.Scale(2,3)
矩阵变换为
这个矩阵如果和
进行左乘,则变为
,表明横坐标变为2倍,纵坐标变为3倍
3、matrix.setTranslate(100,200);
矩阵变换为
这个矩阵如果和
进行左乘,则变为
代表x轴坐标加了100,y轴坐标加了200
4、matrix.setSkew(2,3);
矩阵变换为
这个矩阵如果和
进行左乘,则变为
代表x轴坐标加了2y,y轴坐标加了3x,进行了错切操作
这里举个实例:
如果有个矩形,左上角点坐标为(0,0),右下角坐标为(1,1),我对右下角坐标进行
变换,则坐标变为(3,4)那我的矩形就变形成为(0,0)(0,1)(1,0)(3,4)组成的一个四边形了,这就是Skew错切的概念。
有了以上几个概念,我们再了解一下set,post,pre几个前缀的作用:
set:代表只能设置一次,如果我执行了setScale两次,效果只有一次的哦!!!
post:代表右乘,可以连续多次右乘
pre:代表左乘,可以连续多次左乘
那么左乘、右乘的对象是什么?当然是创建的矩阵了,如果有一个矩阵
右乘一个
得到
。如果是左乘一个
得到
,可见左乘和右乘得到的结果是不一样的,那如果我还是对
进行操作,那得到的坐标也是不一样的。
- 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
- 如您发布的内容为转载内容,请注明内容来源。
我要发帖子





































苏公安网备 32011402010933号