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

这里只是对一些概念的简单解释,有一个简单的了解吧!别人谈论的时候,自己能听得懂大概。

1.正交投影:

投影,即意味着降维操作。

所有的点都被拉平至垂直的轴(2D)或平面(3D)上。这种类型的投影称作正交投影或平行投影。

2.镜像:

镜像也叫做反射,其作用是将物体沿直线(2D中)或者平面(3D)中“翻折”,就像你和镜子中的你关系。还是很好理解的。

使缩放因子K(上一篇有提到)为-1,就很容易得到镜像变换。

3.切变:

切变是一种坐标系“扭曲”的变换,非均匀的拉伸它。切变的时候,角度会发生变化,但面积和体积不会变,比较神奇吧!

切变很少用,也称为“扭曲变换”。

4.变换的组合:

其意就是,将多个变换矩阵按照次序组合在一起。这在渲染中用得非常普遍。如,在3D世界中,在A位置处有一个物体B,我们想把这个物体渲染到任意方向、任意角度,任意位置,这一连串的动作就需要变换组合了。

5.变换的分类:

对变换的分类有很多不同标准。

首先要明白的是,变幻的类别并不是互斥的,也就是存在一些交集关系。

5.1:线性变换:

在数学上,如果满足下等式,那么映射F(a)就是线性的:

F(a+b)=F(a)+F(b)

以及:F(ka) = kF(a)

5.2:仿射变换:

简单地说,仿射变换是指线性变换后接着平移。

v ‘ = v +Mb

5.3:可逆变换:

简单总结,如果存在一个逆变换可以”撤销“元变换,那么该变换是可逆的。

即:若存在逆变换F^-1,使得:

F^-1(F(a)) = a ,对于任意的a,映射F(a)是可逆的。

5.4:等角变换:

简单地说,如果变换前后,两向量的夹角的大小和方向都不变,那么该变换是等角的。

注意!只有平移,旋转和均匀缩放是等角变换。等角变换将会保持比例不变。这里要注意喔!镜像并不是等角变换,因为夹角的方向改变啦!!哈哈..

还有,所有的等角变换都是仿射和可逆的。

5.5:正交变换:

”正交“用来描述具有某种性质的矩阵,即黑客帝国里的”Mutrix(译为”母体“)“....哈哈,拉远了!有意思.

正交变换的基本思想:轴保持互相垂直,而且不进行缩放变换。

后面会再详细讨论正交变换。

5.6:刚体变换:

只改变物体的位置和方向,物体的长度、角度、大小均不发生改变的一种变换。

注意,平移和缩放是仅有的刚体变换,镜像不被认为是刚体变换!!

所有的刚体变换都是正交、等角、可逆和仿射的!

下表列举了变换类别之间的关系。”Y“表示具有该性质,注意没有”Y“不代表完全没有这种性质!只是表示”不经常“。

时间: 2024-10-13 11:36:12

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

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

1.矩阵的行列式: 任意矩阵中都存在一个标量,称作矩阵的行列式,这里该值记为A. 2D中,A等于以基向量为两边的平行四边形的有符号面积.有符号面积是指如果平行四边形相对于原来的方位"翻转",那么面积为负. 3D中,A等于以变换后的基向量为三边的平行六面体的有符号体积.3D中,如果变换使得平行六面体"由里向外"翻转,则行列式变负. A的大小和矩阵变换导致的尺寸改变有关.IAI和面积(2D).体积(3D)的改变相关. A的符号则说明了变换矩阵是否包含镜像. A还能对矩阵

【Unity 3D】学习笔记四十五:游戏实例——击垮围墙

用这个游戏实例来总结之前我们复习的所有关于物理引擎的知识.在游戏中,发送一个球形的炮弹来击垮前面的墙.给炮弹与墙都添加了刚体组件,给炮弹绑定了粒子系统,并且在炮弹的粒子动画中添加了5组不同的颜色,显示移动轨迹. using UnityEngine; using System.Collections; public class Script_06_14 : MonoBehaviour { //炮弹对象 private GameObject obj; //准心贴图 public Texture te

【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 方位和角位移的基本概念 什么是方位.角位移? 直观的说,我们知道,物体的"方位"主要描写叙述物体的朝向,然而,"方向"和"方位"并不全然一样.向量有"方向"但没有"方位",差别在于,当一个向量指向特定方向时,能够让向量自转

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

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

java之jvm学习笔记五(实践写自己的类装载器)

java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类装载器和安全管理器是可以被动态扩展的,或者说,他们是可以由用户自己定制的,今天我们就是动手试试,怎么做这部分的实践,当然,在阅读本篇之前,至少要阅读过笔记三. 下面我们先来动态扩展一个类装载器,当然这只是一个比较小的demo,旨在让大家有个比较形象的概念. 第一步,首先定义自己的类装载器,从Clas

小猪的数据结构学习笔记(五)

小猪的数据结构学习笔记(五) 线性表之--循环链表                           --转载请注明出处:coder-pig 循环链表知识点归纳: 相关代码实现: ①判断是否为空表: ②单循环链表的存储结构 其实和单链表的结构是一样的! /*定义循环链表的存储结构*/ typedef struct Cir_List { int data; struct Cir_List *next; }Lnode; ③初始化循环单链表 代码如下: //1.循环链表的初始化 //表示一个元素,如

Boost Thread学习笔记五

多线程编程中还有一个重要的概念:Thread Local Store(TLS,线程局部存储),在boost中,TLS也被称作TSS,Thread Specific Storage.boost::thread库为我们提供了一个接口简单的TLS的面向对象的封装,以下是tss类的接口定义: class tss{public:    tss(boost::function1<void, void*>* pcleanup);    void* get() const;    void set(void*

深度学习笔记(五):LSTM

深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 深度学习笔记(三):激活函数和损失函数 深度学习笔记(四):循环神经网络的概念,结构和代码注释 深度学习笔记(五):LSTM 看到一篇讲LSTM非常清晰的文章,原文来自Understanding LSTM Networks , 译文来自理解LSTM网络 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的