[转]矩阵变换原理

codingthings 2021-11-15 原文


[转]矩阵变换原理

 首先我们来看看矩阵是如何影响几何变换的:

 1.缩放操作

 观察下面的矩阵乘法

WPF中的MatrixTransform

 如果我们用[2,5]代表点(2,5),我们发现其乘以一个矩阵后变成了[4,5],与之对应的点是(4,5),这相当与其X坐标变成了原来的两倍。

 同理:

WPF中的MatrixTransform

 经过矩阵乘法后点(2,5)的Y坐标变成了原来的两倍(2,10)。

 我们可以总结出这样的结论:

WPF中的MatrixTransform

 可以将矩阵的第二和第三个元素设置为0并用矩阵中M11和M22来进行缩放操作,其中M11是对X坐标进行缩放,M22是对Y坐标进行缩放。

 2.旋转操作

 观察下面的矩阵乘法:

WPF中的MatrixTransform

 向量(-5,2)相当于是向量(2,5)按照顺时针方向旋转了90度。

 但这里并没有总结出向缩放一样的简单结论,但我们可以知道,我们可以使用如下的2X2矩阵:

WPF中的MatrixTransform

 来对点进行线性变换(旋转,缩放。注意:平移变换不是线性变换),即将点对应的矩阵乘以该线性变换矩阵便可。

 3.平移操作

 在矩阵加法中:

WPF中的MatrixTransform

 我们可以发现点(3,5)实际是在点(2,5)的基础上想X方向平移一个单位。

 同理,

WPF中的MatrixTransform

 点(2,6)实际是在点(2,5)的基础上想Y方向平移一个单位。

 我们可以得到如下结论:

 我们可以使用点对应的矩阵加上如下的矩阵

WPF中的MatrixTransform

 来实现平移操作,其中offsetX实现了X轴方向上的平移,offsetY实现了Y方向上的平移。

 4.几种操作的融合

 如果仅仅是简单的单一操作(仅旋转或仅平移等)我们就没有必要在这里进行讨论了。现在我们需要将几种几何变换揉合在一起,比如平移对象的同时旋转对象等,我们可以将矩阵乘法与加法揉合在一起进行混合运算。比如向量(2,3)先进行缩放和旋转后再分别在X与Y轴方向上平移了5个与6个单位

WPF中的MatrixTransform

 上面的这种变换称为仿射变换(affine transformation)

 注意:这种几何变换在操作的先后顺序上是需要注意的,不同的操作次序可以带来不同的结果,比如上面的例子,如果我们先进行平移操作后进行缩放与旋转将得到如下结果:

WPF中的MatrixTransform

 其实我们更希望将仿射变换中的几个矩阵存储到一个矩阵中来,一种较好的方式是将变换用到的2X2矩阵变成3X3矩阵,这也就是为什么我们WPF中的变换矩阵是3X3的。

 在如下矩阵中:

WPF中的MatrixTransform

 其中M11,M12,M21,M22就来自于线性变换矩阵,用于指示旋转缩放等线性变换;X, Y来自与平移矩阵,用于指示平移变换。

 由于最右边一列始终是001,所以WPF中的MatrixTransform类的构造函数仅仅需要指定6个参数。

发表于
2015-02-16 11:43 
新叶 
阅读(1286
评论(0
编辑 
收藏 
举报

 

版权声明:本文为codingthings原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/codingthings/p/4293936.html

[转]矩阵变换原理的更多相关文章

随机推荐

  1. 【每日算法】位运算

    目录 什么是位运算 运算符 与 基础运算 与运算的用途 判断奇偶 判断一个数是否为2的整数幂 二进制中1的个数 […]...

  2. Java数组声明创建和使用以及多维数组、Arrays类、稀疏数组

    目录 数组概述 数组声明创建 内存分析 java内存分析 堆 栈 方法区 三种初始化 静态初始化 动态初始化 […]...

  3. python文件

    目录 1. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 2. 文件的基本操作 2.1 操作文 […]...

  4. Java中九大内置对象

    1、Request对象   该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对 […]...

  5. 《利用Python进行数据分析》—pandas入门

     pandas的数据结构介绍 要使用pandas,你首先要熟悉它的两个主要数据结构:Series和DataFr […]...

  6. 简单几步为博客园添加动态动漫妹子

    一、效果图 相信从事技术开发的朋友们,都有自己的博客。 今天我们来讲讲如何让自己的博客增加一点色彩。 我们来看 […]...

  7. svn的基本使用方法

    一,svn的介绍     Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subvers […]...

  8. 腾讯视频qlv格式转换mp4普通视频方法

    先到为的电脑里打开,点击“计算机”—“工具”—“文件夹选项”   找到“查看”R […]...

展开目录

目录导航