矩阵类实例讲解

作者:创世魂

 

● 本类说明

 

本类的主要作用就是用来进行坐标转换。

我们在“画板类”中也运用了一些矩阵演示,不过用的并不是本类。

虽然不是用的本类进行转换,但是也大同小异。

另外我们在“矩阵画位图”方法中,运用了“矩阵类”中的“乘于平移矩阵”方法。

图内关于矩阵的说明,大家可以简单了解一下,实在看不懂,那么就直接看本类中的实际例子。

或者参考“画板类”中几个关于矩阵的方法。

注意:本类位于“安卓基本类”模块中,必须添加此模块才能使用。

 

 

● 建立缩放矩阵
● 建立旋转矩阵
● 建立平移矩阵
● 建立错切矩阵

 

帮助文档如下图:

以上方法都是建立对应的“矩阵对象”,建立矩阵并不会进行乘法运算,而是直接建立当前矩阵。

“多次建立”对应的矩阵也只会以“最后一次”建立的矩阵为准。

 

此处讲解“乘于错切矩阵”,其它矩阵的效果,可跳转至“画板类.乘于XX矩阵”查看。

“建立错切矩阵”“错切因子”依然是切斜角度“tan值”

可参考“画板类.乘于错切矩阵”中的相关解释。

 

代码编写如下图:

可以看到上面依旧是建立位图那一套方法。

随后定义“矩阵类”变量,调用本方法“建立错切矩阵”

参数也可以使用“求正切(3.14/4)”,同样也表示倾斜45度。

最后执行“矩阵画位图”方法绘制位图对象。

 

运行效果如下图:

最终的结果就是,导入的图片切斜了45度。

 

 

● 建立旋转矩阵3

 

帮助文档如下图:

本方法与“建立旋转矩阵”的区别,是通过“正弦值”“余弦值”进行旋转。

 

代码编写如下图:

“建立XX矩阵”代码的基础上进行简单修改即可。

需要增加“两个小数”变量。

分别调用“求正弦”“求余弦”方法,赋值给“正弦”“余弦”变量

方法内的公式的目的,是将“角度值”转换为“弧度值”,通过“弧度值”才可以进行求正弦余弦,

公式中“45”代表旋转角度,想要旋转多少度,公式内就修改成多少度。

 

运行效果如下图:

 

 

● 建立旋转矩阵2
● 建立缩放矩阵2
● 建立错切矩阵2
● 建立旋转矩阵4

 

帮助文档如下图:

以上的四个“建立XX矩阵”,都如下图所示的,会增加两个参数。

分别用来定义“中心横坐标”“中心纵坐标”

大家可以自己填写“中心横纵坐标”参数,自行查看效果,此处不再详细介绍。

代码编写参考上面的建立方法。

 

 

● 乘于平移矩阵
● 乘于缩放矩阵
● 乘于旋转矩阵
● 乘于错切矩阵

 

以上四个方法与“建立矩阵”不同之处在于,以上方法都会进行一次乘法运算(知道即可,无需深入了解)。

除此之外,本方法可连续使用多个,以达到多次“旋转或平移”的目的。

以上方法可参考“画板类.乘于XX矩阵”,此处不再进行演示。

代码编写可参考,上面的建立矩阵方法。

 

 

● 乘于缩放矩阵2
● 乘于旋转矩阵2
● 乘于错切矩阵2

 

帮助文档如下图:

以上三个“乘于XX矩阵2”的方法,和“建立XX矩阵2”相同,都增加了“两个中心坐标”参数。

此处不再详细介绍,大家可以自己填写相关参数,演示效果。

代码编写可参考,上面的建立矩阵方法。

 

 

● 乘于矩阵

 

帮助文档如下图:

本方法也进行了乘法运算,将“参数1”的矩阵和“参数2”的矩阵进行计算,最后结果返回给“参数1”的矩阵

简单来说,就是将两种矩阵结合起来。

比如说,你想让一个图形进行“平移旋转”,这个时候可以使用本方法操作。

 

代码编写如下图:

还是建立矩阵的那一套代码,这里需要定义“两个矩阵”变量。

通过“矩阵”建立一个平移矩阵,“矩阵2”建立一个旋转。

随后采用动态调用格式,通过“矩阵”变量调用“乘于矩阵”方法,参数内填写“矩阵2”

最后调用“矩阵画位图”进行位图绘制即可。

 

运行效果如下图:

最终的结果,绘制的图片首先进行了“平移”,随后会进行“90度”旋转。

当然整个过程是不可见的,会直接显示“平移旋转”后的结果。

 

 

● 取矩阵数据

 

帮助文档如下图:

本方法的作用就是用来获取矩阵的“9个分量值”

知道即可,本方法无需深入了解。

 

 

● 取逆矩阵

 

帮助文档如下图:

本方法的作用就是字面上的意思。

取当前矩阵的逆向矩阵,如果存在逆向矩阵返回“真”,并且将“逆向矩阵”赋值给“参数2”

 

代码编写如下图:

例如:我们建立平移矩阵,参数填写“负值”

然后用“取逆矩阵”方法取出逆矩阵。

最后绘制“逆向矩阵”

 

运行效果如下图:

最终的结果你会发现,即使是填写“负值”也正常绘制。

这就是“逆向矩阵”的功劳。

其它矩阵的逆向,大家可自行测试。

 

 

● 复制

 

帮助文档如下图:

顾名思义,就是将指定矩阵的内容赋值到当前矩阵内。

调用方式:“矩阵类.复制()”,本方法不进行详细介绍。

 

 

● 是否相同

 

帮助文档如下图:

顾名思义,本方法就是用来判断两个矩阵是否相同。

相同返回“真”,不相同返回“假”

调用方式:“矩阵类.是否相同()”,本方法不进行详细介绍。

 

 

● 置为多边形转换结果

 

帮助文档如下图:

简单来说就是通过两个“浮点小数数组”指定一个“源矩形”“目的矩形”形成一个转换矩阵。

 

代码编写如下图:

我们需要额外定义五个变量,分别为“一个矩阵”“两个小数数组”“两个浮点小数数组”

小数数组内设置“初始值”至少八个成员,两个成员指定一个坐标。,

“四个坐标”指定一个“矩形”,坐标顺序为逆时针方向。

矩形坐标顺序分别为:“左上角”“左下角”“右下角”“右上角”

通过“浮点小数数组.从小数数组创建”方法,创建浮点小数后,赋值给对应的变量。

然后就可以调用本方法进行转换,最后绘制位图。

 

运行效果如下图:

 

 

● 置为相乘结果

 

帮助文档如下图:

本方法和“乘于矩阵”类似,不同之处在于,本方法有三个参数。

“参数2”“参数3”相乘(也就是相结合),最后结果赋值给“参数1”

另外注意:本方法首先对“参数3”设置的矩阵进行转换,然后才是“参数2”

 

代码编写如下图:

本方法这里需要定义三个“矩阵类”变量。

“矩阵2”“矩阵3”分贝建立“平移和旋转”矩阵。

然后调用“本方法”相乘,分别填入对应参数。

在本方法内,首先会执行“旋转45度”操作,然后在进行“平移”

最后调用“矩阵画位图”绘制“矩阵1”即可。

 

运行效果如下图:

 

 

● 置为矩形转换结果

 

帮助文档如下图:

本方法与“置为多边形转换结果”类似。

不同之处是本方法是通过“小数矩形类”来定义两个矩形。

并且增加了“矩阵矩形转换方式”,本方式调用方法:“矩阵矩形转换方式.XXX”

“小数矩形类”在本教程中也多次使用,此处不再进行演示,大家自行测试。

 

 

● 置矩阵数据

 

帮助文档如下图:

本方法的作用就是用来设置矩阵的“9个分量值”

知道即可无需深入了解,因此本方法不再演示。

 

 

● 转换半径

 

帮助文档如下图:

本方法的主要作用就是用来计算矩阵转换后的“平均半径”

 

代码编写如下图:

建立一个缩放矩阵,参数填写“0.5和1”,表示横向缩放一倍,纵向不变。

随后调用本方法转换“半径100”,用“提示框”弹出结果。

 

运行效果如下图:

最终缩放后的平均半径为“70.71”

 

 

● 转换坐标

 

帮助文档如下图:

本方法和“转换半径”有些类似,不同之处本方法转换的“坐标值”值为精准值。

 

代码编写如下图:

我们直接在“转换半径”的代码上稍作修改,增加一个“坐标类”设置横纵坐标为“100”

随后调用“转换坐标”方法转换本坐标,最后利用“横纵坐标”读属性,将转换后的坐标值读取出来。

 

运行效果如下图:

最终结果,绘制的图片缩小了一半,坐标也跟着缩小了一半。

 

 

● 转换坐标数组

 

帮助文档如下图:

本方法和“转换坐标”不同之处在于,本方法可以一次性转换一堆坐标值。

填写的“浮点小数数组”成员数必须为偶数,最终的转换结果也会返回当前数组内。

“浮点小数数组”的创建可参考“置为多边形转换结果”

“浮点小数数组”取成员的办法,可参考“取文本字符宽度”方法。

 

 

● 转换矢量数组

 

帮助文档如下图:

本方法和“转换坐标数组”类似,因此不在详细介绍。

 

 

● 转换矩形

 

帮助文档如下图:

本方法简单来说,就是判断当前矩阵类进行转换后是否为“矩形”

生成的四个坐标值,将会赋值给“参数2小数矩形类”

通过“小数矩形类”“上下左右”四个属性可以获取矩形边界坐标。

本方法返回值为“真”,表示最终结果为一个矩形,相反返回假。

 

 

● 转换矩形2

 

帮助文档如下图:

本方法和“转换矩形”的区别在于,本方法的最终结果会赋值给“参数3”

 

 

● 重置

 

帮助文档如下图:

本方法的作用可将当前矩阵重置为“单位矩阵”

单位矩阵特性:任何矩阵与单位矩阵相乘都等于本身。

知道即可,无需深入了解。

 

 

● 不导致矩形变形

 

帮助文档如下图:

简单来说,本方法的作用就是判断转换后是否还是矩形。

 

 

● 为单位矩阵(读)

 

帮助文档如下图:

本读属性的作用就是用来判断当前矩阵是否为“单位矩阵”

如果是“返回真”,相反返回“假”