Skip to content
Snippets Groups Projects
Select Git revision
  • b961e9815cda6eeefdfcc1b6f974ca0261a7a630
  • master default protected
2 results

utils.ts

Blame
  • utils.ts 5.27 KiB
    
    
    export function vecAdd(vecOne: Array<number>, vecTwo: Array<number>){
        let vecSum: Array<number> = vecOne;
    
        vecSum[0] += vecTwo[0];
        vecSum[1] += vecTwo[1];
        vecSum[2] += vecTwo[2];
    
        return vecSum;
    }
    
    export function vecSubtract(vecOne: Array<number>, vecTwo: Array<number>){
        let vecSubt: Array<number> = vecOne;
    
        vecSubt[0] -= vecTwo[0];
        vecSubt[1] -= vecTwo[1];
        vecSubt[2] -= vecTwo[2];
    
        return vecSubt;
    }
    
    export function vecMultiply(vecOne: Array<number>, factor: number){
        vecOne[0] *= factor;
        vecOne[1] *= factor;
        vecOne[2] *= factor;
    
        return vecOne;
    }
    
    export function vecLength(vec: Array<number>){
        let length: number;
        length = Math.sqrt(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]);
        return length;
    }
    
    export function vecNormalize(vec: Array<number>){
        let computedLength = vecLength(vec);
        if(computedLength == 0){computedLength = 1};
    
        let inverse = 1 / computedLength;
    
        let normalized: Array<number> = new Array;
    
        normalized[0] = vec[0] * inverse;
        normalized[1] = vec[1] * inverse;
        normalized[2] = vec[2] * inverse;
    
        return normalized;
    }
    
    export function vecDotProduct(vecOne: Array<number>, vecTwo: Array<number>){
        let dotProduct = vecOne[0]*vecTwo[0] + vecOne[1]*vecTwo[1] + vecOne[2]*vecTwo[2];
        return dotProduct;
    }
    
    export function vecAngle(vecOne: Array<number>, vecTwo: Array<number>){
        //calculate radiant
        let radiant = Math.acos(vecDotProduct(vecOne, vecTwo) / (vecLength(vecOne) * vecLength(vecTwo)))
    
        //convert into degrees
        let degrees = radiant * 180 / Math.PI;
        return degrees;
    }
    
    export function vecCrossProduct(vecOne: Array<number>, vecTwo: Array<number>){
        let crossProduct : Array<number> = new Array;
    
        crossProduct[0] = vecOne[1]*vecTwo[2] - vecOne[2]*vecTwo[1];
        crossProduct[1] = vecOne[2]*vecTwo[0] - vecOne[0]*vecTwo[2];