转换矩阵中的 M11 和 M21 细胞有什么区别?

What is the difference between M11 and M21 cells in a transformation Matrix?

我需要解释 SVG 输入数据并识别显示的点。

在 SVG 格式中,任何点都可以是可以应用变换 (translate/rotate/scale) 的组 ( 元素 ) 的一部分。对于每个点,我需要冒泡并应用每个祖先的变换,以便找到该点在渲染中的位置。在阅读了有关该主题的一些网页(并试图从学校记住)之后,我了解到在 .NET 中执行此操作的通常方法是使用 3x3 数学矩阵,因此我尝试找出 System.Windows.Media.Matrix class.

我学数学已经有一段时间了,我记不起这个细节了。

我在 LINQPad 中输入了以下代码:

var matrix = new Matrix(1,1,1,6,0,0);
var matrix2 = new Matrix(2,1,0,6,0,0);
var matrix3 = new Matrix(0,1,2,6,0,0);
var pts = new[]{
        new System.Windows.Point(0,0),
        new System.Windows.Point(1,1),
        new System.Windows.Point(2,2),
        new System.Windows.Point(3,3),
        new System.Windows.Point(4,4),
        new System.Windows.Point(5,5)
        }.ToArray();
pts.Select(org=>new{org,changed=matrix.Transform(org),changed2=matrix2.Transform(org),changed3=matrix3.Transform(org)}).Dump("Transformation Samples");

...并在 Matrix 构造函数中尝试不同的值。

不过这些值似乎对最终结果没有影响。 新矩阵(1,1,1,6,0,0);
新矩阵(2,1,0,6,0,0); 新矩阵(0,1,2,6,0,0); (参数 2 和 4 也是如此)

似乎唯一重要的是 两者之和(在本例中为 2)。我假设这是由于我有限的输入数据和给定其他输入数据,可以看到一些差异,这在某些视觉转换中是有意义的。

有人可以帮我吗?

也许 SVG 规范中关于变换矩阵如何工作的部分对您有用?

http://www.w3.org/TR/SVG/coords.html#TransformMatrixDefined