3D数学基础:图形和游戏开发(第二版)--读书笔记(1)
简介:

本书是关于3D数学、三维空间的几何和代数的入门教材。它旨在告诉你如何使用数学描述三维中的物体及其位置、方向和轨迹。这不是一本关于计算机图形学、模拟,甚至计算几何的书,但是,如果读者打算研究这些科目,那么肯定需要这里的信息。
这是一本适宜视频游戏程序开发人员阅读的图书。虽然本书假定大多数读者都是为了编写视频游戏而学习,但我们期待更广泛的受众,并且在设计这本书的体例时也考虑到了不同的受众。如果你是程序开发人员或有兴趣学习如何制作视频游戏,欢迎加入! 如果你没有达到这些标准,那么你在这里仍然可以收获很多。
我们已经尽一切努力使本书对设计师和技术美工也很有用。虽然本书中有一些代码片段,但即使对于非程序开发人员来说,它们也很容易阅读(希望如此)。最重要的是,虽然你需要先理解相关的概念才能理解代码,但是反过来并不成立。我们使用代码示例来说明如何在计算机上实现创意,而不是解释这些创意本身。
第一章:笛卡尔坐标系
1.1 一维数学

自然数 Natural Number : 非负整数的集合,其特点是有序性和无限性
因为日常生活中对数字的需要,于是先产生自然数,这里提到是“死羊的个数”。
整数 Integer : 整数是由自然数字和它们的负面对应物组成。
因为生产生活的发展,产生经济活动,逐步开始有贫穷、负债、借贷等需要,于是在自然数的基础上拓展到整数。
**有理数 Rational Number :整数和分数 **
再在整数的基础上拓展,如要买半只羊,拓展到分数领域,便将数字范围由整数拓展到有理数。
实数 Real Number :包括有理数和无理数
有时候也会遇到无法准确表示实际意义的数值,典型的如Π(圆周率)。
我们需要知道是,有理数是可数的(也就是说,可以与自然数一一对应),但实数是不可数的。
对自然数和整数的研究称之为离散数学 Discrete Mathematics
对实数的研究称之为 连续数学 Continuous Mathematics
现实世界却是离散的。这对三维计算机生成的虚拟现实的设计者有何影响?就其本质而言,计算机是离散的和有限的,并且更有可能在创造过程中而不是在现实世界中遇到离散性和有限性的结果。
这些数字可以是short、int、float 和double类型的。
计算机中离散数学所使用的变量类型:
- short:short是一个16位(bit)的整数,可以存储65536个不同的值
- int: int是一个32位的整数,它最多可存储4,294,967,296个不同的值
- float: float 也是一个32位的值,它可以存储有理数的子集(略少于4294967296,在这里细节并不重要)。
- double: double 和 float类似,但它使用64位而不是32位.
计算机图形学第一定律:
如果它看起来正确,那就是对的。
1.2 二维笛卡尔空间(平面空间)

- 每个二维笛卡尔坐标空间都有一个特殊位置,称之为原点,Origin,它是坐标系的“中心”,坐标为(0,0)
- 每个二维笛卡儿坐标空间都有两条直线通过原点。每条线都被称为轴(Axis),并且可以在两个相反的方向上无限延伸。
- 两个轴彼此垂直(实际上,它们并不是必然要垂直的,但我们看到的大多数常见系统都将具有垂直轴)。
在二维坐标系中描述坐标位置:

在二维中,两个数字即可用于指定位置(事实上,用两个数字来描述一个点的位置就是它被称为二维或二维空间的原因。在三维或三维空间中,需要使用3个数字)。在(2,4)这个示例中,第一个坐标(也就是2)被称为x坐标;第二个坐标(也就是4)被称为y坐标。
请注意,垂直网格线由所有具有相同x坐标的点组成,换句话说,垂直网格线(实际上是任何垂直线)标记常数x的线。同样地,水平网格线标记常数y的线,也就是说,该行上的所有点都具有相同的y坐标。当讨论极坐标空间时,需要稍微回顾一下这个知识点。
1.3 三维笛卡尔空间
1.3.1 新增维度和轴

在三维中,我们需要3个轴来建立坐标系。前两个轴分别称为x轴和y轴,就像在二维中一样(当然,说它们与二维轴相同是不准确的,稍后会有更详细的解释)。我们将第三个轴(可预测地)称为z轴。一般来说,我们会进行设置以使所有轴相互垂直,即每个轴垂直于其他轴。
在三维中,任何一对轴定义包含两个轴并垂直于第三轴的平面。同样,xz平面垂直于y轴,yz平面垂直于x轴。我们可以将这些平面中的任何一个视为自己的二维笛卡儿坐标空间。
1.3.2 在三维空间中指定位置

在三维中,使用3个数字x、y和z指定点,这些数字分别给出yz、xz和xy平面的有符号距离。
距离的测量将沿着平行于轴的直线进行。例如,x值就是到yz平面的有符号距离,沿着平行于x轴的直线测量。
1.3.3左手和右手坐标空间
所有二维坐标系在某种意义上都是“相等的”,对于任何两个二维坐标空间A和B,可以旋转坐标空间A,使得+x和+y的指向与它们在坐标空间B中的指向相同(假设轴是垂直的)。
三维坐标系有两周坐标类型:
左手(Left-Handed)坐标空间和右手(Right-Handed)坐标空间。
如果两个坐标空间具有相同的旋向性(Handedness),则可以旋转它们使得轴对齐;如果两个坐标空间的旋向性相反,那么这就是不可能的。

这是左手三维空间坐标系

这是右手空间坐标系
左旋和右旋坐标系在“正旋转”的定义上也有所不同。
假设在空间中有一条直线,需要围绕这条直线旋转指定的角度,将此直线称之为旋转轴。首先我们必须定义轴“指向”的方向,基于此来指定旋转的正方向。

在左手坐标系中,正向旋转从轴的正端看时是顺时针(Clockwise)旋转的;
而在右手坐标系中,正向旋转是逆时针(Counterclockwise)旋转的。
1.4 一些零散的知识
求和表示法(Summation Notation)

要获取一系列数值的乘积,可用类似的表示法:

区间符号
\]
\]
角度、度数和弧度
度 Degree : 360度 为一周
弧度 Radian: 测量度数所对应的那段弧的长度,

三角函数
使用单位圆来定义三角函数:

在二维中,如果以指向+x的单位线条开始,然后逆时针旋转该线条角度0,则可以在标准位置(Standard Position)绘制该角度(如果该角度为负,则沿另一个方向旋转线条)。

这样旋转的线条端点的(x,y)坐标具有特殊属性,并且在数学上非常重要,因此,它们被赋予了特殊函数,称为角度的余弦(cosine)和正弦(sine),定义如下:

在正弦和余弦函数基础上可以继续定义割线、余割、切线和余切
\]

比关系,谨记勾股定理:勾3 股4 弦5
\]
\]
三角函数之间的恒等式:
\]
\]
勾股定理:(毕达哥拉斯定理)
\]

倍角公式:

正弦定理和余弦定理:


3D数学基础:图形和游戏开发(第二版)--读书笔记(1)的更多相关文章
- [3D数学基础:图形与游戏开发]专栏前言
期待的书终于到了,接下来我会把自己的学习笔记以及心得整理出来,形成专栏,每一章都进行记录和学习总结,今天是2016年12月30日,再过一天就是元旦了,就要迎来美好的2017年了!!!加油~ 上面的书就 ...
- 《unity 3D 游戏开发 第二版》宣雨松 分享 pdf下载
链接:https://pan.baidu.com/s/1LfRTGUmaE_lGdcmd6QiZkg 提取码:e2sn
- Unity3d/2d手机游戏开发第二版 (金玺曾) 随书资源
http://pan.baidu.com/s/1c0xpn4s Unity3d2d手机游戏开发配书资源文件.rar 1.36G 书上的链接坏掉了,我在论坛上面买了一份,放这分享给买了书找不到资源的同学 ...
- 《ECMAScript标准入门》第二版读书笔记
title: <ECMAScript标准入门>第二版 date: 2017-04-10 tags: JavaScript categories: Reading-note 2015年6月, ...
- 《细说PHP》第二版--读书笔记
第五章 PHP的基本语法 5.2.4 在程序中使用空白的处理 5.3 变量 5.3.1 变量的声明 在php中变量的声明必须是使用一个$符号,后面跟变量名来表示 unset()函数释放指定变量 iss ...
- Android深度探索--HAL与驱动开发----第二章读书笔记
1. 底层开发工具包括: JDk6或者以上版本:Eclipse3.4或以上版本:ADT(用于开发Android应用程序),CDT(用于开发AndroidNDK程序):Android SDK:Andro ...
- sed&awk第二版读书笔记
1. POSIX标准对正则表达式字符和操作符的含义进行了形式化.这种标准定义了两类正则表达式:基本的正则表达式(BRE),grep和sed使用这种正则表达式;扩展的表达式,egrep和awk使用这种正 ...
- Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver
1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...
- 《Kinect应用开发实战》读书笔记---干货集合
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/45029841 作者:ca ...
随机推荐
- 秒懂全文:盘点13个各具特色的AI智能阅读助手工具
在当今信息爆炸的时代,AI阅读工具正在革新我们的阅读方式,成为了提高效率.优化阅读体验的关键. 这类AI阅读辅助工具,只需要上传文件或者输入链接,便可以直接以聊天对话的形式进行一键总结和智能问答,满足 ...
- SMU Summer 2023 Contest Round 1
SMU Summer 2023 Contest Round 1 A. The Contest 当 \(m\) 为 \(0\) 和 完成时间大于最后一个时刻时,说明都无法在规定条件内完成,输出\(-1\ ...
- TCP/TP协议栈(逐渐更新版)
TCP/IP协议栈 应用层 DNS协议 传输层 TCP协议 TCP协议报文结构 源端口 目的端口 序列号 确认号 头长度header length or data offset 保留字段reserve ...
- 关于腾讯会议pc端的使用教程
一.首先先在官网下载pc端 下面是连接:腾讯会议_腾讯会议下载- 腾讯云 (tencent.com) 点击免费下载即可. 二.登录并创建会议 选择一种登录方式. 创建会议有快速会议和预定会议两种方式 ...
- Devexpress GridView 单元格输入检验
实现效果 打开设计器 找到CellValueChanged事件 编写代码 private void gvmain_CellValueChanged(object sender, DevExpress. ...
- 【测试平台开发】——07Vue前端框架实战——restful请求
本节主要是前后端接口的调用,以及前端如何进行封装接口 一.创建相关文件 在文件夹下创建http.js.api.js.user.js 1)http.js封装接口: 在src下创建api文件夹 添加htt ...
- sicp每日一题[1.41]
Exercise 1.41 Define a procedure double that takes a procedure of one argument as argument and retur ...
- 外挂级OCR神器:免费文档解析、表格识别、手写识别、古籍识别、PDF转Word
TextIn Tools是一款免费的在线OCR工具,支持快速准确的文字和表格识别,手写.古籍识别,提供PDF转Markdown大模型辅助工具,同时支持PDF.WORD.EXCEL.JPG.PPT等各类 ...
- EF Core – 大杂烩
前言 记入一些零零碎碎的知识. Shadow Properties 参考:Docs – Shadow and Indexer Properties Shadow Property 指的是那些在数据库有 ...
- HTML & CSS – Styling Table
前言 Table (表格) 历史悠久, 它有许多独特的默认样式, 它也是最早的布局方案方案哦 (现在依然有用 table 来做布局的, 比如 email template). 这篇来介绍一下基本的 t ...