我无法计算下面代码的返回值pMeasure = PathMeasure,m = Matrix,distCount是沿路径的距离
pMeasure.getMatrix(distCount, m, 0x01 | 0x02); m.getValues(float[] values)
float [2]&float [5]分别是位置x和y,但我无法弄清楚其余部分
任何帮助再一次赞赏.
取自Matrix类文档:
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及其行主要意义索引如下
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标准化,并且很容易获得标准角度.