0

我对 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
4

1 回答 1

2

我现在明白了。向量之间的区别很重要。我应该改用 Points 和 Point.Multiply,然后结果就是我所期望的。向量是两个点之间的差异,不受平移影响,而点是受影响的特定位置。

于 2013-05-01T16:18:39.880 回答