kingBook

导航

向量的点积(标量积、内积)

几何意义:

1.计算两个向量之间的夹角
2.计算一个向量在另一个向量上的投影

代数定义:

\(\vec{a} \bullet \vec{b}=x_{1} x_{2}+y_{1} y_{2}\)

几何定义

\(\vec{a} \bullet \vec{b}=|\vec{a}| |\vec{b}| \cos \theta\)

进而可以进一步判断两个向量是否同一方向或正交(即垂直)等方向关系,具体对应关系为:
\(\vec{a} \bullet \vec{b} >0\) → 方向基本相同,夹角在0°到90°之间
\(\vec{a} \bullet \vec{b} =0\) → 正交,相互垂直
\(\vec{a} \bullet \vec{b} <0\) → 方向基本相反,夹角在90°到180°之间

单位化向量的点积:

\(\vec{a} \bullet \vec{b} =0\) → 正交,相互垂直
\(\vec{a} \bullet \vec{b} =1\) → 相互平行

运算律
交换律: \(\vec{a} \bullet \vec{b}=\vec{b} \bullet \vec{a}\)
分配律: \(\vec{a} \bullet(\vec{b}+\vec{c})=\vec{a} \bullet \vec{b}+\vec{a} \bullet \vec{c}\)
结合律: \((m \vec{a}) \bullet \vec{b}=m(\vec{a} \bullet \vec{b})=\vec{a} \bullet(m \vec{b}) ,其中m是实数。\)

几何定义推导代数定义:

代数定义推导几何定义:


计算点直线的垂直距离:

// unity 代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestPointDistanceLine : MonoBehaviour {

    public Transform point;
    public Transform lineStart;
    public Transform lineEnd;
    public Transform perpendicular;

    private void Update () {
        Vector3 a = point.position - lineStart.position; 
        Vector3 b = lineEnd.position - lineStart.position;

        float distance = Mathf.Abs(Vector3.Dot(a,b.normalized)); //方法一: 求向量 a 在向量 b 上的投影长度

        Vector3 projectVector = Vector3.Project(a, b); //方法二: 求向量 a 在向量 b 上的投影向量,然后取向量长度
        perpendicular.position = lineStart.position + projectVector;

        Debug.Log($"distance:{distance}, projectVector.magnitude:{projectVector.magnitude}");
    }
}

主要代码:

float distance = Mathf.Abs(Vector3.Dot(a,b.normalized));

推算过程:


https://www.cnblogs.com/gxcdream/p/7597865.html
https://baike.baidu.com/item/点积

反射向量计算:
https://www.cnblogs.com/graphics/archive/2013/02/21/2920627.html
投影后的向量计算:
https://www.cnblogs.com/graphics/archive/2010/08/03/1791626.html
点到直线与面的距离公式:
https://zhuanlan.zhihu.com/p/63499708

通俗理解三维向量的点乘与叉乘:
https://blog.csdn.net/qq_37366618/article/details/126388327

posted on 2019-04-12 16:03  kingBook  阅读(2661)  评论(0编辑  收藏  举报