向量除法——标量乘法的逆运算

一、问题提出

  已知一个n维向量A,和一个标量k,可将它们进行标量乘法运算,得到向量B——
B = kA

  那么,若只知两个共线的向量A、B,如何求k呢,既——
k = B/A = ?


二、解决办法

  我们可以将上下均乘以(点积,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 )


三、几何解释、推广到非共线向量

  先回忆一下向量点积的的几何算法——
A . B = |A| * |B| * cos(th)
注:th是两个向量的夹角

  将上式除以 |A|(向量A的模长),可得出向量B在向量A上的投影的模长——
| Prj(B)A | = |A| * |B| * cos(th) / |A| = |B| * cos(th)

  将投影的模长再除以 |A|,既是 投影模长在总长度的比例——
k = | Prj(B)A | / |A| = (|B|/|A|) * cos(th)

  对于共线向量而言,很明显,就是先前欲求的标量k值。
  对于非共线向量而言,则是投影向量的相关k值。

  也就是说,不论是否共线,该除法都有值(除非A是零向量)。
  在很多时候,这个特性很有用。比如在写图形编辑系统时,需要计算点击位置是线段的哪一部分。因为鼠标点击坐标是有理数(比例尺),而线段的斜率有可能是无理数,这会造成两个向量不是共线的。而本文的除法算法,可以稳健的处理这一情况。而且投影向量更符合一般的操作习惯。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值