文档开发者中心
我的

鸿蒙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();

此处创建的矩阵样式为

image.png代表没有进行任何变换,因为它和运算后为​,坐标没有任何变化​

2、matrix.Scale(2,3)

矩阵变换为image.png这个矩阵如果和image.png进行左乘,则变为image.png,表明横坐标变为2倍,纵坐标变为3倍

3、matrix.setTranslate(100,200);

矩阵变换为image.png这个矩阵如果和​进行左乘,则变为image.png代表x轴坐标加了100,y轴坐标加了200

4、matrix.setSkew(2,3);

矩阵变换为image.png这个矩阵如果和​进行左乘,则变为image.png代表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:代表左乘,可以连续多次左乘

 那么左乘、右乘的对象是什么?当然是创建的矩阵了,如果有一个矩阵image.png右乘一个​得到image.png。如果是左乘一个得到image.png,可见左乘和右乘得到的结果是不一样的,那如果我还是对进行操作,那得到的坐标也是不一样的。​

点赞
2
收藏
回复
分享
举报
浏览383 发布于2022-02-11 08:59未知归属地
全部评论
最多点赞
最新发布
最早发布
暂无评论
暂无评论
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。