3D数学基础 - 坐标系、向量、矩阵

一、坐标系

模型坐标系:

物体自身的坐标系,只描述自身各个顶点的情况。

在3D模型坐标系中,z方向前向如果是负值,我们称为右手坐标系,如果是正值,我们称为左手坐标系。在3DMax中使用了右手坐标系,Unity使用了左手坐标系。



 

世界坐标系:

系统的绝对坐标系,在没有建立用户坐标系之前画面上所有点的坐标都是以该坐标系的原点来确定各自的位置的。

 

摄像机坐标系:

摄像机坐标系是和观察者密切相关的坐标系。摄像机坐标系和屏幕坐标系相似,差别在于摄像机坐标系处于3D空间中而屏幕坐标系在2D平面里。摄像机坐标系能被看做是一种特殊的“物体”坐标系,该“物体”坐标系就定义在摄像机的屏幕可视区域。摄像机坐标系中,摄像机在原点,x轴向右,z轴向前(朝向屏幕内或摄像机方向),y轴向上(不是世界的上方而是摄像机本身的上方)。

 

屏幕坐标系:

屏幕投影过后的坐标系。它是一个2D的坐标系。投影分为两种,透视投影(近大远小)和正交投影(不管物体的远近,大小不变)。

 

从以上四种坐标系统来看,我们要演变它的过程到最后屏幕上我们能看到的画面,需要经过模型坐标系、世界坐标系、摄像机坐标系,再投影到屏幕上的变换过程。

 

二、 向量

 

向量,就是有方向的量,只有方向和长度,没有位置信息。我们在考察向量时,总是以世界坐标系的原点,向它所在的方向投射指定的长度。

 

2D向量: (x, y)

3D向量: (x, y, z)

4D向量: (x, y, z, w)

 

存在4D向量主要是要和矩阵进行计算。

 

向量加法: 将向量的各项分别相加。

 

V1 = (1, 0), V2 = (0.5, 0.5)

V3 = V1 + V2 = (1, 0) + (0.5, 0.5) = (1.5, 0.5)

 

向量减法: 将向量的各项分别相减。

 

V1 = (0.7, 1.5), V2 = (0.5, 0.5)

V3 = V1 + V2 = (0.7, 1.5) - (0.5, 0.5) = (0.2, 1.0)

 

向量和标量的乘法: 把标量和向量中的每个分量分别相乘。

 

V = (1, 2, 2), D = 2

R = V * D = 2 * (1, 2, 2) = (2, 4, 4)

 

向量点积: 发生在向量和向量之间。点积的结果是一个标量值。

 

V1 = (1, 0)

V2 = (0.5, 0.866)

 

点积 = Dot(V1, V2) = V1 * V2 = (1, 0) * (0.5, 0.866) = (1*0.5 + 0*0.866) = 0.5

 

向量点积的几何意义:

Dot(V1, V2) = ||V1|| * ||V2|| * cos(ɑ)

cos(ɑ) = Dot(V1, V2) / (|V1|| * ||V2||)

当V1和V2都是规范化向量时:

cos(ɑ) =V1*V2

ɑ = acos(V1*V2) = acos(0.5) = 60度

其实就是acos(点积)。

点积为1,角度为0度,点积为0,角度为90度。

 

通过此性值,我们可以知道两个向量的夹角是多大。一般的情况是,只要夹角小于90度,他们的点积总是>0,如果夹角刚好是90度,点积则=0,如果夹角大于90度,点积会是一个负数。

 

向量叉积: 运算结果还是一个向量。它的运算法则是交叉相乘。

 

V1 = (1, 0, 0)

V2 = (0, 1, 0)

 

 

 

向量叉积的几何意义

  

两个向量的叉积得到了新的向量,它垂直于原来的两个向量所在平面。当某个向量垂直于一个平面,可以看作这个平面的法向量。

叉积运算是有顺序的, V1 x V2 和 V2 x V1 的叉积值是不一样的。顺序不同,新的法向量的方向是相反的。

 

 

三、矩阵

 

矩阵的维度和记法

矩阵是一个类似于二维数组的东西,但在数学概念上是完全不一样的。矩阵的下标是(1, 1)开始,数组是(0, 0)开始。在数学上,我们一般用大写的M来表示矩阵。

 

 

 

矩阵的转置

 

矩阵的转置就是把矩阵的行变成列。比如把第一行变成第一列,第二行变成第二列。

 

向量也可以看作一种矩阵。有时候我们会说行向量、列行量,其实我们是以矩阵的概念来看它。

 

矩阵和标量的乘法

 

一个矩阵和标量相乘,就是用标量与矩阵每一个元素依次相乘。得到的矩阵与原矩阵的维度是一样的。

 

矩阵和矩阵的乘法

 

用第一个矩阵的第一行的每个分量,与第二个矩阵的第一列的分量相乘,将结果相加,得到新的分量。

 

 

矩阵与矩阵相乘,其结果与两个矩阵的顺序是有关的,不同的顺序,结果是不一样的。

 

两个内部维度不同的矩阵是不能够相乘的。

 

一个 N * M阶与S * T阶矩阵相乘,必须满足 M和S维度相同,乘法结果是一个N * T阶矩阵。

 

 

一个列向量是不能与一个3x3矩阵相乘的,但一个3x3 矩阵可以乘以一个列向量。

一个行向量可以与一个3x3矩阵相乘。

一个行向量乘以一个3x3矩阵,结果与一个相同的3x3矩阵转置后乘以相同的行向量一样,结果是一个向量(但一个是行向量,一个是列向量)。

 

单位矩阵

 

在矩阵中,从左上角到右下角这样的一条线我们称为主对角线。在主对角线上所有元素的值都是1,其它元素为0的矩阵,我们称为单位矩阵。

 

 

单位矩阵A乘以另一个矩阵B,结果矩阵为B。也就是说单位矩阵乘以一个矩阵,它不会改变这个矩阵的元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本人资源全部免费,更多资源请查看我的上传资源 ====================================================== 书 名:3D数学基础:图形与游戏开发 作 者:[美] 邓恩(Dunn F.),[美] 帕贝利(Parberry I.) 著;史银雪,陈洪,王荣静 译 出 版 社: 清华大学出版社 出版时间:2005-07-01 ISBN:9787302109464 纸书页数:380页 定 价:¥ 42.00 内容简介:《3D数学基础:图形与游戏开发》专业培训机构指定教学参考书,多家游戏开发企业共同推荐,游戏业界,探索游戏开发背后的核心秘密。《3D数学基础:图形与游戏开发》主要介绍了基本的3D数学概念,这对电脑游戏开发人员和编程人员来说尤为重要。作者详尽地讨论了数学理论,并在必要时提供几何说明,帮助读者形成直观的3D感。书还提供了将理论应用于实践的C++类,并且在每章结尾处提供练习。《3D数学基础:图形与游戏开发》介绍了基础概念,如向量、坐标空间、矩阵、变换、欧拉角、齐次坐标空间、几何图元、相交性检测和三角网格。 作者简介:Fletcher Dunn,是著名游戏开发公司Terminal Reality的主要开发人员,所参与开发的游戏包括《4×4DVO 2)、《夜曲》(Noturne),并且是《吸血莱恩》(BloodRayne)的主要负责人。他所开发的游戏遍及家用PC机的Windows、Machintosh、Dreamcast、PSⅡ、Xbox和GameCube几种主流平台。   Ian Parberry,是北德克萨斯大学计算机科学系的教授,在国际上被公认为是教授DirectX游戏开发的专家之一。 编辑推荐:《3D数学基础:图形与游戏开发》主要研究隐藏在3D几何世界背后的数学问题。涵盖了理论知识和C++实现代码。理论部分解释3D数学和几何之间的关系,列出的技巧与公式可以当做参考手册以方便查找。实现部分演示了怎样用代码来实现这些理论概念。读者论论了3D的方位,包括四元数和对不同表示技术之间的优劣比较。   描述了数学和几何的实际应用示例,提供了一些C++类和不同的矩阵类,每个类都完成特定的几何任务。   所有基本变换矩阵的完整来历。      专门用Python讲解计算机视觉编程 目录 第1章 简介 1.1 什么是3D数学 1.2 为什么选择本书 1.3 阅读本书需要的基础知识 1.4 概览 第2章 笛卡尔坐标系统 2.1 1D数学 2.2 2D笛卡尔数学 2.3 从2D到3D 2.4 练习 第3章 多坐标系 3.1 为什么要使用多坐标系 3.2 一些有用的坐标系 3.3 嵌套式坐标系 3.4 描述坐标系 3.5 坐标系转换 3.6 练习 第4章 向量 4.1 向量——数学定义 4.2 向量——几何定义 4.3 向量 4.4 练习 第5章 向量运算 5.1 线性代数与几何 5.2 符号约定 5.3 零向量 5.4 负向量 5.5 向量大小(长度或模) 5.6 标量与向量的乘法 5.7 标准化向量 5.8 向量的加法和减法 5.9 距离公式 5.10 向量乘 5.11 向量叉乘 5.12 线性代数公式 5.13 练习 第6章 3D向量类 …… 第7章 矩阵 第8章 矩阵和线性变换 第9章 矩阵的更多知识 第10章 3D的方位与角位移 第11章 C++实现 第12章 几何图元 第13章 几何检测 第14章 三角网络 第15章 图形数学 第16章 可见性检测 第17章 后记 附录A 简单的数学概念 附录B 参考文献

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值