头像

zjian

Just Code!

帖子照片墙关于

求一个向量在另一个向量上的投影

2024-09-07 23:11

对于任一向量 a⃗\vec a ,计算在向量 b⃗\vec b 上的投影,可以把向量 a⃗\vec a 分解为 a⃗∥\vec a_{\shortparallel} 和 a⃗⊥\vec a_{\perp} , 有 a⃗=a⃗∥+a⃗⊥\vec a = \vec a_{\shortparallel} + \vec a_{\perp} , 其中a⃗∥\vec a_{\shortparallel} 是平行于b⃗\vec b 的, a⃗⊥\vec a_{\perp} 是垂直与b⃗\vec b 的。

image.png

如图,求向量 a 投影到向量 b 的投影,只需要求平行于 b 向量的长度即可。

然后可以观察到,a 平行 是平行与 b 向量的,所以容易得到,a⃗∥=b⃗∥a⃗∥∥∥b⃗∥\vec a_{\shortparallel} = \vec b\frac{\left|\vec a_{\shortparallel}\right|}{\left| \vec b\right|}

然后观察到 cos⁡θ=∥a⃗∥∥∥a⃗∥\cos \theta = \frac{\left|\vec a_{\shortparallel}\right|} {\left| \vec a \right|}

所以 ∥a⃗∥∥=cos⁡θ∥a⃗∥\left|\vec a_{\shortparallel}\right| = \cos \theta \left|\vec a\right|

带入得: a⃗∥=b⃗∥a⃗∥cos⁡θ∥b⃗∥\vec a_{\shortparallel} = \vec b \frac{\left|\vec a\right|\cos\theta }{\left|\vec b\right|}

又因为向量点积的公式是: a⃗⋅b⃗=∥a⃗∥∥b⃗∥cos⁡θ\vec a \cdot \vec b = {\left|\vec a\right|} {\left|\vec b\right| }\cos\theta

所以上面可以再简化为:a⃗∥=b⃗a⃗⋅b⃗∥b⃗∥2\vec a_{\shortparallel} = \vec b \frac{\vec a \cdot \vec b}{\left|\vec b\right|^2}

一般如果b⃗\vec b是单位向量,就可以简化:

a⃗∥=b⃗⋅a⃗⋅b⃗
\vec a_{\shortparallel} = \vec b \cdot \vec a \cdot \vec b

最后再求∥a⃗∥∥\left|\vec a_{\shortparallel}\right| 即可。