C# 向量。乘法忽略矩阵的偏移值

C# 向量。乘法忽略矩阵的偏移值,c#,wpf,linear-algebra,matrix-multiplication,homogenous-transformation,C#,Wpf,Linear Algebra,Matrix Multiplication,Homogenous Transformation,我对WPF转换类的理解是类(0,0,1)。我理解这种设计的原因是为了便于将转换表示为矩阵乘法,与旋转、缩放和倾斜转换的方式相同,而不是单独表示为向量,如果使用2x2矩阵,则必须使用向量 因此,我的期望是,当一个矩阵包含一个平移时,结果向量应该被平移。在使用WPF矩阵类时,我似乎没有遇到这种情况,那么我做错了什么 Matrix m = new Matrix(); m.Translate(12, 34); Vector v = new Vector(100, 200); Vector r = Ve

我对WPF转换类的理解是类
(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

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

对,但回答您自己的问题是否合乎犹太教?是的,建议这样做。它节省了其他人的时间,并帮助其他人面对同样的问题。