当前位置: 首页 > news >正文

《3D Math Primer for Graphics and Game Development》读书笔记2

《3D Math Primer for Graphics and Game Development》读书笔记2

上一篇得到了"矩阵等价于变换后的基向量"这一结论。

本篇只涉及两章,但容量已足够喝一壶了。

第8章 矩阵和线性变换

变换物体和变换坐标系是等价的,将物体变换一个量等价于将坐标系变换一个相反的量。

旋转rotation

2D中的旋转只有一个参数:角度θ,逆时针经常被认为是正方向。

在3D场景中,绕轴旋转而不是点。绕轴旋转θ°时,必须知道哪个方向被认为是正方向。在左手坐标系中用左手法则,在右手坐标系中用右手法则判定。

为单位向量,方向任意,旋转角度为θ,那么相应的旋转矩阵为:

缩放scaling

为平行于缩放方向的单位向量,k为缩放因子,缩放沿穿过原点且平行于的直线(2D)或平面(3D)进行。

2D的缩放公式

3D的缩放公式

投影projection

2D中,

3D中,

镜像reflection

2D中,

3D中,

切变shearing

切变时角度会变化,但面积和体积不变。

第9章 矩阵的更多知识

行列式determinant

上图展示了行列式的计算方法。可以将任意一行作为主行,然后写出行列式;也可以按列来写,结果都是一样的。

2×2矩阵的行列式等于其围成的平行四边形的有符号面积。

3×3矩阵的行列式等于以变换后的基向量为三边的平行六面体的有符号体积。

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

矩阵的逆

假设矩阵M有r行c列。记法M{ij}表示从M中除去第i行第j列后剩下的矩阵。称为M余子式。余子式是一个矩阵。

余子式的有符号行列式称为代数余子式

用Cij表示M的第i行第j列元素的代数余子式。代数余子式是一个标量。

可以用代数余子式求行列式。

例如4×4矩阵

矩阵M的逆记作M-1,也是一个矩阵,且满足

M标准伴随矩阵记作adj M,定义为M的代数余子式矩阵的转置矩阵。例如:

M的代数余子式矩阵:

M的标准伴随矩阵:

M的逆矩阵:

标准伴随矩阵提供无分支计算逆矩阵的方法。还有一种求逆矩阵的方法是高斯消元法。

正交矩阵

旋转和镜像矩阵是正交的。

正交矩阵的每一行代表的基向量都是单位向量,且行互相垂直。

矩阵正交化

施密特正交化:

改进的施密特正交化:

4×4齐次矩阵

4×4矩阵可以同时表示线性变换(旋转、缩放。。。)和平移。这是使用4×4矩阵的原因之一。

仿射变换

仿射变换的基本思路是,先平移到原点,然后执行线性变换,最后反向平移回去。

 

相关文章:

  • LAMP之php 与 mysql 配置(三)
  • 走进wordpress 详细说说template-loader.php
  • ubuntu的备份和还原
  • 【转】Android 带checkbox的listView 实现多选,全选,反选----解决checkbox错位问题
  • ACL访问控制列表及特殊权限
  • [裴礼文数学分析中的典型问题与方法习题参考解答]4.5.5
  • Ubuntu APT使用指南
  • 6个常见的 PHP 安全性攻击
  • new/delete malloc/free深入剖析
  • Linux下使用locale命令设置语言环境
  • EOS的综合除尘系统
  • 树状数组 POJ 2481 Cows
  • 匿名内部类
  • HDU1664 BFS + 数论 + 剪枝
  • HP VA7400存储故障诊断,数据恢复有可能
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 「面试题」如何实现一个圣杯布局?
  • CSS居中完全指南——构建CSS居中决策树
  • Github访问慢解决办法
  • Javascripit类型转换比较那点事儿,双等号(==)
  • React16时代,该用什么姿势写 React ?
  • spark本地环境的搭建到运行第一个spark程序
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 成为一名优秀的Developer的书单
  • 关于使用markdown的方法(引自CSDN教程)
  • 蓝海存储开关机注意事项总结
  • 浅谈Golang中select的用法
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 设计模式(12)迭代器模式(讲解+应用)
  • 微服务核心架构梳理
  • 原生js练习题---第五课
  • nb
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​卜东波研究员:高观点下的少儿计算思维
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $.ajax,axios,fetch三种ajax请求的区别
  • (C#)一个最简单的链表类
  • (差分)胡桃爱原石
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (六)软件测试分工
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)VirtualBox安装增强功能
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Core 和 .NET Framework 中的 MEF2
  • /etc/sudoer文件配置简析
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @WebService和@WebMethod注解的用法
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [20150707]外部表与rowid.txt
  • [20170713] 无法访问SQL Server
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [C#]C# winform部署yolov8目标检测的openvino模型
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计