3D数学基础:图形和游戏开发(第2版) 第一章 笔记
3D数学基础:图形和游戏开发(第2版) 第一章 笔记
供参考和备忘用
笛卡尔坐标系
一维数学
数的分类
实数(real number)
实数分为有理数和无理数两大类,实数和数轴上的点一一对应。
有理数(rational number)
有理数的英文是 rational number,这个词来源于古希腊,其英文词根为 ratio,比率的意思。简单来说,有理数就是一个整数与另一个整数的比。整数可以看做是分母为1的分数。有理数的小数部分是有限或无限循环的数(如,\(\frac{1}{3}\))。
无理数(irrational numbers)
无理数,也称为无限不循环小数(如,π),不能写作两整数之比。
分数(fraction)
上面把分数分为了正分数和负分数,但还可以分为:真分数和假分数。
真分数(Proper Fraction):分子比分母小。
假分数(Top-heavy/Improper Fraction):分子比分母大。
计算机图形学第一定律
如果它看起来正确,那就是对的。
二维笛卡尔空间
二维笛卡尔坐标空间就是我们常说的直角坐标系,二维笛卡尔坐标空间是可以无限延伸的。二维笛卡尔坐标空间由以下两条信息定义:
- 每个二维笛卡尔坐标空间都有一个特殊的位置,称为原点(Origin),它是坐标的中心。
- 每个二维笛卡尔坐标空间都有两条直线通过原点,每条线都称为轴(Axis),并且可以在两个相反的方向上无限延伸。
三维笛卡尔空间
左手坐标系
X轴的正方向指向右边,Y轴的正方向指向上边,Z轴的正方向指向前面(屏幕里面)。
右手坐标系
X轴的正方向指向右边,Y轴的正方向指向上边,Z轴的正方向指向你自己(屏幕外面)。
左手坐标系与右手坐标系的转换
交换一个轴的正负端即可。
左旋坐标系
首先左手握拳,然后竖起大拇指,大拇指指向旋转轴的正方向(正值端);此时,围绕旋转轴的正向旋转方向就是其它四个手指卷曲的方向。在左手坐标系中,从旋转轴的正向看正向旋转的方向是顺时针的。
右旋坐标系
首先右手握拳,然后竖起大拇指,大拇指指向旋转轴的正方向(正值端);此时,围绕旋转轴的正向旋转方向就是其它四个手指卷曲的方向。在右手坐标系中,从旋转轴的正向看正向旋转的方向是逆时针的。
一些零散的基础知识介绍
求和和求积的表示法
求和表示法(Summation Notaion)
求和表示法是写出事物列表总和的简写方法。有点像 for 循环。
下方的求和公式表示:\(a_i\)从\(i\)开始取数,一直取到n,全部加起来。
- 求和符号:\(\sum\),也称为西格玛符号,因为看起来像E的符号(\(\Sigma\))其实是希腊字母sigma的大写版本。
- 求和符号下方的变量 \(i\) 称为索引变量(Index Variable),表示\(a\)从\(i\)开始取数。
- 求和符号的上方 \(n\) 表示\(a\)取数结束的位置。
求积表示法(Quadrature Notation)
与上方求和的方式类似,只是把求和变成了求积,把符合\(\Sigma\)变成了\(\Pi\)
区间符号
闭区间(Closed Interval)也称为包含(Inclusive)区间,用” \([\) ”和” \(]\) ”表示。
开区间(Open Interval)也称为排除(Exclusive)区间,用” \((\) ”和” \()\) ”表示。
- \([a,b]\):表示所有\(x\)的取值都满足:\(a \leq\ x \leq\ b\)
- \((a,b)\):表示所有\(x\)的取值都满足:\(a < x < b\)
- \([a,b)\):表示所有\(x\)的取值都满足:\(a \leq\ x < b\)
- \((a,b]\):表示所有\(x\)的取值都满足:\(a < x \leq\ b\)
角度、度数和弧度
角度可以用度数(Degree)和弧度(Radian)表示。
一度(\(1^\circ\)):表示旋转\(1/360\),\(360^\circ\)表示旋转完整的一圈。
一弧度(\(1_{rad}\)):表示弧长等于半径的长度所对的圆心角,所有\(2\pi\)表示一个完整的圆周。
度数与弧度的互相转换
一个完整的圆可以用弧度\(2\pi\)表示,也可以用度数\(360^\circ\)表示,所以,\(2\pi = 360^\circ\)。
- 弧度转角度
\(1^\circ = (2\pi / 360)_{rad}\)
=> \(角度值 = (\pi / 180) \times\ 弧度值\)
- 角度转弧度
\(1_{rad} = (360 / 2\pi)^\circ\)
=> \(弧度值 = (180 / \pi) \times\ 角度值\)
数字360
数字360是一个相对随意的选择,可能源于原始日历,例如波斯日历,将一年分为360天。此错误从未更正为365,因为数字360非常方便,数字360拥有多达22个的整除数(不算它自己和1)。这意味着很多情况下都可以均匀的分360而不需要分数,这对于早期文明来说显然是一件好事。早在公元前1750年,巴比伦人就设计了一个六十进制的数字系统。数字360也足够大,使得在许多情况下精确到最接近的整数度数就已经足够了。
三角函数
在一个直角三角形中,斜边为:\(r\),其中一条直角边为:\(x\),另一条直角边为:\(y\),直角边\(x\)与斜边\(r\)的夹角为:\(\theta\),则:
- 正弦:\(sin\theta = {y} / {r}\)(对边 / 斜边)
- 余弦:\(cos\theta = {x} / {r}\)(邻边 / 斜边)
- 正切:\(tan\theta = y / x\)(对边 / 邻边)
- 正割:\(sec\theta = {r} / {x}\)(斜边 / 邻边)
- 余割:\(csc\theta = {r} / {y}\)(斜边 / 对边)
- 余切:\(cot\theta = {x} / {y}\)(邻边 / 对边)
可推导出:
\(sin\theta = \dfrac{1}{csc\theta}\)
\(cos\theta = \dfrac{1}{sec\theta}\)
\(tan\theta = \dfrac{1}{cot\theta} = \dfrac{sin\theta}{cos\theta}\)
三角函数的恒等式
对称性相关的基本恒等式
- \(sin(-\theta) = -sin\theta\)
- \(cos(-\theta) = cos(\theta)\)
- \(tan(-\theta) = -tan\theta\)
- \(sin(\frac{\pi}{2} - \theta) = cos\theta\)
- \(cos(\frac{\pi}{2} - \theta) = sin\theta\)
- \(tan(\frac{\pi}{2} - \theta) = cot\theta\)
毕达哥拉斯定理
也就是我们常说的:勾股定理。表示在直角三角形中,两条直角边的平方的和等于斜边的平方。
毕达哥拉斯定理在单位圆中,可以导出以下恒等式:
- \(sin^2\theta + cos^2\theta = 1\)
- \(1 + tan^2\theta = sec^2\theta\)
- \(1 + cot^2\theta = csc^2\theta\)
两角的和与差恒等式
- \(sin(\alpha+\beta) = sin\alpha \times\ cos\beta + cos\alpha \times\ sin\beta\)
- \(sin(\alpha-\beta) = sin\alpha \times\ cos\beta - cos\alpha \times\ sin\beta\)
- \(cos(\alpha+\beta) = cos\alpha \times\ cos\beta - sin\alpha \times\ sin\beta\)
- \(cos(\alpha+\beta) = cos\alpha \times\ cos\beta + sin\alpha \times\ sin\beta\)
- \(tan(\alpha+\beta) = \dfrac{tan\alpha + tan\beta}{1 - tan\alpha \times\ tan\beta}\)
- \(tan(\alpha-\beta) = \dfrac{tan\alpha - tan\beta}{1 + tan\alpha \times\ tan\beta}\)
正弦定理
在任意\(\Delta ABC\)三角形中,角\(A\)、\(B\)、\(C\)所对的边长分别为\(a\)、\(b\)、\(c\),三角形外接圆的半径为\(R\),则有:
余弦定理
在任意\(\Delta ABC\)三角形中,角\(A\)、\(B\)、\(C\)所对的边长分别为\(a\)、\(b\)、\(c\) ,则有:
- \(a^2 = b^2 + c^2 - 2 \times\ b \times\ c \times\ cosA\)
- \(b^2 = a^2 + c^2 - 2 \times\ a \times\ c \times\ cosB\)
- \(c^2 = a^2 + b^2 - 2 \times\ a \times\ b \times\ cosC\)