最近在学习MatrixTransform,发现对之前学的矩阵乘法竟然忘的一干二净,下面就是这个基础知识的整理。
通常的矩阵加法被定义在两个相同大小的矩阵。两个m×n矩阵A和B的和,标记为A+B,一样是个m×n矩阵,其内的各元素为其相对应元素相加后的值。例如:
也可以做矩阵的减法,只要其大小相同的话。A-B内的各元素为其相对应元素相减后的值,且此矩阵会和A、B有相同大小。例如:
若给出一矩阵 A 及一数字 c,可定义标量积 cA,其中 (cA)[i, j] = cA[i, j]。 例如:
设A和B是两个给定如下的矩阵:
则
举例来说:
假设我们有个点(X,Y) ,我们使用 MatrixTransform 要把它转换成新的点(X1,Y1),则公式为:
X1 = X*M11 + Y*M21+ OffsetX
Y1 = X*M12 + Y*M22+ OffsetY
在Silverlight 和 WPF 中,对应的Xaml 如下:
<MatrixTransform Matrix="M11, M12, M21, M22, OffsetX, OffsetY"/>
从矩阵运算的角度,就是如下矩阵运算:
上述表达式中,乘号左面矩阵的列为为系数表,右边矩阵为向量表。例如,{dy}行是[X Y 1],因此将X乘上{dy}个向量,Y乘上第二个向量,1则乘上第三个向量。
参考资料:
矩阵
http://zh.wikipedia.org/zh-cn/%E7%9F%A9%E9%98%B5
矩阵加法
http://zh.wikipedia.org/zh-cn/%E7%9F%A9%E9%99%A3%E5%8A%A0%E6%B3%95
矩阵乘法
http://zh.wikipedia.org/zh-cn/%E7%9F%A9%E9%99%A3%E4%B9%98%E6%B3%95
3D 图形编程的数学基础(2) 矩阵及其运算
http://blog.csdn.net/vagrxie/archive/2009/12/09/4974985.aspx
WPF中的MatrixTransform
http://www.cnblogs.com/zhouyinhui/archive/2007/07/07/809553.html
MatrixTransform
http://blogs.msdn.com/jstegman/archive/2006/04/02/566939.aspx
SVG 的矢量运算
http://www.w3.org/TR/SVG11/coords.html#TransformMatrixDefined
博客堂源代码发布已经发布于Codeplex,邀请您来捉臭虫