3D数学基础 图形和游戏开发
一 笛卡尔坐标系
1.1 一维数学
有理数是可数的(与自然数一一对应),实数是不可数的。
自然数和整数的研究成为离散数学(Discrete Mathematics)
对实数的研究成为连续数学(Continuous Mathematics)
计算机图形学第一定律:如果看起来是正确的,那就是对的。
1.2 二维笛卡尔空间
笛卡尔坐标系有一个原点(Origin)和两条轴(Axis)
1.3 三维笛卡尔空间
三维空间分为左右手坐标系,拇指指向+x,食指指向+y,中指指向+z。
旋向性相同的三维空间可以旋转达到轴对齐
左/右手螺旋定则规定了对应坐标系中的旋转正方向
本书使用左手坐标系
1.4 一些零散的基础知识介绍
求和
求和表示法(Summation Notation)类似于 for 循环:
求和符号为希腊字母 sigma Σ 的大写。
求积
求积表示法:
求积符号是的大写。
区间
[1, 5]表示所有大于等于 1,小于等于 5 的数,是闭区间,包含端点。
(1, 5)表示开区间,不包含端点。
(x, y)也可表示二维点。
[x, y]也可表示二维向量。
角度
通常用希腊字母表示一个角度,角度的单位是度(°)或弧度(rad)。
一个完整的圆=360°=2
度和弧度之间可以相互转换,转换规则为:
1rad = (180/π)° ≈ 57.3°
1° = (π/180)rad ≈ 0.01745rad
三角函数
三角函数的定义方法之一:在二维坐标中,以+x 方向开始,向逆时针方向旋转度,在该角度方向绘制长度为 1 的线段,线段终点坐标(x, y)。
余弦 (cosine) =
正弦 (sine) =
https://zh.wikipedia.org/wiki/%E4%B8%89%E8%A7%92%E5%87%BD%E6%95%B0
三角恒等式
https://zh.wikipedia.org/wiki/%E4%B8%89%E8%A7%92%E6%81%92%E7%AD%89%E5%BC%8F
二 矢量
2.1 一些数学定义
在线性代数中 Vector 被称为“向量”,在几何中 Vector 被称为“矢量”。
向量:
- 速度(Velocity):起点与终点间距离除以时间,并注明方向
- 位移(Displacement)
标量(Scalar):
- 速率(Speed):距离除以时间,无方向
- 距离(Distance)
向量写法有行向量(Row Vector)和列向量(Column Vector)
可以使用下标(Subscript)表示各个分量(Components),下标可以用 1 2 3 或 x y z
- 标量用斜体的小写罗马字母或希腊字母:
- 向量用粗体小写字母: (或者是在字母上画一个箭头:)
- 矩阵用粗体大写字母:
在线性代数中维数 n 的向量和矩阵可用于求解 n 个未知数的 n 个线性方程组,而不关心数字的物理意义。在 3D 数学中我们主要关注向量运算的几何解释。
2.2 矢量的几何定义
- 矢量的大小(Magnitude):指矢量长度,矢量可以有非负长度
- 长度(Length)/ 范数(Norm)
- 或
- 矢量的方向(Direction):描述矢量在空间中指向的方向
2.11 矢量点积
点积 Dot Product / 内积 Inner Product
点乘必须要有“”,否则视为矩阵乘法
称为 a 帽(hat),代表 a 方向的单位向量
可以视为 b 在 a 方向上的投影
点乘满足乘法结合律、乘法交换律、乘法分配律
2.12 矢量叉积
叉积 Cross Product
u X v =
称为三重积
叉乘不可交换、不可结合
叉乘反交换:a X b = - ( a X b )
叉乘产生一个新矢量,垂直于原始矢量的平面
产生的矢量的方向决定于左/右手螺旋定则
矢量线性代数恒等式
十一 力学 1:线性运动学和微积分
概述
通常认为宇宙在空间和时间上都是离散的。物质可以被分解为原子,空间和时间的结构也可以被分解为离散的碎片。我们使用连续的理论对离散进行模拟。
经典力学,也就是牛顿力学(Newtonian Mechanics)的一些简化的假设:
- 时间是绝对的
- 空间是欧几里得空间
- 可以进行精确测量
- 宇宙表现出因果关系和完全可预测性
前两个被相对论打破,后两个被量子力学打破,但在游戏中够用
我们通过学习运动学(Kinematics)了解力学,运动学是在简单常见的情况下描述粒子运动方程式的研究。
而运动是动力学(Dynamics)的主题
基本数量和单位
长度(Length)
时间(TIme)
质量(Mass)
质量更精确的定义是对惯性(Inertia)的度量,是物质的固有属性,而重量(Wieght)则取决于当前被施加的引力(Gravity)强度。
速度(Velocity)定义为净位移(Net Displacement)/时间,可以为付
速率(Speed)定义为 L/T,不可为负
瞬时速度和导数
计算平均速度需要计算经过的时间和距离,而瞬时速度则不存在 ΔT ΔL,为此,牛顿发明了导数(Derivative)。
导数可以适用于任何一个变量随着其他变量的变化而变化的问题。
导数可以测量函数的变化率(Rate of Change)。
但一段时间内的速度恒定时可以用平均速度表示瞬时速度,当速度随时间变化时,可以使用导数函数计算任意时间点的瞬时速度。
通过定义计算导数
导数的定义:但输入的变化无穷小时,输出的变化除以输入的变化的比率。
导数的表示方法
- Title: 3D数学基础 图形和游戏开发
- Author: Jason Ma
- Created at: 2020-12-26 20:40:20
- Updated at: 2023-06-14 23:23:11
- Link: https://elysium.jason-ma.com/2020/12/26/Reading/3D数学基础 图形和游戏开发/
- License: This work is licensed under CC BY-NC-SA 4.0.