任意向量通过平面法线,计算投影向量


任意向量通过平面法线,计算投影向量

点击查看:

某个厉害的网站算法解释

数学模型

如果无法翻墙的朋友就看下面吧


任意向量通过平面法线,计算投影向量_第1张图片
任意平面上的投影

已知

向量q

平面法线n

求q在法线为n的平面上的投影向量t


任意向量通过平面法线,计算投影向量_第2张图片
示意图


通过公式很容易就能得出

    Vector3 ProjectOnPlane(Vector3 vp,Vector3 vn)

    {

        Vector3 vt = new Vector3();

        vt = vp - vn * Vector3.Dot(vp, vn) / Vector3.Dot(vn, vn);

        return vt;

    }

其中的Vector3代表一个三维数据结构(x,y,z)

其中Vector3.Dot(v1,v2)代表的是向量的点乘,如果大家不知道点乘就可以看下面这段

点乘  :   v1 ⋅v2  = value;

v1是一个向量,v2也是一个向量,而点乘的结果value是一个浮点数(float,double)

点乘的空间意义,如果v1,v2都是单位向量(即长度为1的向量)那么v1 ⋅v2的结果可以反映两个向量的方向信息


当value值为1的时候,代表v1 v2的方向相同


当value值为0的时候代表v1 v2是互相垂直的


当value值为-1的时候代表v1 v2是反向的


很多人会把点乘和叉乘混淆,两个的意义和结果是完全不一样的

未完待续...



你可能感兴趣的:(任意向量通过平面法线,计算投影向量)