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

本系列文章由birdlove1987编写,转载请注明出处。

文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425

前面有一篇文章讨论过多坐标系的问题。有的人可能会问我那么多坐标系,它们之间怎么关联呢?嘿嘿~这次的内容可以为解决这个问题打基础奥!

线性变换基础(3D数学编程中,形式转换经常是错误的根源,所以这部分大家要多多思考,仔细运算)

一般来说,方阵(就是行和列都相等的矩阵)能描述任意的线性变换,所以后面我们一般用方阵来变换

其实简单的说,线性变换就是保留直线和平行线,原点没有移动,而其他的几何性质,如长度、角度、面积和体积可能被改变

视觉的直观角度上讲,线性变换可能“拉伸”坐标系,但不会“弯曲”和“卷折”坐标系(毕竟是“线性”的变换嘛,不然可能就叫做曲线变换了)。

下面先引入一个直观的变换例子

先在单位基向量处画一个茶壶

然后我们给出一个变换矩阵

然后我们让这个茶壶的坐标按上面的矩阵经行变换

这个变换包含z轴顺时针旋转45°和不规则缩放

在讨论具体的变换之前,还必须要搞清楚,我们到底要变换什么。在这里我们所提到的变换,其内容主要就两个:变换物体变换坐标系

变换物体,意味着变换物体上所有的点,这这点将被移动到一个新的位置,我们仍使用同一坐标系来描述变换前和变换后的位置。

变换坐标,意味着物体上的点实际没有移动,我们只是在另外一个坐标系中描述它的位置而已。

其实这两种变换实际上是等价的,将物体变换一个量等价于将坐标系变换一个相反的量

ps:下面我们实现的变换都是物体变换

旋转

2D中绕原点旋转的参数只有一个:角度θ,它描述了旋转量。(逆时针旋转经常被认为是正方向,顺时针方向时负方向

根据几何知识我们可知旋转矩阵应该为

在3D场景中,一般都是绕轴旋转,并且在绕轴旋转θ°时,必须知道哪个方向别认为“正”,哪个方向被认为“负”。

在左手坐标系中定义此方向的规则为左手规则

左手坐标系
从哪里看 正方向 负方向
从轴的负端点向正端点看 逆时针 顺时针
从轴的正端点向负端点看 顺时针 逆时针

绕轴变换中最为常见的就是绕坐标轴旋转

X轴

可得到变换矩阵

同理得到Y轴和Z轴的变换公式

Y轴

Z轴

ps:对于任意轴的旋转,可能等我们学完了平移,将任意轴平移旋转至坐标轴变换后在移后即可。

缩放

通过比例因子K按比例变大或缩小来缩放物体。

如果在各方向应用同比例的缩放,且沿原点“扩张”物体,那么就是均匀缩放。(均匀缩放可以保持物体的角度和比例不变)

如果需要挤压或拉伸物体,在不同方向应用不同的因子即可,这称作非均匀缩放。(非均匀缩放时,物体角度将发生变化)

ps:如果 |k|<1 ,物体将变短,如果 |k|>1,物体变长。如果 |k|=0,就是正交投影。

最简单的缩放方法是沿着每个坐标轴应用单独的缩放因子。

2D中有两个缩放因子,。缩放矩阵为:

缩放实例

对于3D,需要增加第三个缩放因子,3D缩放矩阵:

正交投影(平行投影)(投影意味着降维操作)

有一种投影方法是在某个方向上用零作为缩放因子。这种情况下,所有点都被拉平至垂直的轴或平面上,这种投影称作正交投影。

最简单的投影方式是向坐标轴或平面投影。

在2D环境下,向 x 轴投影

在2D环境下,向 y 轴投影

在3D环境下,向 xy 平面投影、向xz平面投影和向yz平面投影的矩阵

正交投影效果图

镜像(反射)

镜像是一种变换,起、其作用是将物体沿直线,或平面翻折。

ps:一个物体只能镜像一次,如果再次镜像物体将翻回正面,这和在原位置旋转物体的效果一样了。

在2D环境下,沿任意轴镜像的矩阵为

其中向量n为任意轴方向的单位向量,例如如果任意轴为x轴,则n=(1,0),所以关于x轴的镜像矩阵为

在3D环境下,沿任意轴镜像的矩阵为

切变

切变是一种坐标系“扭曲”变换,非均匀地拉伸它。这是一种很少用到的变换,它也被称作扭曲变换

切变的时候角度会发生变化,但是令人惊奇的是面积体积保持不变

切变的基本实现思想是,某一坐标的乘积加到另一个坐标上去:x‘ = x + sy

在2D环境下,x坐标根据坐标y以参数s控制切变方向和向量的切变矩阵

在2D环境下,y坐标根据坐标x以参数s控制切变方向和向量的切变矩阵

3D坐标中的切变矩阵两个坐标轴别另一个坐标轴改变的矩阵

-End-

参考文献:(1)《3D Math Primer for Graphics and Game Development》

(2)百度百科

3D数学读书笔记——矩阵基础番外篇之线性变换,布布扣,bubuko.com

时间: 2024-12-28 14:30:00

3D数学读书笔记——矩阵基础番外篇之线性变换的相关文章

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

本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/24975031 矩阵是3D数学的重要基础,它主要用来描述两个坐标系统间的关系,通过定义一种运算而将一个坐标系中的向量转换到另一个坐标系中. 在线性代数中,矩阵就是一个以行和列形式组织的矩形数字块.向量是标量的数组,矩阵则是向量的数组. 矩阵的维度和记法 矩阵的维度被定义为它包含了多少行和多少列,一个 r * c 矩阵有 r 行.

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

本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25242725 终于要学习矩阵的平移了,通过平移可以处理很多问题,包括非坐标轴基准的变换问题,不同坐标系转换问题.嘿嘿! 行列式(其实行列式就是一种计算法则) 在任意矩阵中都存在一个标量,称作该方阵的行列式. 方阵M的行列式记作 |M| 或 det M .非方阵矩阵的行列式是未定义的. 2 * 2阶矩阵行列式的定义 3 * 3阶

3D数学读书笔记——3D中的方位与角位移

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25339595 方位和角位移的基本概念 什么是方位.角位移? 直观的说,我们知道,物体的"方位"主要描写叙述物体的朝向,然而,"方向"和"方位"并不全然一样.向量有"方向"但没有"方位",差别在于,当一个向量指向特定方向时,能够让向量自转

3D数学读书笔记——四元数

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25400659 什么是四元数 复数是由实数加上虚数单位 i 组成,其中 i2  = -1 相似地,四元数都是由实数加上三个元素 i.j.k 组成,而且它们有如下的关系: i2 = j2 = k2 = ijk = -1 每个四元数都是 1.i.j 和 k 的线性组合,即是四元数一般可表示为a + bi + cj + dk. 关于

3D数学读书笔记——向量运算及在c++上的实现

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24782661 开始之前:接上上篇说的,张宇老师说过线性代数研究的就是向量.其实严谨的说,数学中专门研究向量的分之称作线性代数,线性代数是一个非常有趣并且应用广泛的研究 领域,但它与3D数学关注的领域并不相同.3D数学主要关心向量和向量运算的几何意义. 零向量:任何集合,都存在 the additive identity el

3D数学读书笔记——多坐标系和向量基础

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24662453 第一个知识点:多坐标系 基础:仅仅要选定原点和坐标轴就能在不论什么地方建立坐标系 从问题问出发:为什么要使用多坐标系.一个3D系利用其无限延伸性.就可以包括空间中全部的点,建立一个统一的世界,这样不是更简单吗? 实践中的答案:大量实践发现.在不同的环境下使用不同的坐标系更加方便(邓爷爷说过:实践是检验真理的唯一

3D数学读书笔记——笛卡尔坐标系统

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24601215 1.3D数学是一门和计算机几何相关的学科,计算几何则是研究用数值方法解决几何问题的学科.3D数学讲解如何在3D空间中精确度量位置.距离和角度. 2.在3D数学里使用最广泛的度量体系是笛卡尔坐标系统.(笛卡尔数学由法国数学家Rene Descartes发明,并以他的名字命名) 3.关于数的类型:实数包含有理数和无

Linux网络基础番外篇(IP、MAC、TCP)

linux网络管理 计算机网络 MACMAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制.介质访问控制,或称为物理地址.硬件地址,用来定义网络设备的位置.在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC地址.因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址.MAC地址(MAC Address)MAC(Medium/Media Access Control)地址,用来表示互联网上每一

齐次方程到矩阵(番外篇)

最近做题,老是遇到了一些公式比如An=An-1+An-2,然后给你一个巨大n的数据,要你求An的值,然后以前做起来,还是比较的顺手的,但是时间抹去了记得的记忆,说明没有学会,于是又花掉一些时间,来回顾以及学习快速矩阵算法. 其实,每一次我们想到快速矩阵的时候,就可能会产生一个问题? 矩阵该怎么构造,在已经知道了公式的情况下. 不妨以一个我们所收悉的列子:(引自一位 http://www.cnblogs.com/frog112111/archive/2013/05/19/3087648.html)