zoukankan      html  css  js  c++  java
  • 向量除法——标量乘法的逆运算

    一、问题提出

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

  • 相关阅读:
    5.2 输出一张随机图片
    5.1 Request 获取请求数据的几种方法
    5.Servlet 对象(request-response)
    4.Servlet(动态web资源)
    复选框、单选按钮、下拉列表的定义
    选择屏幕输入值的控制
    屏幕元素创建的基本语法
    屏幕对象的F1/F4输入帮助功能
    函数alv下的颜色设置
    BDIA增强
  • 原文地址:https://www.cnblogs.com/zyl910/p/Vector_Division.html
Copyright © 2011-2022 走看看