跟紧工作需求学习,于是抽了点时间看了看用于2D3D转换的矩阵内容。

  矩阵在3D数学中,可以用来描述两个坐标系间 的关系,通过定义的运算能够把一个坐标系中的向量转换到另一个坐标系中。在线性代数中,矩阵就是以行和列形式组织的,向量是标量的数组,矩阵是向量的数组。

  一般来说,方阵能够描述任意线性变换。线性变换保留了直线和平行线,但是原点没有移动。线性变换保留直线的同时,其他的几何性质如长度、角度、面积和体积可能在变换中发生了改变。线性变换可能“拉伸”,但不会“弯折”、”卷折“坐标系。

  任意向量的一种扩写形式

  

  右边的单位向量就是x、y、z轴。向量的每个坐标都表明了平行于相应坐标轴的有向位移。一个坐标系能用任意3个线性无关的基向量定义,我们以笛卡尔坐标轴为例子,指定p q r为x y z轴正方向的单位向量,构建一个3 x 3矩阵M。

  

  

  此时如果用一个向量乘以该矩阵,就相当于一次坐标转换。(我们可以把”转换“和”乘法“等价)

  而在使用矩阵运算时,矩阵的乘积不能表示平移变换。因此引入了第四个分量w,w称为比例因子,一般为1。当w不为0时,表示一个坐标当w为0时,在数学上代表无穷远点,即并非一个具体的坐标位置,而是一个具有大小和方向的向量。从而,通过w我们就可以用同一系统表示两种不同的量。

  在OPENGL中,作为坐标点时,w参数为1,否则为0,如此一来,所有的几何变换和向量运算都可以用相同的矩阵乘积进行运算和变换,当一个向量和一个矩阵相乘时所得的结果也是向量。

  

  下图显示了应用到点 (2,1) 的多个线性转换。

                                 

  某些其他转换(如转换)不是线性的,并且不能表示为2×2矩阵的乘法。 假设要从点开始 (2,1) ,将其旋转90度,将其在 x 方向上转换为3个单位,并在 y 方向转换为4个单位。 可以通过使用矩阵乘法后跟矩阵加法实现此目的。

                                                      

  线性转换 (按 2 x 2 矩阵相乘) 后接 (添加1×2矩阵) 称为仿射转换。 将仿射转换存储在一对矩阵中的替代方法 (一个用于线性部分,另一个用于平移) ,用于在3×3矩阵中存储整个转换。 若要执行此操作,平面中的点必须存储在具有虚第三坐标的1×3矩阵中。 常见的方法是使所有第三个坐标等于1。 例如,点 (2,1) 由矩阵 [2 1 1] 表示。 下图显示了一个仿射转换 (旋转90度;在 x 方向上转换3个单位,在 y 方向上4个单位的) 表示为按单一3×3矩阵的乘法。

  点 (2,1) 映射到点 (2,6) 。 请注意,3 x 3 矩阵的第三列包含数字0,0,1。 这对于仿射转换的 3 x 3 矩阵总是如此。 重要数字是第1列和第2列中的六个数字。 矩阵的左上2×2部分表示转换的线性部分,第三行中的前两个条目表示平移。

                    

                    

  复合转换是一系列转换,一个后跟另一个。 对矩阵[2 1 1]表示的点(2,1)先后进行转换A B C。

    [2 1 1]ABC = [-2 5 1]

  不是将复合转换的三个部分存储在三个单独的矩阵中,而是可以将 A、B 和 C 相乘,以获取存储整个复合转换的单个3×3矩阵。

    [2 1 1]D = [-2 5 1]

  

  复合转换的顺序很重要。 通常,旋转,然后缩放,然后平移与缩放、旋转和平移不同。 同样,矩阵相乘的顺序也非常重要。

  参考链接:https://docs.microsoft.com/zh-cn/dotnet/desktop/winforms/advanced/matrix-representation-of-transformations?view=netframeworkdesktop-4.8

数学:3D和矩阵的更多相关文章

  1. 3D数学读书笔记——矩阵基础番外篇之线性变换

    本系列文章由birdlove1987编写.转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章 ...

  2. 浅谈数学上的矩阵——矩阵的乘法运算的概念及C++上的实现模板

    首先让我们来谈一谈数学意义上的矩阵(在座各位也可以简单地将它理解为一个二维数组) 这样可以帮助我们理解矩阵加速及其运用的原理(矩阵加速是一个及其玄学的东西,所以请重点理解矩阵乘法)  这里给出一段严格 ...

  3. 3D数学读书笔记——矩阵基础

     本系列文章由birdlove1987编写,转载请注明出处.    文章链接:http://blog.csdn.net/zhurui_idea/article/details/24975031   矩 ...

  4. 3D数学读书笔记——矩阵进阶

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25242725 最终要学习矩阵 ...

  5. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

  6. P3216 [HNOI2011]数学作业 (矩阵快速幂)

    P3216 [HNOI2011]数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 NN 和 MM ,要求计算 Concatenate (1 .. N ...

  7. 机器学习中的数学-强大的矩阵奇异值分解(SVD)及其应用

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  8. BZOJ 2326 数学作业(矩阵)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2326 题意:定义Concatenate(1,N)=1234567……n.比如Concat ...

  9. [BZOJ 2326] [HNOI2011] 数学作业 【矩阵乘法】

    题目链接:BZOJ - 2326 题目分析 数据范围达到了 10^18 ,显然需要矩阵乘法了! 可以发现,向数字尾部添加一个数字 x 的过程就是 Num = Num * 10^k + x .其中 k ...

随机推荐

  1. 【秒懂音视频开发】23_H.264编码

    本文主要介绍一种非常流行的视频编码:H.264. 计算一下:10秒钟1080p(1920x1080).30fps的YUV420P原始视频,需要占用多大的存储空间? (10 * 30) * (1920 ...

  2. 在 Apache 上使用网络安全服务(NSS)实现 HTTPS--RHCE 系列(八)

        在 Apache 上使用网络安全服务(NSS)实现 HTTPS--RHCE 系列(八) 发布:linux培训 来源:Linux认证 时间:2015-12-21 15:26 分享到: 达内lin ...

  3. 如何在CentOS 7上安装Htop

    在本教程中,我们将向您介绍如何在CentOS 7服务器上安装和配置Htop.对于那些不知道的人,Htop 是为Linux编写的一个交互式实时系统监视进程查看器.它被设计为替代Unix程序的顶部.它显示 ...

  4. iPhone手机怎么和电脑互传文件,一条数据线搞定

    官方的方法是,通过iTunes进行文件的传输.传个文件还要特意安装个iTunes,实在是麻烦. 其实我们只需要在苹果应用商店app store下载Documents这个文件就可以. 另外,Docume ...

  5. 039.Python使用TCP实现多用户并发

    使用TCP实现多用户并发 在前面的实验中,TCP建立连接时,只能允许一个用户连接,当第二个用户建立连接时,发送的信息,服务端是没有办法接受,只有当第一个用户退出时,才能接受到第二个用户的请求,并实现通 ...

  6. ubuntu中安装meld工具-(转自sukhoi27smk)

    Ubuntu下文件/目录对比的软件Meld可能有很多用户还不是很熟悉,下文就给大家介绍如何安装Meld和移植到Gedit下.具体内容如下所述. Meld允许用户查看文件.目录间的变化.很容易移植到Ge ...

  7. -bash: $'\201ccd': δ 的错误是linux编码问题(Centos7)

    如果目录是中文目录,你的编码为: [root@dbbd-api01 ~]# cat /etc/locale.conf LANG=zh_CN.GB18030 [root@dbbd-api01 ~]# 那 ...

  8. Python数模笔记-Scipy库(1)线性规划问题

    1.最优化问题建模 最优化问题的三要素是决策变量.目标函数和约束条件. (1)分析影响结果的因素是什么,确定决策变量 (2)决策变量与优化目标的关系是什么,确定目标函数 (3)决策变量所受的限制条件是 ...

  9. unity给子物体添加Shader

    分享两个自制Shader:http://pan.baidu.com/s/1nuRcF2L Shader存放路径:\Assets\Resources\Shader\ 定义Shader类型: public ...

  10. 某SPI设备驱动引起的开关机压力测试死机问题一例

    环境 硬件平台:某ARM SoC 软件平台:Linux 问题现象:产品做开关机压力测试,发生死机. 分析 用crash工具解析两次死机dump信息,得到死机前的log如下.两次死机的backtrace ...