美文网首页
向量运算

向量运算

作者: angi_uan | 来源:发表于2017-12-02 14:18 被阅读0次

    //叉积和点积公式:
    向量:u=(u1,u2,u3) v=(v1,v2,v3)
    叉乘公式:u x v = { u2v3-v2u3 , u3v1-v3u1 , u1v2-u2v1 }
    点乘公式:u * v = u1v1+u2v2+u3v3

    //向量标准化
    function normalize() {
    let magSq = x * x + y * y + z * z
    if (magSq > 0) {
    let oneOverMag = 1 / Math.sqrt(magSq)
    x *= oneOverMag
    y *= oneOverMag
    z *= oneOverMag
    }
    }

    点乘几何意义:是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影。
    //点乘
    function dot(vec3) {
    return this.x * vec3.x + this.y * vec3.y + this.z * vec3.z
    }

    叉乘几何意义:通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系。二维空间中,aXb等于由向量a和向量b构成的平行四边形的面积。
    //叉乘
    function crossProduct(vec3) {
    return Vector3(this.y * vec3.z - this.z * vec3.y, this.z * vec3.x - this.x * vec3.z,
    this.x * vec3.y - this.y * vec3.x)
    }

    //向量模
    function vectorMag() {
    return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)
    }

    //两点间距离
    function distance(vec3_a, vec3_b) {
    let x = vec3_a.x - vec3_b.x,
    y = vec3_a.y - vec3_b.y,
    z = vec3_a.z - vec3_b.z
    return Math.sqrt(x * x + y * y + z * z)
    }

    相关文章

      网友评论

          本文标题:向量运算

          本文链接:https://www.haomeiwen.com/subject/xbdnbxtx.html