`
lovnet
  • 浏览: 6897852 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

MatrixTransform之相关矩阵运算

阅读更多

最近在学习MatrixTransform,发现对之前学的矩阵乘法竟然忘的一干二净,下面就是这个基础知识的整理。

矩阵加法

通常的矩阵加法被定义在两个相同大小的矩阵。两个m×n矩阵A和B的和,标记为A+B,一样是个m×n矩阵,其内的各元素为其相对应元素相加后的值。例如:

973b1461ec9b7c49a781e39aa22623c2

也可以做矩阵的减法,只要其大小相同的话。A-B内的各元素为其相对应元素相减后的值,且此矩阵会和A、B有相同大小。例如:

8e411287f504ba4fe4b6a9a93d2a4f03

矩阵乘法

若给出一矩阵 A 及一数字 c,可定义标量积 cA,其中 (cA)[i, j] = cA[i, j]。 例如:

8951d4762a38dcb7a372bb6a5ee0d623

设A和B是两个给定如下的矩阵:

95d86d25f324076227a08a1de8ffebbb b692829bf4f96dbcadb20d1de06aa8a6

8dd1d643ed85e951c415a39cf690b659

举例来说:

7b62cda9a2e78e8414806c5aea486b5cd3c223ed4af4939e565893b2f3136bae

MatrixTransform 的矩阵运算

假设我们有个点(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"/> 

从矩阵运算的角度,就是如下矩阵运算:

image

上述表达式中,乘号左面矩阵的列为为系数表,右边矩阵为向量表。例如,第一行是[X Y 1],因此将X乘上第一个向量,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

分享到:
评论

相关推荐

    图形转换矩阵特效

    这些变换可以通过矩阵运算来表示,因为矩阵提供了一种简洁且高效的方式来描述几何变换。在WPF中,`MatrixTransform`类是实现这种转换的主要工具。这个类允许你创建一个自定义的2x3或3x3矩阵,应用到UI元素上,从而...

    MatrixTransform.doc

    MatrixTransform.doc 看看

    svg矩阵变换

    这个矩阵可以与图形的坐标点进行乘法运算,从而实现各种变换效果。 1. **translate(tx, ty)**:平移变换。在矩阵中,dx和dy分别对应tx和ty,其他元素保持不变。 2. **rotate(angle)**:旋转变换。根据角度计算旋转...

    wpf 转动滚轮以鼠标为中心放大缩小控件

    本篇将详细介绍如何在WPF中实现这一效果,主要涉及的核心技术是MatrixTransform矩阵变换。 首先,我们需要了解MatrixTransform的基本概念。MatrixTransform是WPF中的一个转换类,它允许我们使用二维矩阵进行复杂的...

    osg 矩阵操作

    osg::MatrixTransform* transformNode = new osg::MatrixTransform(totalTransform); transformNode->addChild(geode); ``` ### 矩阵栈 osg还提供了矩阵栈的概念,允许在一个上下文中管理多个变换。`osg::...

    WPF3D动画效果演示(超绚)C#

    例如,我们可以通过修改`MatrixTransform3D`的矩阵来改变图片的位置和角度,实现图片的浮动效果。这通常涉及到平移、旋转和平滑过渡的动画。 **3. 动态缩放** 动态缩放可以通过`ScaleTransform3D`实现。我们可以...

    wpf图像透视变换

    总之,WPF的图像四顶点透视变换是通过矩阵运算实现的一种图形变换技术,它为开发者提供了丰富的视觉效果和创新的设计可能。通过理解和实践,我们可以利用这一功能创建出更具吸引力的WPF应用程序。

    JSMatrixTransform:在 JS 中使用矩阵的示例

    这个主题,"JSMatrixTransform",主要关注如何利用矩阵运算来改变元素的位置、缩放、旋转和倾斜等属性。这里我们将深入探讨矩阵变换的基本概念、在JavaScript中的应用以及如何在实际项目中实现它们。 矩阵在数学上...

    C# 3D图片旋转

    首先,3D图像的基本原理是基于三维坐标系,通过矩阵运算实现物体的平移、旋转和缩放。在C#中,可以使用System.Numerics命名空间下的Vector3、Matrix4x4等结构来表示3D坐标和变换矩阵。旋转操作通常由欧拉角(yaw、...

    WPF图片反转效果

    MatrixTransform允许我们通过矩阵运算来改变元素的形状、大小和位置。在图片反转效果中,我们可以创建一个反向的缩放矩阵来实现图片翻转。下面是一个使用MatrixTransform的例子: ```xml <MatrixTransform ...

    WPF写的简单多点触控程序

    例如,在`ManipulationDelta`事件处理程序中,通常会根据输入的`ManipulationDeltaEventArgs`来更新`MatrixTransform`的矩阵,以反映用户的触摸动作。这可能包括改变矩阵的缩放元素来实现缩放,改变旋转元素来实现...

    VS实现的仿射变换

    总的来说,VS实现的仿射变换涉及到图形库的使用,矩阵运算以及图形绘制的基本操作。通过理解这些基本原理和API,我们可以灵活地在VS环境下实现各种复杂的几何变换效果。无论是C++还是C#,都能为开发者提供丰富的工具...

    Osg中能够使用3Dmax的动画FBX文件库

    7. **播放动画**:Osg提供了多种方法来播放动画,包括使用`osg::AnimationPath`或通过更新`osg::MatrixTransform`的矩阵。根据FBX动画的数据结构,你需要编写适当的更新函数来驱动动画。 在整个过程中,需要注意...

    Silverlight2.0实例-〖3D 动画〗

    3. **MatrixTransform3D**:通过矩阵运算来实现复杂的3D变换,包括视角、投影和世界坐标系的设置。 4. **Viewport3DVisual**:这是承载3D内容的容器,相当于2D视图中的Canvas,可以放置3D模型和动画。 5. **故事板...

    OpenSceneGraph函数

    `osg::MatrixTransform` 类是 OpenSceneGraph 中用于变换矩阵的核心类之一,它提供了一种简便的方式来处理图形的旋转、缩放和平移操作。 ##### 矩阵变换实例 创建 `osg::MatrixTransform` 对象,并设置变换矩阵: ...

    图片缩放(鼠标缩放,Touch缩放)

    本例中包含鼠标缩放和Touch缩放,都是可以运行的,可以直接复制到项目中去。 贴段代码: ManipulationDelta="image_ManipulationDelta" ... <MatrixTransform></MatrixTransform> </ScrollViewer>

    (4)silverlight通用绘图属性

    TransformGroup和MatrixTransform是常用的变换类,它们可以组合多个变换效果,或通过矩阵运算实现复杂的变换。 4. **布局属性**:在绘制图形时,Position、Margin和Alignment等布局属性也非常重要。Position决定了...

    WPF开发随笔收录-心电图曲线绘制.doc

    MatrixTransform是一个矩阵变换,可以用来实现缩放、旋转、平移等变换。 六、心电图曲线绘制的优化 心电图曲线绘制需要优化,以提高绘制速度。在心电图曲线绘制中,可以使用缓冲区来存储数据,然后通过线程定时推...

    OSG场景单元相关操作

    每个3D模型(由`osg::Node`表示)可以通过`addChild()`方法添加到`MatrixTransform`节点,然后通过`setMatrix()`方法设置相应的变换矩阵,从而改变模型的位置、形状或朝向。 在实际的OSG程序中,通常会结合使用多种...

    WPF实现控件的移动、旋转、拉伸的Demo

    WPF 实现控件的移动 拖放 旋转功能。 实现了控件的自定义旋转、拉伸旋转功能 实现的文档介绍见博客园 一个小Demo主要是配合文档使用的 但不知道博客园中如何传代码 就穿到这了 若觉得对您有帮助可以下下来看看。

Global site tag (gtag.js) - Google Analytics