WPF 変換クラスに関する私の理解では、Matrixクラスは、最終列が常に (0,0,1)
. この設計の理由は、2x2 行列が使用された場合に必要となるベクトルとして個別に変換するのではなく、回転、スケール、およびスキュー変換と同じ方法で、変換を行列乗算として表現できるようにするためであることを理解しています。
したがって、ベクトルに翻訳を含む行列を掛けると、結果のベクトルが翻訳されるはずです。これは、WPF マトリックス クラスを使用している場合には発生していないようですが、何が間違っているのでしょうか?
Matrix m = new Matrix();
m.Translate(12, 34);
Vector v = new Vector(100, 200);
Vector r = Vector.Multiply(v, m);
// Confirm that the matrix was translated correctly
Debug.WriteLine(m);
// Confirm that the vector has been translated
Debug.WriteLine(r);
結果:
1,0,0,1,12,34 // Matrix contains translation as expected
100,200 // Vector is unchanged - not expected