向量除法——标量乘法的逆运算
一、問(wèn)題提出
已知一個(gè)n維向量A,和一個(gè)標(biāo)量k,可將它們進(jìn)行標(biāo)量乘法運(yùn)算,得到向量B——
B = kA
那么,若只知兩個(gè)共線的向量A、B,如何求k呢,既——
k = B/A = ?
二、解決辦法
我們可以將上下均乘以(點(diǎn)積,dot product)“A”——
k = B/A
= (B . A)/(A . A)
= (B . A)/( |A|^2 )
= (b1*a1 + b2*a2 + b3*a3 + ... + bn*an) / ( a1*a1 + a2*a2 + a3*a3 + ... + an*an )
三、幾何解釋、推廣到非共線向量
先回憶一下向量點(diǎn)積的的幾何算法——
A . B = |A| * |B| * cos(th)
注:th是兩個(gè)向量的夾角
將上式除以 |A|(向量A的模長(zhǎng)),可得出向量B在向量A上的投影的模長(zhǎng)——
| Prj(B)A | = |A| * |B| * cos(th) / |A| = |B| * cos(th)
將投影的模長(zhǎng)再除以 |A|,既是 投影模長(zhǎng)在總長(zhǎng)度的比例——
k = | Prj(B)A | / |A| = (|B|/|A|) * cos(th)
對(duì)于共線向量而言,很明顯,就是先前欲求的標(biāo)量k值。
對(duì)于非共線向量而言,則是投影向量的相關(guān)k值。
也就是說(shuō),不論是否共線,該除法都有值(除非A是零向量)。
在很多時(shí)候,這個(gè)特性很有用。比如在寫圖形編輯系統(tǒng)時(shí),需要計(jì)算點(diǎn)擊位置是線段的哪一部分。因?yàn)槭髽?biāo)點(diǎn)擊坐標(biāo)是有理數(shù)(比例尺),而線段的斜率有可能是無(wú)理數(shù),這會(huì)造成兩個(gè)向量不是共線的。而本文的除法算法,可以穩(wěn)健的處理這一情況。而且投影向量更符合一般的操作習(xí)慣。
?
總結(jié)
以上是生活随笔為你收集整理的向量除法——标量乘法的逆运算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OpenCV_轮廓的查找、表达、绘制、特
- 下一篇: LightSwitch 2011 数据字