我对 postScale 方法究竟如何计算矩阵的值有点困惑。这是代码:
Matrix m1 = new Matrix();
float[] values = { 1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f };
m1.setValues(values);
Matrix m2 = new Matrix(m1);
m1.preScale(2f, 3f); //result: 2, 6, 3, 8, 15, 6, 14, 24, 9
m2.postScale(2f, 3f); //result: 1, 2, 3, 6, 7.5, 9, 3.5, 4, 4.5
文档说 preScale 的结果是 (Matrix * scale) 而 postScale 的结果是 (scale * Matrix)。但是如果我手动计算矩阵,结果会有所不同。
从右乘:
1 2 3 | 2 0 0 2 6 3
4 5 6 | 0 3 0 = 8 15 6
7 8 9 | 0 0 1 14 24 9
从左乘:
2 0 0 | 1 2 3 2 4 6
0 3 0 | 4 5 6 = 12 15 18
0 0 1 | 7 8 9 7 8 9
...左乘 (postScale) 返回的结果与我预期的不同。
我什至研究了本机实现(Matrix_Delegate.java)。但我不知道问题出在哪里。有什么我想念的吗?