图形数学基础

1. 代数

1.1 笛卡尔坐标系

相交于原点的三条不共面的数轴构成空间的放射坐标系。三条数轴上度量单位相等的放射坐标系被称为空间笛卡尔坐标系。三条数轴互相垂直的笛卡尔坐标系被称为空间笛卡尔直角坐标系[^1]。空间笛卡尔直角坐标系是我们最常使用的一套坐标系,后面简称为坐标系,后续内容都基于此坐标系。

1.2 点

一个坐标系里的所有点 P P P可以表示为
P = [ x , y , z , w ] = [ x , y , z , 1 ] , 其 中 w ≡ 1 P=[x, y, z, w]=[x, y, z, 1] , 其中w\equiv1 P=[x,y,z,w]=[x,y,z,1],w1
x , y , z x, y, z x,y,z表示点 P P P离该坐标系原点 O = [ 0 , 0 , 0 , 1 ] O=[0, 0, 0, 1] O=[0,0,0,1]的距离 。

1.3 向量

向量是只有大小和方向的量。点之间的关系可以用向量 V ⃗ \vec{V} V 来表示
V ⃗ = [ x , y , z , w ] = [ x , y , z , 0 ] , 其 中 w ≡ 0 ∣ V ⃗ ∣ = d o t ( V ⃗ , V ⃗ ) = x ∗ x + y ∗ y + z ∗ z \vec{V} = [x, y, z, w] = [x, y, z, 0] , 其中w\equiv0 \\ |\vec{V}|=dot(\vec{V},\vec{V})=\sqrt{x*x+y*y+z*z} V =[x,y,z,w]=[x,y,z,0],w0V =dot(V ,V )=xx+yy+zz

向量的点积,可用于求两个向量间的夹角
d o t ( a ⃗ , b ⃗ ) = ∣ a ⃗ ∣ ∗ ∣ b ⃗ ∣ ∗ cos ⁡ ( θ ) = x a ∗ x b + y a ∗ y b + z a ∗ z b dot(\vec{a},\vec{b})=|\vec{a}|*|\vec{b}|*\cos(\theta)=\sqrt{x_a*x_b+y_a*y_b+z_a*z_b} dot(a ,b )=a b cos(θ)=xaxb+yayb+zazb
其中 θ \theta θ是两个向量间的夹角。

向量的叉积,一般用于求两个向量所定义的平面的法向量
a ⃗ × b ⃗ = ∣ a ⃗ ∣ ∗ ∣ b ⃗ ∣ ∗ sin ⁡ ( θ ) \vec{a} \times \vec{b}=|\vec{a}|*|\vec{b}|*\sin(\theta) a ×b =a b sin(θ)

1.4 矩阵

矩阵是一组元素按某些规则排列而成,使用符号 M M M表示
M = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n … … … … a m 1 a m 2 ⋯ a m n ] M = \left[ \begin{matrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \ldots & \ldots & \ldots & \ldots\\ a_{m1} & a_{m2} &\cdots & a_{mn}\\ \end{matrix} \right] M=a11a21am1a12a22am2a1na2namn

矩阵的行列式。

矩阵乘法。要求满足左边的列数等于右边的行数。不满足交换律,满足结合律、分配律。

转置矩阵。

逆矩阵。奇异矩阵,不可逆。

正交矩阵。装置矩阵等于逆矩阵。计算转置矩阵比计算逆矩阵快。

2. 变换矩阵

2.1 平移

平移是一个点到另一个点的变换,使用矩阵 T T T表示
T ( t ⃗ ) = T ( t x , t y , t z ) = [ 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 ] T(\vec{t})= T(t_x,t_y, t_z)= \left[ \begin{matrix} 1 & 0 & 0 & t_x\\ 0 & 1 & 0 & t_y\\ 0 & 0 & 1 & t_z\\ 0 & 0 & 0 & 1\\ \end{matrix} \right] T(t )=T(tx,ty,tz)=100001000010txtytz1
T − 1 ( t ⃗ ) = T ( − t ⃗ ) T^{-1}(\vec{t})=T(-\vec{t}) T1(t )=T(t )

2.2 旋转

旋转需要绕某一坐标轴来进行旋转,使用矩阵 R R R表示
R x ( θ ) = [ 1 0 0 0 0 cos ⁡ θ − sin ⁡ θ 0 0 sin ⁡ θ cos ⁡ θ 0 0 0 0 1 ] R y ( θ ) = [ cos ⁡ θ 0 sin ⁡ θ 0 0 1 0 0 − sin ⁡ θ 0 cos ⁡ θ 0 0 0 0 1 ] R z ( θ ) = [ cos ⁡ θ − sin ⁡ θ 0 0 sin ⁡ θ cos ⁡ θ 0 0 0 0 1 0 0 0 0 1 ] R_x(\theta)= \left[ \begin{matrix} 1 & 0 & 0 & 0\\ 0 & \cos\theta & -\sin\theta & 0\\ 0 & \sin\theta & \cos\theta & 0\\ 0 & 0 & 0 & 1\\ \end{matrix} \right]\\ \\ R_y(\theta)= \left[ \begin{matrix} \cos\theta & 0 & \sin\theta & 0\\ 0 & 1 & 0 & 0\\ -\sin\theta & 0& \cos\theta & 0\\ 0 & 0 & 0 & 1\\ \end{matrix} \right]\\ \\ R_z(\theta)= \left[ \begin{matrix} \cos\theta & -\sin\theta & 0 & 0\\ \sin\theta & \cos\theta & 0 & 0\\ 0 & 0& 1 & 0\\ 0 & 0 & 0 & 1\\ \end{matrix} \right] Rx(θ)=10000cosθsinθ00sinθcosθ00001Ry(θ)=cosθ0sinθ00100sinθ0cosθ00001Rz(θ)=cosθsinθ00sinθcosθ0000100001
R i − 1 ( θ ) = R i ( − θ ) R_i^{-1}(\theta)=R_i(-\theta) Ri1(θ)=Ri(θ)

2.3 缩放

缩放使用矩阵 S S S表示
S ( t ⃗ ) = S ( s x , s y , s z ) = [ s x 0 0 0 0 s y 0 0 0 0 s z 0 0 0 0 1 ] S(\vec{t})= S(s_x,s_y, s_z)=\left[ \begin{matrix} s_x & 0 & 0 & 0\\ 0 & s_y & 0 & 0\\ 0 & 0 & s_z & 0\\ 0 & 0 & 0 & 1\\ \end{matrix} \right] S(t )=S(sx,sy,sz)=sx0000sy0000sz00001
S − 1 ( s ⃗ ) = S ( 1 / s ⃗ ) = S ( 1 / s x , 1 / s y , 1 / s z ) S^{-1}(\vec{s})=S(1/\vec{s})= S(1/s_x,1/s_y, 1/s_z) S1(s )=S(1/s )=S(1/sx,1/sy,1/sz)

2.4 切变

进行切变变换的物体的面积不变,使用 H H H表示

2.5 矩阵的连接和分解

TRS

2.6 模型空间、世界空间、观察空间和齐次裁剪空间

变换矩阵

3. 四元数

欧拉角和四元数之间的转换关系。

万向节死锁。

推荐书籍

  1. 《Real-Time Rendering, Fourth Edition》Chapter4
  2. 《Physically Based Rendering, Third Edition》Chapter2
  3. 《Fundamentals of Computer Graphics, Fourth Edition》Chapter4,5
  4. 《Introduction to 3D Game Programming with DirectX 12》Chapter1,2,3
  5. 《3D Math Primer for Graphics and Game Development, 2nd Edition》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值