我对 WPF 转换类的理解是Matrix类表示 2D 均质坐标的 3x3 行主矩阵,其中最后一列始终为 (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