【问题标题】:Android Matrix, what does getValues() return?Android Matrix,getValues() 返回什么?
【发布时间】: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 但我不知道其余的

再次感谢任何帮助。

【问题讨论】:

    标签: android path matrix


    【解决方案1】:

    取自Matrix class documentation

    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)

    【讨论】:

    • 谢谢,但是透视在这方面是什么意思?
    • 老实说,我不知道.. 我敢打赌这些值是保留的,它们存在的原因可能是为了完成矩阵。在这里您可以找到有关此主题的更多信息:mobiledevelop.blogspot.com/2009/02/…
    • Android 使用skia,我检查了androids 矩阵类的源代码,在其C++ 核心中,它只是将Matrix 与SkMatrix 粘合在一起。矩阵是 3x3 行主要的。因为这个 MSCALE_X/Y 实际上不是比例。只要不涉及旋转,它就是规模。如果矩阵对旋转进行编码,则需要进行额外的数学运算来计算比例。 MPERSP 用于计算“z”坐标,默认 z=1。如果 z !=1 那么 x=x/z; y=y/z; z=z/z=1。一般来说,你不需要担心它z。就像用于 3D 的 opengl 4x4,除了在 android 上它的 3x3 用于 2D
    【解决方案2】:

    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 归一化,很容易得到它的标准角度。

    【讨论】:

      猜你喜欢
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2014-06-16
      相关资源
      最近更新 更多