跟紧工作需求学习,于是抽了点时间看了看用于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. S3待机 S4休眠

    https://hceng.cn/2018/01/18/Linux%E7%94%B5%E6%BA%90%E7%AE%A1%E7%90%86/ 1.1系统睡眠模型Suspend On (on) S0 - ...

  2. 使用GitHub绑定域名免费创建自己的博客

    通过GitHub创建一个免费的.有上传网页功能的.可以绑定域名的个人博客,或者网站. 在这之前的必要条件: 1.有自己的域名,能添加CNAME或者A记录 2.注册好了GitHub账号 方法: 1.添加 ...

  3. 使用autotools工具用configure、make、make install编译安装linux工程的详细步骤

    使用autotools工具用configure.make.make install编译安装linux工程的详细步骤 转载tmxkwzy 最后发布于2016-11-24 10:20:15 阅读数 324 ...

  4. zabbix监控之概念和安装

    一.为什么要要监控 (1)在需要的时刻,提前提醒我们服务器出问题了: (2)当出问题之后,可以找到问题的根源: (3)检查网站/服务器的可用性 1.监控范畴 硬件监控.系统监控.服务监控.性能监控.日 ...

  5. python @staticmethod @classmethod self cls方法区别

    一直在用这些东西,但是又从来没有总结过,正好今日想起来就总结一下这些东西 @staticmethod 静态方法,名义上归属类管理,不能使用类变量和实例变量,类的工具包放在函数前,不能访问类属性和实例属 ...

  6. 吐血整理!Python常用第三方库,码住!!!

    ​ Python作为一种编程语言近年来越来越受欢迎,它为什么这么火? 其中一个重要原因就是因为Python的库丰富--Python语言提供超过15万个第三方库,Python库之间广泛联系.逐层封装.几 ...

  7. ubuntu16.04服务自启动(弹控制台)

    一.设置root桌面用户登录 1.vim  /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 在最后一行添加greeter-show-manual-lo ...

  8. Proteus中包含的主流单片机列举

    经常使用Proteus的朋友面临的一个问题就是,这个设计用Proteus能仿真吗?在初级阶段,我们仅仅会参考Proteus是否有对应的器件以及器件是否有仿真模型来决断这个问题.有就能仿真,没有就不能仿 ...

  9. 北汽极狐ARCFOX与华为合作

    北汽极狐ARCFOX与华为合作 全球首款激光雷达量产车 2021年,是激光雷达"上车"的元年. 曾经价格高不可攀,只能用于Robotaxi.无人车测试的激光雷达,终于彻底具备商业化 ...

  10. python-selenium 引入包或者类的清晰写法

    #cording=gbk#一般最上面放系统自带的包或者类import os import time##第二层放第三方下载的包或者类from selenium import webdriverfrom ...