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) も調べました。しかし、どこに問題があるのか わかりません。足りないものはありますか?