【数学】向量

【数学】向量

向量的运算

点乘

输入两个向量,输出一个标量。又称作标量积,内积。

定义

  • 几何定义:ab=abcos(θ)\vec{a} \cdot{} \vec{b} = |\vec{a}| |\vec{b}| \cos(\theta)
  • 代数定义:ab=i=1naibi=a1b1+a2b2++anbn\vec{a} \cdot{} \vec{b} = \sum_{i=1}^{n} a_i b_i = a_1 b_1 + a_2 b_2 + \dots + a_n b_n

意义

  • dot(a,b) > 0 :a 和 b 同向,即夹角为 0-90。
  • dot(a,b) = 0 :a 和 b 相互垂直。
  • dot(a,b) < 0 :a 和 b 反向,即夹角为 90-180。

性质

  • 满足交换律:ab=ba\vec{a} \cdot \vec{b} = \vec{b} \cdot \vec{a}
  • 满足加法分配律:a(b+c)=ab+ac\vec{a} \cdot (\vec{b} + \vec{c}) = \vec{a} \cdot \vec{b} + \vec{a} \cdot \vec{c}
  • 乘以标量时满足:(c1a)(c2b)=(c1c2)(ab)( c_1 \vec{a} ) \cdot ( c_2 \vec{b} ) = ( c_1 c_2 ) ( \vec{a} \cdot \vec{b} )

叉乘

输入两个向量,输出一个向量。又称作外积,向量积。

定义

  • 几何定义:

    a×b=absin(θ)n\vec{a} \times \vec{b} = |\vec{a}| |\vec{b}| \sin(\theta) \vec{n}

    其中θa,b的夹角,n是与a,b所构成的平面垂直的单位向量。其中 \theta 是 \vec{a},\vec{b} 的夹角,\vec{n}是与\vec{a},\vec{b}所构成的平面垂直的单位向量。

  • 代数定义:

    a×b=xyzaxayazbxbybz=x(1)1+1ayazbybz+y(1)1+2axazbxbz+z(1)1+3axaybxby=x(aybzazby)y(axbzazbx)+z(axbyaybx) \begin{aligned} \vec{a} \times \vec{b} &= \begin{vmatrix} \vec{x} & \vec{y} & \vec{z} \\ a_x & a_y & a_z \\ b_x & b_y & b_z \end{vmatrix}\\ &= \vec{x}(-1)^{1+1}\begin{vmatrix}a_y&a_z\\b_y&b_z\end{vmatrix}+ \vec{y}(-1)^{1+2}\begin{vmatrix}a_x&a_z\\b_x&b_z\end{vmatrix}+ \vec{z}(-1)^{1+3}\begin{vmatrix}a_x&a_y\\b_x&b_y\end{vmatrix}\\ &= \vec{x}(a_yb_z - a_zb_y) - \vec{y}(a_xb_z - a_zb_x) + \vec{z}(a_xb_y - a_yb_x) \end{aligned}

    其中x,y,z分别为三维空间的三个基向量其中\vec{x},\vec{y},\vec{z} 分别为三维空间的三个基向量

意义

  • 计算与 a 和 b 相垂直向量 c。
  • c 的模长等于以 a,b 为临边的四边形面积。
  • 伸出手,掌心对准 a 和 b 的夹角,手掌应能通过弯曲模拟 a 旋转到 b 的状态,此时大拇指为旋转轴,同时也便是叉乘出的新向量 c。

夹角

给定任意两个向量 a\vec{a}b\vec{b} 求其夹角:

angle(a,b)=arccos(abcos(θ)ab)=arccos(dot(a,b)ab)\begin{aligned} angle(\vec{a},\vec{b}) &= \arccos(\frac{|\vec{a}||\vec{b}|\cos(\theta)}{|\vec{a}||\vec{b}|}) \\ &= \arccos(\frac{dot(\vec{a},\vec{b})}{ |\vec{a}||\vec{b}|})\\ \end{aligned}

投影

v\vec{v} 是待投影的向量,n\vec{n} 是投影到的法线,则:

project(v,n)=nnvcos(θ)=nndot(v,n)n\begin{aligned} project(\vec{v},\vec{n}) &= \frac{\vec{n}}{|\vec{n}|} * |\vec{v}| \cos(\theta)\\ &= \frac{\vec{n}}{|\vec{n}|} * \frac{dot(\vec{v},\vec{n})}{|\vec{n}|} \end{aligned}

特别当 n\vec{n} 为单位向量时:

project(v,n)=ndot(v,n)project(\vec{v},\vec{n}) = \vec{n} * dot(\vec{v},\vec{n})

旋转

给定向量 v\vec{v}n\vec{n} 为旋转轴转 θ\theta 度,求旋转后新向量:

v=project(v,n)v=vvrotate(v,n,θ)=vcos(θ)+cross(n,v)sin(θ)+v\begin{aligned} \vec{v}_\parallel &= project(\vec{v},\vec{n})\\ \vec{v}_\perp &= \vec{v} - \vec{v}_\parallel\\ rotate(\vec{v},\vec{n},\theta) &= \vec{v}_{\perp} \cos(\theta) + cross(\vec{n},\vec{v}_{\perp}) \sin(\theta) + \vec{v}_{\parallel}\\ \end{aligned}

基本原理是将 v\vec{v} 拆解成两个向量旋转的复合:一个平行旋转轴故无需旋转;一个与旋转轴垂直,可借助叉乘构建二维旋转坐标系,利用三角函数轻松求出旋转后的向量;


【数学】向量
https://bdffzi-blog.pages.dev/posts/1182456995.html
作者
BDFFZI
发布于
2024年10月10日
许可协议