Android Matrix,getValues() 返回什么?

发布于 2024-09-08 18:56:54 字数 257 浏览 4 评论 0原文

我无法计算出以下代码的返回值 pMeasure = PathMeasure, m = Matrix, distCount 是沿路径

pMeasure.getMatrix(distCount, m, 0x01 | 0x02); 
m.getValues(float[] values)

float[2] & 的距离float[5] 是位置 x &分别是 y,但我无法弄清楚其余部分,

再次感谢任何帮助。

i'm having trouble working out the returned values of the below code pMeasure = PathMeasure, m = Matrix, distCount is the distance along the path

pMeasure.getMatrix(distCount, m, 0x01 | 0x02); 
m.getValues(float[] values)

float[2] & float[5] are position x & y respectively but i can't figure out the rest

any help once again appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痴梦一场 2024-09-15 18:56:54

取自 Matrix 类文档

公共静态最终 int MPERSP_0
常量值:6 (0x00000006)

公共静态最终 int MPERSP_1
常量值:7 (0x00000007)

公共静态最终 int MPERSP_2
常数值:8(0x00000008)

公共静态最终 int MSCALE_X
常量值:0 (0x00000000)

公共静态最终 int MSCALE_Y
常量值:4 (0x00000004)

公共静态最终 int MSKEW_X
常量值:1 (0x00000001)

公共静态最终 int MSKEW_Y
常量值:3 (0x00000003)

公共静态最终 int MTRANS_X
常量值:2 (0x00000002)

公共静态最终 int MTRANS_Y
常量值:5 (0x00000005)

Taken from the Matrix class documentation:

public static final int MPERSP_0
Constant Value: 6 (0x00000006)

public static final int MPERSP_1
Constant Value: 7 (0x00000007)

public static final int MPERSP_2
Constant Value: 8 (0x00000008)

public static final int MSCALE_X
Constant Value: 0 (0x00000000)

public static final int MSCALE_Y
Constant Value: 4 (0x00000004)

public static final int MSKEW_X
Constant Value: 1 (0x00000001)

public static final int MSKEW_Y
Constant Value: 3 (0x00000003)

public static final int MTRANS_X
Constant Value: 2 (0x00000002)

public static final int MTRANS_Y
Constant Value: 5 (0x00000005)

避讳 2024-09-15 18:56:54

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

Android Matrix uses skia and its row-major meaning the indices are as follows

0  1  2  
3  4  5
6  7  8

I contrast OpenGL uses indices like so

0  3  6
1  4  7
2  5  8

The "meanings" are identical in regards to matrix position.

a  b  tx
c  d  ty
0  0   1

a,b,c,d encode scale & rotation at the same time. tx/ty encode translation. If you do m.getValues(vals); then vals[2] == tx, vals[5] == ty, and the rest is straight forward. The best way to extract translation is to make a vector

float[] point = {0, 0};

Then map it and see where it ends up and that's your translation (which is exactly (tx, ty). Under rare circumstances its not

to get scale map a second point

float[] point2 = {1, 0};

Now take the difference rel = (point - point2) and get the length of that vector and that's your scale. To extract rotation, normalize rel and it's simple to get it's standard angle.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文