(以下学习笔记为本人最近在学习本书的时候所记载,之中还加入了一些做项目过程中遇到的问题,以及相关知识的补充。笔者水平有限,文中不足之处,还请给予指正,谢谢~)

1.将左手坐标系变换到右手坐标系,只需改变其中一个轴的方向即可。
  若改变两个轴的方向,则与旋转坐标轴无异。

  若改变两个轴的方向,则与旋转坐标轴无异。
  左手坐标系有24种(4*2*3) ,右手坐标系也有24种。
2. 四种坐标系物体坐标系、世界坐标系、惯性坐标系、摄像机坐标系
3. 点的平移、旋转方向  始终与 轴相反。(比如开车向前,世界向后;您向右转,世界向左转)
4.向量箭头,箭头是“尾”,箭末是“头”  向量有大小和方向,但是没有位置
5 .AABB包围盒:  从一个点(x,y,z)到另一个点(x2,y2,z2)的沿坐标轴的不同路径走法,构成了AABB包围盒。
6. 向量点乘的几何意义:  向量点乘结果越大,则两个向量越“接近”,越相似。
零向量与任何其他向量都垂直。
a·bxc称为三重积。
7. 向量叉乘的几何意义: 向量叉乘的大小axb =|a||b|sinθ,等于以a和b为边的平行四边形的面积大小。
向量叉乘方向的判断,在左手坐标系中用左手,右手坐标系中用有右手,两个坐标系刚好相反。
将向量变成头尾相接来判断。如axb,则a的头接到b的尾。
8. 保持向量类的简单性,需要表达式调用的函数,比如叉积x,应该定义成非成员函数。
  不需要在向量类上做过多的优化,不要为了5%的提升而牺牲100%的代码复杂性。
9. 向量可表示为基向量组的线性求和。
10. 2D中想象矩阵的方法,就是将矩阵的每一行抽取出来,当作一个个基向量,在2D笛卡尔平面上画出2条,成"L形"状,从而便可以得知矩阵所进行的变换类型。
如|2   1|
    |-1  2|  就是对应将坐标系逆时针旋转26度(arcsin(1/根号5))
矩阵的每一行都可以是变换后的基向量。
平行四边形,又称为“旋转盒”,不仅旋转,还会拉伸。
拉伸倍数根据对应的行向量的模长决定(列向量右乘时,即变成列向量的模长)
11.
 

代表顺时针旋转90度,想象L形

12. 【极分解】
将一个矩阵A分解为  A = UP.
连续介质力学中使用极分解来将形变分解成拉伸和旋转的部分,其中 P表示拉伸的部分,U表示旋转的部分。

13. 【3个向量的交叉积】
 
14. 【行列式的重要性质】
 

2D中,行列式等于以基向量为两边的平行四边形的有符号面积。如果平行四边形相对于原来的方位“翻转”,那么面积变负。
3D中,行列式相对应的则为平行六面体的有符号体积,如果变换使得六面体“由里向外”翻转,则负。
行列式的绝对值与面积、体积的改变相关。
如果行列式为0,那么该矩阵一定包含投影。

如果行列式为负,那么该矩阵包含镜像。

15. 【利用4D矩阵同时表示旋转和平移】齐次坐标

4D坐标的w分量可以开关是否平移(对无穷远点平移没有用,相当于没平移)
 
16. 【绕不在原点的轴/平面进行旋转】
基本思想,先乘T将轴平移到“原点”,之后乘R转动矩阵,最后乘T的逆(T^-1),即为结果。
即 v_new = v TR(T^-1)
(p·R可以理解为扇形的弦长,如此便构造出来旋转+平移的4D仿射矩阵)

 


 
 
17. 【透视投影】
 

18. 【四元数!!!】
因为欧拉角一些固有的数学原因,导致“万向锁”的出现,但是,四元数就不会导致这个问题了!!

 
 
 
四元数能够被解释为“轴-对”的形式, “n-θ”格式,n为任意的旋转轴,θ为旋转角度。
记住,ij=k,而不是0!

四元数求负与原四元数表示的角位移是一样的,因为:
cos((θ+360)/2) = cos (θ/2 +180) = - cos (θ/2)
【四元数叉乘】
 


19. Matrix 4x3类
 

20. 3D射线
射线就是有向线段

3D射线是对2D射线的一个扩展,只要再加上z(t) = z0 + t Δz即可。 其中Δx= x1-x0(x0是起点)
向量形式的表示:

在一些相交性检测中,可能会使用上述形式的一种变体,d为单位向量,t从0变化到L,L是射线的长度。

21. 点到直线的距离公式:
 

22. 【第12章——几何图元课后习题】(思路)

a.  平面方程,先由叉乘算出法向量n, 再根据n · p = d,算出d,之后便得平面方程。
b. 计算点到平面的有符号距离 l =n · q - d ,若l>0,则是正面,否则为反面.
c. 同上,l的绝对值即为.
d. 此处可选择用投影法,即舍弃n 中最大的分量对应的坐标,再在投影平面进行计算重心坐标。
  或者,根据三个子三角形与三角形有符号面积之比进行计算。
e. 这三个心都有对应的公式进行计算。

《3D数学基础:图形与游戏开发》 学习笔记(一)相关推荐

  1. 【web编程技术学习笔记】因特网与万维网简介

    目录 Client客户端 Server服务器端 TCP/IP五层协议 IP 查看IP地址的的两种方法 TCP URL 样式一 样式二 DNS URL&DNS HTTP 与因特网有关的组织 IE ...

  2. 程序员编程技术学习笔记

    程序员编程技术学习笔记     看july的博客也有好久了,一直没能好好整理一下自己的学习笔记,开了博客之后更加愿意好好整理一番了.其中不免有些内容在july那里可以找到原文,但是更多的加入了我个人的 ...

  3. JAVA 网络编程技术学习笔记

    目录 一.网络编程基本概念(了解) 1.1 计算机网络 1.2 网络通信协议 1.2.1什么是网络通信协议 1.2.2 OSI七层协议模型 1.2.3网络协议的分层 1.3数据的封装和解封 1.4 I ...

  4. 《ASP.NET MVC4 WEB编程》学习笔记------Web API 续

    目录 ASP.NET WEB API的出现缘由 ASP.NET WEB API的强大功能 ASP.NET WEB API的出现缘由 随着UI AJAX 请求适量的增加,ASP.NET MVC基于Jso ...

  5. java网络编程技术学习笔记(b站【狂神说Java】网络编程实战讲解)

    b站视频链接:[狂神说Java]网络编程实战讲解 文章目录 网络编程 1.1.概述 1.2.网络通信的要素 1.3.IP 1.4.端口 1.5.通信协议 1.6.TCP 文件发送 1.7.UDP 1. ...

  6. SpringBoot整合第三方技术学习笔记(自用)

    SpringBoot整合第三方技术学习笔记 搬运黑马视频配套笔记 KF-4.数据层解决方案 KF-4-1.SQL 回忆一下之前做SSMP整合的时候数据层解决方案涉及到了哪些技术?MySQL数据库与My ...

  7. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  8. ssm 转发请求_千呼万唤!阿里内部终于把这份SSM框架技术学习笔记分享出来了...

    SSM SSM(Spring+SpringMVC+MyBatis)框架集由Spring.MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容).常作为数据源较简单的web项 ...

  9. 【C#编程基础学习笔记】6---变量的命名

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...

  10. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

最新文章

  1. 内存都没了,还能运行程序?
  2. Go并发编程之美-读写锁
  3. Python基础教程:函数的可变参数
  4. 杭电c语言课程设计实验7,杭电1072 BFS 大神给看看啊 郁闷整整10个小时了 不知道哪里错wa...
  5. random输出1到10之间_第43P,随机数,Python内置库之random
  6. WCF、WebAPI、WCFREST、WebService之间的区别
  7. 最近看了两本低代码的书
  8. Theano 更多示例
  9. 计算机仿真在机械行业中的应用,计算机仿真技术机械行业应用
  10. 小项目也可以学习到很多东西
  11. ThinkPHP删除指定文件(物理删除)
  12. python set 原理_Python基础教程之dict和set
  13. 光模块基础知识【快速入门】02
  14. JavaWeb面试题1
  15. html实现表格分页显示,js表格分页实现代码
  16. 涉密专用计算机平台,涉密计算机及移动存储介质保密管理系统(三合一)
  17. BZOJ1864: [Zjoi2006]三色二叉树
  18. 关于添加 HKEY_LOCAL_MACHINE32\Software 注册表问题
  19. 用python绘制y=x,y=1+sinx,编写Python程序,使用numpy、pandas、matplotlib三个扩展库在一个画布中绘制4个子图.
  20. $inject的用法

热门文章

  1. 电动车进入电梯自动监控识别系统-楚纳
  2. UBT27:ubuntu安装VMware16
  3. 人在旅途——》张家界之旅:20190422
  4. 基于国产FPGA 的MIPI硬核应用
  5. 音乐发烧友私藏!这里有一份端午浓情大礼包!
  6. 秒杀系统的设计与实现(一)
  7. 学习MySQLl06《存储过程与事务》
  8. linux-文件管理
  9. arcgis 属性表中起点终点创建线_连接起点与终点
  10. 阿里数据中台建设之道,阿里专家10张图从理念到实践,干货解读!