3D数学--学习笔记(六):我对矩阵的一些简单理解总结

1.矩阵的行列式:

任意矩阵中都存在一个标量,称作矩阵的行列式,这里该值记为A。

2D中,A等于以基向量为两边的平行四边形的有符号面积。有符号面积是指如果平行四边形相对于原来的方位“翻转”,那么面积为负。

3D中,A等于以变换后的基向量为三边的平行六面体的有符号体积。3D中,如果变换使得平行六面体“由里向外”翻转,则行列式变负。

A的大小和矩阵变换导致的尺寸改变有关。IAI和面积(2D)、体积(3D)的改变相关。

A的符号则说明了变换矩阵是否包含镜像。

A还能对矩阵进行分类。若A = 0,那么该矩阵包含投影,若A<0,则该矩阵包含镜像。

2.矩阵的逆:

矩阵的逆在几何上非常有用,因为它使得我们可以计算变换的“反向”或“相反”变换--能“撤销”原变换的变换。

3.正交矩阵:

若方阵M是正交的,则当且仅当M与它的转置矩阵MT的乘积等于单位矩阵。

正交矩阵对我们非常有用,因为它可以计算矩阵的逆矩阵。

4.矩阵正交化:

为什么需要“矩阵正交化”呢?

因为有时候设备获取的数据不准确或者浮点数的运算导致出现差错,于是就得到了“坏数据”,这对矩阵的运算是非常不利的,这种错误称为“矩阵蠕变”。这些情况下,我们就需要矩阵正交化,得到一个正交矩阵,这个矩阵要尽可能的和原矩阵保持相同(希望如此)。

5.矩阵形式的优缺点:

优点:

1.矩阵最重要的性质就是能在物体和惯性坐标系间旋转向量,这是其他描述方法做不到的。为了旋转向量,必须将方位转换成矩阵形式。

2.利用矩阵可以“打破”嵌套坐标系间的关系。

3.由于矩阵的某些性质,使得很多计算很方便。如用矩阵形式表达角位移时,逆矩阵就是“反”角位移。因为旋转矩阵是正交的,所以这个计算只是简单的矩阵转置运算。

缺点:

1.矩阵运算会占用大量内存。显然,矩阵用9个数来保存方位,这是很耗资源的,其实只需要3个就够了。假设现在做的是一个人的模型动画,该模型被分解为15个块。动画的完成严格的控制着子块和父块之间的相对方位。假设每一帧要保存一个方位,动画频率为15Hz,这意味着每秒要保存255(15*15)个方位。使用矩阵和32位浮点数,每一帧将有8100字节(32位,即一个数4字节,矩阵有9个数,于是一个矩阵用的字节数:9*4 = 36.又有255个方位要保存,即255个矩阵,255*36
= 8100字节),而使用欧拉角,同样的数据只需2700字节(因为欧拉角只用3个数就可以了!)。

2.矩阵对于人们来说,理解不够直观!

3.矩阵有可能是病态的,因为矩阵使用9个数,其实只需要3个数就够了。即,矩阵带有六阶冗余。描述方位的矩阵必须满足6个限制条件。行必须是单位向量,而且他们必须互相垂直。由于限制多,所以如果有数值异常就会导致矩阵运算出问题出现非预期行为。

3D数学--学习笔记(六):我对矩阵的一些简单理解总结,码迷,mamicode.com

时间: 2024-08-28 08:10:43

3D数学--学习笔记(六):我对矩阵的一些简单理解总结的相关文章

【Unity 3D】学习笔记二十九:游戏实例——简单小地图制作

任何的学习,光看不练是学不好的.所以这次就总结回顾下怎么制作MMROPG类游戏中的小地图.在MMROPG类游戏里,主角在游戏世界里走动时,一般在屏幕右上角都会有一个区域来显示当前游戏场景的小地图.主角在游戏世界里走动,小地图里代表着主角的小标记也会随之移动.那怎么实现咧? 首先需要确定两个贴图,第一个是右上角的小地图背景贴图,应该是从Y轴俯视向下截取主角所在的位置大地图.第二个就是主角的位置大贴图.在本例中,因为没有学习unity地图制作,所以地图用一个面对象代替,主角用立方体代替,使用GUI来

3D数学--学习笔记(五):一些概念总结(避免遗忘!)

这里只是对一些概念的简单解释,有一个简单的了解吧!别人谈论的时候,自己能听得懂大概. 1.正交投影: 投影,即意味着降维操作. 所有的点都被拉平至垂直的轴(2D)或平面(3D)上.这种类型的投影称作正交投影或平行投影. 2.镜像: 镜像也叫做反射,其作用是将物体沿直线(2D中)或者平面(3D)中"翻折",就像你和镜子中的你关系.还是很好理解的. 使缩放因子K(上一篇有提到)为-1,就很容易得到镜像变换. 3.切变: 切变是一种坐标系"扭曲"的变换,非均匀的拉伸它.切

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

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

【Unity 3D】学习笔记二十六:unity游戏脚本(六)

在3D游戏世界中,任何一个游戏对象在创建的时候都会附带Transform(变换)组件,并且该组件是无法删除的,也不应该删除.在unity中,Transform面板一共有3个属性: Position  (位置) Rotation(旋转) Scale(缩放) 这三个值都是用来调整游戏对象在游戏界面中的位置,状态等相关参数. Position  (位置) 任何一个游戏对象的三维坐标都保存在Vector3容器中,该容器记录对象在X轴,Y轴,Z轴的坐标.一旦Vector33容器中的坐标发生变化,那么Sce

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

本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章讨论过多坐标系的问题.有的人可能会问我那么多坐标系,它们之间怎么关联呢?嘿嘿~这次的内容可以为解决这个问题打基础奥! 线性变换基础(3D数学编程中,形式转换经常是错误的根源,所以这部分大家要多多思考,仔细运算) 一般来说,方阵(就是行和列都相等的矩阵)能描述任意的线性变换,所以后面我们一般用方阵来变

【Unity 3D】学习笔记四十六:输入与控制——键盘事件

在游戏中,玩家控制主角移动,按键攻击,选择行走.都需要在程序中监听玩家的输入.unity为开发者提供了input库,来支持键盘事件,鼠标事件以及触摸事件.本文主要回顾键盘事件,以后会逐文复习鼠标以及触摸事件. 键盘事件 一般的PC键盘有104个不同的按键,在程序中通过监听这些按键事件,从而进一步执行逻辑操作.如:射击游戏中,W表示前进,S表示后退,A表示左移,D表示右移. 按下事件 在脚本中,用input.GetKeyDown( )方法将按键值作为参数,监听此按键是否被按下.按下返回true,否

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

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

【Unity 3D】学习笔记二十八:unity工具类

unity为开发者提供了很多方便开发的工具,他们都是由系统封装的一些功能和方法.比如说:实现时间的time类,获取随机数的Random.Range( )方法等等. 时间类 time类,主要用来获取当前的系统时间. using UnityEngine; using System.Collections; public class Script_04_13 : MonoBehaviour { void OnGUI() { GUILayout.Label("当前游戏时间:" + Time.t

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

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