3D游戏与计算机图形学中的数学方法-----------1、向量

1、向量性质
n维向量可以表示为
V ⃗ = ⟨ V 1 , V 2 , ⋯   , V n ⟩ \vec{V} = \langle V_1,V_2,\cdots,V_n \rangle V =V1,V2,,Vn
数值 V i V_i Vi被称为向量 V ⃗ \vec{V} V 的分量。向量 V ⃗ \vec{V} V 也可表示成仅有一列n行的矩阵:
V ⃗ = [ V 1 V 2 ⋮ V n ] \vec{V} = \begin {bmatrix} V_1 \\V_2 \\ \vdots \\ V_n \\ \end {bmatrix} V =V1V2Vn
向量通常表示为这两种形式之一,但有时需要表示为一行n列的行向量形式,行向量表示成相应列向量的转置:
V ⃗ T = ⟨ V 1 , V 2 , ⋯   , V n ⟩ \vec{V}^T = \langle V_1,V_2,\cdots,V_n \rangle V T=V1,V2,,Vn
向量可以乘以一个标量变成一个新的向量,标量a与向量 V ⃗ \vec{V} V 的乘积定义如下:
a V ⃗ = V ⃗ a = ⟨ a V 1 , a V 2 , ⋯   , a V n ⟩ a\vec{V} = \vec{V}a = \langle aV_1,aV_2,\cdots,aV_n \rangle aV =V a=aV1,aV2,,aVn
a = − 1 a=-1 a=1时,用简化符号 − V ⃗ -\vec{V} V 表示向量 V ⃗ \vec{V} V 的反向量。
向量加减法: P ⃗ + Q ⃗ = ⟨ P 1 + Q 1 , P 2 + Q 2 , ⋯   , P n + Q n ⟩ \vec{P} + \vec{Q} = \langle P_1 + Q_1,P_2 + Q_2,\cdots,P_n + Q_n \rangle P +Q =P1+Q1,P2+Q2,,Pn+Qn
给定任意两个标量a和b,三个向量 P ⃗ 、 Q ⃗ 、 R ⃗ \vec{P}、\vec{Q}、\vec{R} P Q R ,以下性质成立。
(a) P ⃗ + Q ⃗ = Q ⃗ + P ⃗ \vec{P} + \vec{Q} = \vec{Q} + \vec{P} P +Q =Q +P
(b) ( P ⃗ + Q ⃗ ) + R ⃗ = P ⃗ + ( Q ⃗ + R ⃗ ) (\vec{P} + \vec{Q}) + \vec{R} = \vec{P} + (\vec{Q} + \vec{R}) (P +Q )+R =P +(Q +R )
© ( a b ) P ⃗ = a ( b P ⃗ ) (ab)\vec{P} = a(b\vec{P}) (ab)P =a(bP )
(d) a ( P ⃗ + Q ⃗ ) = a P ⃗ + a Q ⃗ a(\vec{P} + \vec{Q}) = a\vec{P} + a\vec{Q} a(P +Q )=aP +aQ
(e) ( a + b ) P ⃗ = a P ⃗ + b P ⃗ (a + b)\vec{P} = a\vec{P} + b\vec{P} (a+b)P =aP +bP
n维向量 V ⃗ \vec{V} V 的绝对值是一个标量,用 ∣ ∣ V ⃗ ∣ ∣ || \vec{V} || V 表示,计算公式如下:
∣ ∣ V ⃗ ∣ ∣ = ∑ i = 1 n V i 2 || \vec{V} || = \sqrt {\sum_{i=1}^{n}V_i^2} V =i=1nVi2
给定任意标量a和任意两个向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q ,以下性质成立。
(a) ∣ ∣ P ⃗ ∣ ∣ ≥ 0 || \vec{P} || \geq 0 P 0
(b) 当且仅当 P ⃗ = ⟨ 0 , 0 , ⋯   , 0 ⟩ , ∣ ∣ P ⃗ ∣ ∣ = 0 \vec{P} = \langle 0,0,\cdots,0 \rangle,||\vec{P}|| = 0 P =0,0,,0P =0
(d) ∣ ∣ P ⃗ + Q ⃗ ∣ ∣ ≤ ∣ ∣ P ⃗ ∣ ∣ + ∣ ∣ Q ⃗ ∣ ∣ ||\vec{P} + \vec{Q}|| \leq ||\vec{P}|| + ||\vec{Q}|| P +Q P +Q

2、内积和外积
两个向量的内积也被称为向量的点积或者标量积,内积可用来计算两个向量的方向差。
两个n维向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q 的内积可以表示为 P ⃗ ⋅ Q ⃗ \vec{P}\cdot\vec{Q} P Q ,是一个标量。计算公式如下:
P ⃗ ⋅ Q ⃗ = ∑ i = 1 n P i Q i \vec{P}\cdot\vec{Q} = \sum_{i=1}^{n} P_iQ_i P Q =i=1nPiQi
给定任意两个n维向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q ,内积 P ⃗ ⋅ Q ⃗ \vec{P}\cdot\vec{Q} P Q 满足以下等式。
P ⃗ ⋅ Q ⃗ = ∣ ∣ P ⃗ ∣ ∣   ∣ ∣ Q ⃗ ∣ ∣ c o s α \vec{P}\cdot\vec{Q} = ||\vec{P}||\space||\vec{Q}||cos\alpha P Q =P  Q cosα
其中 α \alpha α是坐标原点分别与向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q 对应的点之间连线的夹角。
给定任意标量a和任意三个向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q R ⃗ \vec{R} R ,向量内积具有以下性质。
(a) P ⃗ ⋅ Q ⃗ = Q ⃗ ⋅ P ⃗ \vec{P}\cdot\vec{Q} = \vec{Q}\cdot\vec{P} P Q =Q P
(b) ( a P ⃗ ) ⋅ Q ⃗ = a ( P ⃗ ⋅ Q ⃗ ) (a\vec{P})\cdot\vec{Q} = a(\vec{P}\cdot\vec{Q}) (aP )Q =a(P Q )
© P ⃗ ⋅ ( Q ⃗ + R ⃗ ) = P ⃗ ⋅ Q ⃗ + P ⃗ ⋅ R ⃗ \vec{P}\cdot(\vec{Q} + \vec{R}) = \vec{P}\cdot\vec{Q} + \vec{P}\cdot\vec{R} P (Q +R )=P Q +P R
(d) P ⃗ ⋅ P ⃗ = ∣ ∣ P ⃗ ∣ ∣ 2 \vec{P}\cdot\vec{P} = ||\vec{P}||^2 P P =P 2
(e) ∣ P ⃗ ⋅ Q ⃗ ∣ ≤ ∣ ∣ P ⃗ ∣ ∣   ∣ ∣ Q ⃗ ∣ ∣ |\vec{P}\cdot\vec{Q}|\leq||\vec{P}||\space||\vec{Q}|| P Q P  Q
向量 P ⃗ \vec{P} P 在向量 Q ⃗ \vec{Q} Q 上的投影
p r o j Q P ⃗ = P ⃗ ⋅ Q ⃗ ∣ ∣ Q ⃗ ∣ ∣ 2 Q ⃗ proj_Q\vec{P}=\frac{\vec{P}\cdot\vec{Q}}{||\vec{Q}||^2}\vec{Q} projQP =Q 2P Q Q
向量 P ⃗ \vec{P} P 相对于向量 Q ⃗ \vec{Q} Q 的垂直分量可表示为
p e r p Q P ⃗ = P ⃗ − P ⃗ ⋅ Q ⃗ ∣ ∣ Q ⃗ ∣ ∣ 2 Q ⃗ perp_Q\vec{P}=\vec{P}-\frac{\vec{P}\cdot\vec{Q}}{||\vec{Q}||^2}\vec{Q} perpQP =P Q 2P Q Q
两个三维向量的外积也称为向量积,两个向量的外积可以产生一个与这两个向量都垂直的新向量。
给定两个三维向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q ,它们的外积可写为 P ⃗ × Q ⃗ \vec{P}\times\vec{Q} P ×Q ,其结果也为一个向量:
P ⃗ × Q ⃗ = ⟨ P y Q z − P z Q y , P z Q x − P x Q z , P x Q y − P y Q x ⟩ \vec{P}\times\vec{Q}=\langle P_yQ_z-P_zQ_y,P_zQ_x-P_xQ_z,P_xQ_y-P_yQ_x\rangle P ×Q =PyQzPzQy,PzQxPxQz,PxQyPyQx
令两个向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q 为三维向量,则 ( P ⃗ × Q ⃗ ) ⋅ P ⃗ = 0 (\vec{P}\times\vec{Q})\cdot\vec{P}=0 (P ×Q )P =0,而且 ( P ⃗ × Q ⃗ ) ⋅ Q ⃗ = 0 (\vec{P}\times\vec{Q})\cdot\vec{Q}=0 (P ×Q )Q =0
给定两个三维向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q ,外积 P ⃗ × Q ⃗ \vec{P}\times\vec{Q} P ×Q 满足一下方程:
∣ ∣ P ⃗ × Q ⃗ ∣ ∣ = ∣ ∣ P ⃗ ∣ ∣   ∣ ∣ Q ⃗ ∣ ∣ s i n α ||\vec{P}\times\vec{Q}||=||\vec{P}||\space||\vec{Q}||sin\alpha P ×Q =P  Q sinα
以上公式计算出的两个向量的外积的大小等于平行四边形的面积,该平行四边形的两个邻边分别是两个向量 P ⃗ \vec{P} P 和向量 Q ⃗ \vec{Q} Q ,继而可得出,有三个顶点 V 1 ⃗ \vec{V_1} V1 V 2 ⃗ \vec{V_2} V2 V 3 ⃗ \vec{V_3} V3 组成的任意三角形的面积A可由以下公式计算:
A = 1 2 ∣ ∣ ( V 2 ⃗ − V 1 ⃗ ) × ( V 3 ⃗ − V 1 ⃗ ) ∣ ∣ A = \frac{1}{2}||(\vec{V_2}-\vec{V_1})\times(\vec{V_3}-\vec{V_1})|| A=21(V2 V1 )×(V3 V1 )
规定向量外积得到的新向量遵循右手定律,右手手指的方向与向量 P ⃗ \vec{P} P 的方向对齐,手掌朝向向量 Q ⃗ \vec{Q} Q 的方向,则拇指所指的方向就是向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q 的外积 P ⃗ × Q ⃗ \vec{P}\times\vec{Q} P ×Q 的方向。
给定任意两个标量a和b以及任意3个三维向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q R ⃗ \vec{R} R ,向量外积具有以下性质。
(a) Q ⃗ × P ⃗ = − ( P ⃗ × Q ⃗ ) \vec{Q}\times\vec{P} = -(\vec{P}\times\vec{Q}) Q ×P =(P ×Q )
(b) ( a P ⃗ ) × Q ⃗ = a ( P ⃗ × Q ⃗ ) (a\vec{P})\times\vec{Q} = a(\vec{P}\times\vec{Q}) (aP )×Q =a(P ×Q )
© P ⃗ × ( Q ⃗ + R ⃗ ) = P ⃗ × Q ⃗ + P ⃗ × R ⃗ \vec{P}\times(\vec{Q} + \vec{R}) = \vec{P}\times\vec{Q} + \vec{P}\times\vec{R} P ×(Q +R )=P ×Q +P ×R
(d) P ⃗ × P ⃗ = 0 ⃗ = ⟨ 0 , 0 , 0 ⟩ \vec{P}\times\vec{P} = \vec{0} = \langle0,0,0\rangle P ×P =0 =0,0,0
(e) ( P ⃗ × Q ⃗ ) ⋅ R ⃗ = ( R ⃗ × P ⃗ ) ⋅ Q ⃗ = ( Q ⃗ × R ⃗ ) ⋅ P ⃗ (\vec{P}\times\vec{Q})\cdot\vec{R}=(\vec{R}\times\vec{P})\cdot\vec{Q}=(\vec{Q}\times\vec{R})\cdot\vec{P} (P ×Q )R =(R ×P )Q =(Q ×R )P
(f) P ⃗ × ( Q ⃗ × P ⃗ ) = P ⃗ × Q ⃗ × P ⃗ = P ⃗ 2 Q ⃗ − ( P ⃗ ⋅ Q ⃗ ) P ⃗ \vec{P}\times(\vec{Q}\times\vec{P})=\vec{P}\times\vec{Q}\times\vec{P}=\vec{P}^2\vec{Q}-(\vec{P}\cdot\vec{Q})\vec{P} P ×(Q ×P )=P ×Q ×P =P 2Q (P Q )P

3、向量空间
向量空间是一个集合V,该集合的元素都是向量,定义了加法和标量乘法,则以下性质成立。
(a)集合V对加法运算封闭,即集合V中的任意向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q ,它们的和 P ⃗ + Q ⃗ \vec{P}+\vec{Q} P +Q 也是集合V的向量。
(b)集合V对标量乘法运算封闭,即对于任意实数a和集合V中的任意向量 P ⃗ \vec{P} P ,它们的积 a P ⃗ a\vec{P} aP 也是集合V的向量。
(c)集合V中存在 0 ⃗ \vec{0} 0 向量,对于集合V中的任意向量 P ⃗ \vec{P} P P ⃗ + 0 ⃗ = 0 ⃗ + P ⃗ = P ⃗ \vec{P}+\vec{0}=\vec{0}+\vec{P}=\vec{P} P +0 =0 +P =P 成立。
(d)对于集合V中的任意向量 P ⃗ \vec{P} P ,集合V中存在向量 Q ⃗ \vec{Q} Q ,使 P ⃗ + Q ⃗ = 0 ⃗ \vec{P}+\vec{Q}=\vec{0} P +Q =0 成立。
(e)集合V中的向量满足结合律,即对于集合V中的任意向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q R ⃗ \vec{R} R ( P ⃗ + Q ⃗ ) + R ⃗ = P ⃗ + ( Q ⃗ + R ⃗ ) (\vec{P}+\vec{Q})+\vec{R}=\vec{P}+(\vec{Q}+\vec{R}) (P +Q )+R =P +(Q +R )成立。
(f)标量乘法满足结合律,即对于任意实数a和b,以及集合V中的任意向量 P ⃗ \vec{P} P ( a b ) P ⃗ = a ( b P ⃗ ) (ab)\vec{P}=a(b\vec{P}) (ab)P =a(bP )成立。
(g)标量与向量和的乘法满足分配律,即对于任意实数a,以及集合V中的任意向量 P ⃗ \vec{P} P Q ⃗ \vec{Q} Q a ( P ⃗ + Q ⃗ ) = a P ⃗ + a Q ⃗ a(\vec{P}+\vec{Q})=a\vec{P}+a\vec{Q} a(P +Q )=aP +aQ 成立。
(h)标量和与向量的乘法满足分配律,即对于任意实数a和b,以及集合V中的任意向量 P ⃗ \vec{P} P a ( P ⃗ + Q ⃗ ) = a P ⃗ + a Q ⃗ a(\vec{P}+\vec{Q})=a\vec{P}+a\vec{Q} a(P +Q )=aP +aQ 成立。
对于含有那个向量的集合 { e 1 ⃗ , e 2 ⃗ , ⋯   , e n ⃗ } \lbrace \vec{e_1},\vec{e_2},\cdots,\vec{e_n} \rbrace {e1 ,e2 ,,en },如果不存在不全为0的数 a 1 , a 2 , ⋯   , a n a_1,a_2,\cdots,a_n a1,a2,,an使下式成立,则向量集合线性无关。
a 1 e 1 ⃗ + a 2 e 2 ⃗ + ⋯ + a n e n ⃗ = 0 ⃗ a_1\vec{e_1}+a_2\vec{e_2}+\cdots+a_n\vec{e_n}=\vec{0} a1e1 +a2e2 ++anen =0
反之,则向量集合线性相关。
向量空间V的基 β \beta β是n个线性无关向量的集合, β = { e 1 ⃗ , e 2 ⃗ , ⋯   , e n ⃗ } \beta=\lbrace \vec{e_1},\vec{e_2},\cdots,\vec{e_n} \rbrace β={e1 ,e2 ,,en },对于向量空间V中的任意向量 P ⃗ \vec{P} P ,存在一组实数 a 1 , a 2 , ⋯   , a n a_1,a_2,\cdots,a_n a1,a2,,an,使下式成立。
P ⃗ = a 1 e 1 ⃗ + a 2 e 2 ⃗ + ⋯ + a n e n ⃗ \vec{P}=a_1\vec{e_1}+a_2\vec{e_2}+\cdots+a_n\vec{e_n} P =a1e1 +a2e2 ++anen
一个向量空间有无穷多个基。
在向量空间的基 β \beta β中,如果任意两个向量 e i ⃗ \vec{e_i} ei e j ⃗ \vec{e_j} ej i ≠ j i\neq j i=j,且 e i ⃗ ⋅ e j ⃗ = 0 \vec{e_i}\cdot\vec{e_j}=0 ei ej =0,则基 β \beta β称为向量空间的正交基。
给定任意两个向量 e 1 ⃗ \vec{e_1} e1 e 2 ⃗ \vec{e_2} e2 ,如果 e 1 ⃗ ⋅ e 2 ⃗ = 0 \vec{e_1}\cdot\vec{e_2}=0 e1 e2 =0,则 e 1 ⃗ \vec{e_1} e1 e 2 ⃗ \vec{e_2} e2 两个向量线性无关。
在向量空间V中,找到n个正交向量,那么这些正交向量的集合组成向量空间的基。
对于向量空间的正交基,如果其中每个向量的长度均为1,则称为规范正交基。为了方便表示,引入克罗内克符号函数
δ i j ≡ { 1 , 如果 i = j 0 , 如果 i ≠ j \delta_{ij}\equiv\begin{cases} 1, & \text {如果$i=j$} \\ 0, & \text {如果$i\neq j$} \end{cases} δij{1,0,如果i=j如果i=j
在向量空间的基 β = { e 1 ⃗ , e 2 ⃗ , ⋯   , e n ⃗ } \beta=\lbrace \vec{e_1},\vec{e_2},\cdots,\vec{e_n} \rbrace β={e1 ,e2 ,,en }中,如果任意两个向量 e i ⃗ \vec{e_i} ei e j ⃗ \vec{e_j} ej e i ⃗ ⋅ e j ⃗ = δ i j \vec{e_i}\cdot\vec{e_j}=\delta_{ij} ei ej =δij,则基 β \beta β称为向量空间的规范正交基。
下面使在向量空间中,将n个线性无关向量组成的集合变换成正交基的方法。
Gram-Schmidt正交化算法。给定n个线性无关向量组成的集合 β \beta β β = { e 1 ⃗ , e 2 ⃗ , ⋯   , e n ⃗ } \beta=\lbrace \vec{e_1},\vec{e_2},\cdots,\vec{e_n} \rbrace β={e1 ,e2 ,,en },该算法可计算出向量集合 β ′ = { e 1 ′ ⃗ , e 2 ′ ⃗ , ⋯   , e n ′ ⃗ } \beta^\prime=\lbrace \vec{e_1^\prime},\vec{e_2^\prime},\cdots,\vec{e_n^\prime} \rbrace β={e1 ,e2 ,,en },当 i ≠ j i\neq j i=j时, e i ′ ⃗ ⋅ e j ′ ⃗ = 0 \vec{e_i^\prime}\cdot\vec{e_j^\prime}=0 ei ej =0
(a) 令 e 1 ′ ⃗ = e 1 ⃗ \vec{e_1^\prime}=\vec{e_1} e1 =e1
(b) i = 2 i=2 i=2
© 从向量 e i ⃗ \vec{e_i} ei 中减去 e i ⃗ \vec{e_i} ei 在向量 e 1 ′ ⃗ , e 2 ′ ⃗ , ⋯   , e i − 1 ′ ⃗ \vec{e_1^\prime},\vec{e_2^\prime},\cdots,\vec{e_{i-1}^\prime} e1 ,e2 ,,ei1 上的投影,结果保存到 e i ′ ⃗ \vec{e_i^\prime} ei 中,即
e i ′ ⃗ = e i ⃗ − ∑ k = 1 i − 1 e i ⃗ ⋅ e k ′ ⃗ e k ′ ⃗ 2 e k ′ ⃗ \vec{e_i^\prime}=\vec{e_i}-\sum_{k=1}^{i-1}{\frac{\vec{e_i}\cdot\vec{e_k^\prime}}{\vec{e_k^\prime}^2}\vec{e_k^\prime}} ei =ei k=1i1ek 2ei ek ek
(d) 如果 i < n i<n i<n i i i加1,转到步骤©。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
3D游戏计算机图形学数学方法是指在游戏和图形学领域使用的数学原理、算法和技术。这些数学方法的应用可以帮助我们实现逼真的图形效果和流畅的游戏体验。 在3D游戏数学方法被广泛应用于处理和渲染3D模型、光照和阴影、纹理映射、相机投影等方面。通过应用线性代数、矩阵运算和几何学等数学方法,我们可以计算出3D模型的位置、旋转和缩放,以及模型之间的碰撞检测和物理模拟。 另外,在计算机图形学数学方法也广泛应用于图形算法和渲染技术的开发。比如,光线追踪算法需要使用向量和数值计算来模拟光线的传播和反射;反走样算法利用采样理论和随机数生成来减少图形的锯齿感;着色器程序利用向量和矩阵运算来计算光照效果和材质属性等。 此外,数学方法还被应用于游戏的物理引擎开发。物理引擎使用物理学的方程和数值计算来模拟游戏的物体运动、碰撞和力的作用。通过应用牛顿定律、刚体动力学和碰撞检测的数学方法,我们可以实现真实世界的物理效果,从而让游戏更加逼真和惟妙惟肖。 总之,3D游戏计算机图形学数学方法是实现逼真图形和流畅游戏的基础。通过应用线性代数、几何学、向量和矩阵运算等数学原理,我们可以计算、模拟和渲染出令人惊叹的图形效果,同时实现真实世界的物理效果。这些数学方法的运用使得游戏计算机图形学领域取得了巨大的发展和进步。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值