【发布时间】:2011-03-13 06:18:27
【问题描述】:
我无法计算以下代码的返回值 pMeasure = PathMeasure, m = Matrix, distCount 是沿路径的距离
pMeasure.getMatrix(distCount, m, 0x01 | 0x02);
m.getValues(float[] values)
float[2] 和 float[5] 分别是位置 x 和 y 但我不知道其余的
再次感谢任何帮助。
【问题讨论】:
我无法计算以下代码的返回值 pMeasure = PathMeasure, m = Matrix, distCount 是沿路径的距离
pMeasure.getMatrix(distCount, m, 0x01 | 0x02);
m.getValues(float[] values)
float[2] 和 float[5] 分别是位置 x 和 y 但我不知道其余的
再次感谢任何帮助。
【问题讨论】:
public static final int MPERSP_0
常数值:6 (0x00000006)public static final int MPERSP_1
常数值:7 (0x00000007)public static final int MPERSP_2
常数值:8 (0x00000008)public static final int MSCALE_X
常数值:0 (0x00000000)public static final int MSCALE_Y
常数值:4 (0x00000004)public static final int MSKEW_X
常数值:1 (0x00000001)public static final int MSKEW_Y
常数值:3 (0x00000003)public static final int MTRANS_X
常数值:2 (0x00000002)public static final int MTRANS_Y
常数值:5 (0x00000005)
【讨论】:
Android Matrix 使用skia 和它的row-major 意味着索引如下
0 1 2
3 4 5
6 7 8
我对比 OpenGL 使用的索引是这样的
0 3 6
1 4 7
2 5 8
“含义”在矩阵位置方面是相同的。
a b tx
c d ty
0 0 1
a,b,c,d 同时编码比例和旋转。 tx/ty 编码翻译。如果你这样做 m.getValues(vals);然后 vals[2] == tx, vals[5] == ty,剩下的就直截了当。提取翻译的最好方法是制作一个向量
float[] point = {0, 0};
然后映射它,看看它在哪里结束,这就是你的翻译(这正是 (tx, ty)。在极少数情况下它不是
获取比例图第二个点
float[] point2 = {1, 0};
现在取差异 rel = (point - point2) 并获得该向量的长度,这就是您的比例。要提取旋转,请将 rel 归一化,很容易得到它的标准角度。
【讨论】: