在android的自定义View中,使用Matrix来转换坐标非常方便,其中有一个方法叫mapPoints,它的计算方式是怎么样的呢?
首先来看看Matrix矩阵长得什么样?它是一个3x3的矩阵。
在android的自定义View中,使用Matrix来转换坐标非常方便,其中有一个方法叫mapPoints,它的计算方式是怎么样的呢?
首先来看看Matrix矩阵长得什么样?它是一个3x3的矩阵。
在编程里,它对应一个长度为9的float[]数组,通过以下变量准确取到数组中相应的值。
现在再来看看,每一位的含意:
MSCALE_X 与 MSCALE_Y:x坐标和y坐标的缩放
MSKEW_X 与 MSKEW_Y:x坐标和y坐标的斜切(就是偏斜)
MTRANS_X 与 MTRANS_Y:x坐标和y坐标的平移
MPERSP_0、MPERSP_1和MPERSP_2:控制透视
好了,我们现在来看一下,mapPoints的计算过程:
val
values
=
floatArrayOf
(
2f
,
3f
,
10f
,
4f
,
5f
,
30f
,
0f
,
0f
,
1f
val
matrix
=
Matrix
(
)
matrix
.
setValues
(
values
)
val
pointsSrc
=
floatArrayOf
(
1f
,
2f
)
val
pointsDst
=
FloatArray
(
2
)
matrix
.
mapPoints
(
pointsDst
,
pointsSrc
)
val
points2
=
FloatArray
(
2
)
points2
[
0
]
=
values
[
Matrix
.
MSCALE_X
]
*
pointsSrc
[
0
]
+
values
[
Matrix
.
MSKEW_X
]
*
pointsSrc
[
1
]
+
values
[
Matrix
.
MTRANS_X
]
points2
[
1
]
=
values
[
Matrix
.
MSCALE_Y
]
*
pointsSrc
[
1
]
+
values
[
Matrix
.
MSKEW_Y
]
*
pointsSrc
[
0
]
+
values
[
Matrix
.
MTRANS_Y
]
那么mapPoints的计算方式就如上所示了。
文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_40763897/article/details/125586197