头像

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=bab\vec a_{\shortparallel} = \vec b\frac{\left|\vec a_{\shortparallel}\right|}{\left| \vec b\right|}

然后观察到 cosθ=aa\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=bacosθb\vec a_{\shortparallel} = \vec b \frac{\left|\vec a\right|\cos\theta }{\left|\vec b\right|}

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

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

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

a=bab
\vec a_{\shortparallel} = \vec b \cdot \vec a \cdot \vec b

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