UNPKG

@design-automation/mobius-inline-funcs

Version:
31 lines 1.99 kB
import * as vectors from '../../libs/vectors'; import { getArrDepth } from '../../libs/arrs'; // ================================================================================================ /** * Calculates a normalised vector with a direction that is the average of the directions of the input vectors. * \n * The result is equivalent to: * `vec = vecNorm(vecSum(vecNorm(v)))` * \n * Note that if the input vectors cancel each other out, the result will be `[0,0,0]`. * \n * The function can be called in two ways: * `vec = vecAvgDir([vec1, vec2, vec3])` * `vec = vecAvgDir(vec1, vec2, vec3)` * \n * @param v A list of input vectors or just multiple vectors. * @returns The result vector. */ export function vecAvgDir(...v) { const depth1 = getArrDepth(v); if (depth1 > 2) { // @ts-ignore v = v.slice().flat(depth1 - 2); } else if (depth1 < 2) { throw new Error('Error averaging vectors: The vectors are bad.' + JSON.stringify(v)); } // return the average vector return vectors.vecAvgDir(v); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjQXZnRGlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2lubGluZS92ZWMvdmVjQXZnRGlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTlDLG1HQUFtRztBQUNuRzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNGLE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBRyxDQUFTO0lBQ25DLE1BQU0sTUFBTSxHQUFXLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDWixhQUFhO1FBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ2xDO1NBQU0sSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3hGO0lBQ0QsNEJBQTRCO0lBQzVCLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQVMsQ0FBQztBQUN4QyxDQUFDIn0=