计算几何复习要点

 1、向量加法的几何含意:

  a+b的释意为:a的尾连上b的头,新建一条从a的尾指向b的头的向量。

 2、向量减法的几何含意:

  a-b的释意为:尾部相连,新建一个从b的头指向a的头的向量。

 3、点积,内积:

  对于向量a(Xa,Ya)、向量b(Xb,Yb),a与b的点积为:Xa*Xb+Ya*Yb。

  另外 a*b=|a|*|b|*cos(a与b夹角)。通过此公式可通过坐标来计算2向量夹角。

 4、叉积。注意,axb 的结果是一个向量。

  |aXb| = |a|*|b|*sin(a与b夹角)。几何函数为a向量与b向量组成的面积。

 5、行数和列数相同的矩阵称为方阵。所有非对角线元素都为0的矩阵为对角矩阵。

 6、转置矩阵意味着把矩阵给转换。

参考自《3D数学基础:图像与游戏开发》

3D数学基础

1、研究自然数、整数的领域称为离散数学。研究实数的领域称作连续数学

2、计算机图形学第一准则:近似原则 。如果它看上去是对的,它就是对的。

3、常见坐标系。

  1)世界坐标系。

  2)物体坐标系。

  3)摄像机坐标系。

  4)惯性坐标系。

4、向量的大小。

  

5、点积:对应分量的和。

  

  点积可以计算向量的夹角:

  

6、假设有向量v,n,则v可以拆分平行为n的向量 v1、以及垂直于n的向量v2。

  

  v1 = |v1|*n / |n| = |v| cos0 *n / |n| = |v||n|cos0*n / |n|^2 = dot(v,n)*n/|n|^2

  

  上术计算 v1 的公式,可以略去 cos0 的计算。

  有了v1,v2就很好求了。 v2 = v - v1

  

7、叉乘公式。

  

  叉乘不满足交换律,即: axb != bxa。但满足反交换律:

    

  也不满足结合律:

    

  叉乘满足分配律:
    

  

8、矩阵是 row x column,如下面是一个 4x3 的矩阵。

  

9、两个矩阵积的转置 等于 转置的逆序积。
  

10、行向量左乘矩阵,结果是行向量;行向量右乘矩阵,结果是无定义。

  列向量左乘矩阵,结果是无定义;列向量右乘矩阵,结果是列矩阵。

  并且注意,行向量、列向量的值完全不同。

  

11、若把矩阵的行解释为基向量,那么乘以该矩阵就相当于执行了一次坐标转换。若有 aM = b,我们就可以说,M可以将a转换到b。

  

  

12、绕x、y、z 轴旋转 0度。

  

  记法诀窍:

  1、斜角都是 cos0。

  2、固定轴的下一个是 sin0。

  3、固定轴的下下一个是 -sin0。

13、沿坐标轴的绽放矩阵。

  

14、切变,切变后面积、体积不变。也被称作扭曲变换。以下是 2d切变矩阵:

  

  以下是3D切变矩阵。

  

15、线性变换。满足加法、线性乘,那么叫线性变换。

  

  

16、2 维行列式

  

  3维行列式:

  

  如果将矩阵解释为 abc 向量,那么矩阵的行列式可以写为:

  

17、M{i,j} 称为 M的i行j列的余子式,意为去除i行j列后余下的矩阵。

  

  加上-/+后称为代数余子式。

  

  

  任一一行的代数余子式与元素乘积的和,即为行列式,所以这里得到行列式的另一个计算方法:

  

  

18、矩阵行列式的特性。

  

19、2D中,行列式的值为基向量围成图形的面积。

  

  3D中,行列式等于基向量的体积。

20、如果一个矩阵有逆矩阵,则称它为可逆的或非奇异的(非单身)。如果没有逆矩阵,则为不可逆,奇异。

  奇异矩阵的行列式为零,非奇异的行列式不为零。因为逆矩阵的计算需要除以行列式 |M|。

21、adj M 是标准伴随矩阵,是代数余子式矩阵的转置。

  

  

  

  逆矩阵的计算公式:
  

  逆矩阵的特性:

  

  

22、正交矩阵:M*M^T=I

  如果一个矩阵是正交的,那么它的转置等于它的逆: M^-1 = M^T。

  这是快速计算逆矩阵的一种常用方法。

23、正交矩阵性质的推导。

  

  

23.1、3D矩阵的施密特正交化。

    

  施密特正交化是有偏差的,一个例子是rq总是不变的。一个改进的算法是,选择一个小因子,迭代N次。

    

24、3D 平移矩阵。

  

24.1、一般仿射变换。

  

25、投影的计算。

    

26、

27、

28、

29、

3D中绕任意轴的旋转

  假设旋转轴通过原点,为n,旋转的角度为0。被旋转轴为 v,旋转后的轴为 v'。则我们需要找到的旋转矩阵R为:

    

  先构造空间,可以将 v 拆分为 v1、v2,v1平行n,v2垂直n。

      

    下面的等式可由两种方式得到:

    1)0 的旋转矩阵。

    2)水平分量、垂直分量相加。

    

    

  将 [1,0,0]、[0,1,0]、[0,0,1] 代入,即可得三个旋转后的坐标轴。

  

  综合在一起,可得旋转矩阵:

    

沿任意方向缩放

  现在来解决,沿方向n,绽放k倍的问题。假设需要绽放轴 v,那么v可拆分为v1,v2。v1平行于 n,v2 垂直于n。

    

  

  上式中,(VN)N 为 V||,再乘上 (k-1),所以此公式的含意为给 V 加一个 (k-1)V|| 的偏移。

  所以,三个轴旋转后分别为:

    

  绽放矩阵为:

    

  有了上述公式后,可轻易的得出绕任意平面投影的矩阵:

      

  同样,镜像矩阵也很容易得出:

     

3D数学基础 KeyNote 1的更多相关文章

  1. 3D数学基础:四元数与欧拉角之间的转换

    在3D图形学中,最常用的旋转表示方法便是四元数和欧拉角,比起矩阵来具有节省存储空间和方便插值的优点.本文主要归纳了两种表达方式的转换,计算公式采用3D笛卡尔坐标系: 单位四元数可视化为三维矢量加上第四 ...

  2. 3D Math Keynote 4

    [3D Math Keynote 4] 1.三角带. 合并三角带能够提升渲染效率. 三角扇. 2.边缩坍,将边缩减为顶点 . 网格消减,使用边缩坍,可以实现渐进式网络. 3.下图左边是面拆分.右边是焊 ...

  3. 3D Math Keynote 3

    [3D Math Keynote 3] 1.球的表面积 Surface.球的体积 Volumn: 2.当物体旋转后,如果通过变换后的旧AABB来顶点来计算新的AABB顶点,则生成的新AABB可能比实际 ...

  4. 3D Math Keynote 2

    [3D Math Keynote 2] 1.方向(diretion),指的是前方朝向.方位(orientation),指的是head.pitch.roll. 2.欧拉角的缺点: 1)给定方位的表达式不 ...

  5. 【Unity3d游戏开发】Unity3D中的3D数学基础---向量

    向量是2D.3D数学研究的标准工具,在3D游戏中向量是基础.因此掌握好向量的一些基本概念以及属性和常用运算方法就显得尤为重要.在本篇博客中,马三就来和大家一起回顾和学习一下Unity3D中那些常用的3 ...

  6. 3D数学基础(四)四元数和欧拉角

    一.四元数 四元数本质上是个高阶复数,可视为复数的扩展,表达式为y=a+bi+cj+dk.在说矩阵旋转的时候提到了它,当然四元数在Unity里面主要作用也在于此.在Unity编辑器中的Transfor ...

  7. 3D数学基础(三)矩阵

    3D引擎中对于矩阵的使用非常多,介绍这些知识也是为了告诉开发者原理,更有助于开发者编写逻辑. (1)固定流水线 各种坐标系之间的转化是通过矩阵相乘得到的,这里面就涉及到了3D固定流水线.作为3D游戏开 ...

  8. 3D数学基础(二)向量

    向量的基本运算包括加法.减法.点乘.叉乘.单位化运算等,而在游戏开发中使用最为广泛的是减法.点乘.叉乘.单位化运算.向量是具有方向和长度的矢量,有2D.3D.4D等的.在游戏开发里面一般使用的是2D和 ...

  9. 3D数学基础(一)Unity坐标系

    Unity引擎时非常成熟的,引擎内部运用了很多的数学知识,他对开发者来说是不可见的,而且他已经封装好的算法也不是很全面.此外,要是使用引擎封装好的算法也要明白其实现的原理. 写过一些代码,也参考了一些 ...

随机推荐

  1. fpga配置过程(转载)

    fpga 配置时序图如下 1.FPGA器件有三类配置下载方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式.             AS 由FPGA器件引导配置操作过程, ...

  2. autoconf 简单demo试用

    1. 安装工具 yum install -y automake   2. 基本项目 a. 项目参考结构 ├── AUTHORS ├── COPYING ├── ChangeLog ├── Makefi ...

  3. python编程规范系列--建议01~07

    本系列来自<编写高质量代码 改善python程序的91个建议>的读书笔记整理. 本书主要内容     1)容易被忽视的重要概念和常识,如代码的布局和编写函数的原则等:     2)编写py ...

  4. bzoj 1670 [Usaco2006 Oct]Building the Moat护城河的挖掘——凸包

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1670 用叉积判断.注意两端的平行于 y 轴的. #include<cstdio> ...

  5. python3 内存管理

    怎么查找哪里存在内存泄露呢?武器就是两个库:gc.objgraph pip install psutil pip install objgraphpip install -U memory_profi ...

  6. mysql的三种安装方式(详细)

    安装MySQL的方式常见的有三种: rpm包形式 通用二进制形式 源码编译 1,rpm包形式 (1) 操作系统发行商提供的 (2) MySQL官方提供的(版本更新,修复了更多常见BUG)www.mys ...

  7. pagination实现分页功能

    pagination.js: /** * pagination分页插件 */ ;(function($,window,document,undefined){ //配置参数 var defaults ...

  8. 27 mysql主从出现错误

    大多数的互联网应用场景都是读多写少,在发展过程中可能会出现读性能问题,在数据库层解决读性能问题:一主多从 下面是多主从结构 虚线箭头表示主备关系,A与A’互为主备,从库B,C,D指向主库A,一主多从的 ...

  9. 淘宝开源Web服务器Tengine基本安装步骤

    Tengine 是由淘宝核心系统部基于Nginx开发的Web服务器,它在Nginx的基础上,针对大访问量 网站的需求,添加了很多功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,淘宝商 ...

  10. 第十一章 Helm-kubernetes的包管理器(下)

    11.5.5 开发自己的chart k8s提供了大连官方的chart, 不过要部署微服务,还是需要开发自己的chart: 1  创建chart    Helm会帮助创建目录mychart,并生成各类c ...