@equinor/videx-linear-algebra 1.0.20 → 1.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- import{clamp as clamp$1,step as step$1}from"@equinor/videx-math";function copy(source,target){for(var i=0;i<source.length;i++)target[i]=source[i];return target}function add(a,b,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=a[i]+b[i];return target}function addAll(vectors,target){void 0===target&&(target=vectors[0]),copy(vectors[0],target);for(var m=1;m<vectors.length;m++)for(var n=0;n<target.length;n++)target[n]+=vectors[m][n];return target}function sub(a,b,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=a[i]-b[i];return target}function subAll(a,vectors,target){void 0===target&&(target=a),copy(a,target);for(var m=0;m<vectors.length;m++)for(var n=0;n<target.length;n++)target[n]-=vectors[m][n];return target}function scale(a,factor,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=a[i]*factor;return target}function sumsqr(a){for(var sum=0,i=0;i<a.length;i++)sum+=Math.pow(a[i],2);return sum}function magnitude(a){var sq=sumsqr(a);return 0===sq?sq:Math.sqrt(sq)}function normalize(a,target){void 0===target&&(target=a);var len=magnitude(a);return 0===len?fill(0,target):scale(a,1/len,target)}function fill(value,target){for(var i=0;i<target.length;i++)target[i]=value;return target}function dir(a,b,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=b[i]-a[i];return target}function dist(a,b){for(var sq=0,i=0;i<a.length;i++)sq+=Math.pow(b[i]-a[i],2);return 0===sq?sq:Math.sqrt(sq)}function dot(a,b){for(var sum=0,i=0;i<a.length;i++)sum+=a[i]*b[i];return sum}function cross(a,b,target){void 0===target&&(target=a);var y=a[2]*b[0]-a[0]*b[2],z=a[0]*b[1]-a[1]*b[0];return target[0]=a[1]*b[2]-a[2]*b[1],target[1]=y,target[2]=z,target}function triple(a,b,c){return dot(a,cross(b,c))}function clamp(a,min,max,target){void 0===min&&(min=0),void 0===max&&(max=1),void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=clamp$1(a[i],min,max);return target}function step(edges,x,target){void 0===target&&(target=edges);for(var i=0;i<edges.length;i++)target[i]=step$1(edges[i],x);return target}function mix(a,b,t,target){void 0===target&&(target=a);for(var n=clamp$1(t,0,1),m=1-n,i=0;i<a.length;i++)target[i]=a[i]*m+b[i]*n;return target}function modify(a,modifier,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=modifier(a[i],i);return target}function isZeroVector(a,epsilon){void 0===epsilon&&(epsilon=0),void 0===epsilon&&(epsilon=0);for(var i=0;i<a.length;i++)if(Math.abs(a[i])>epsilon)return!1;return!0}function reverse(vector){for(var temp,tempIdx,end=vector.length-1,i=0;i<Math.ceil(end/2);i++)temp=vector[tempIdx=end-i],vector[tempIdx]=vector[i],vector[i]=temp;return vector}function flatten(vectors){for(var output=[],m=0;m<vectors.length;m++)for(var n=0;n<vectors[m].length;n++)output.push(vectors[m][n]);return output}function reshape(array,dimensions){for(var output=[],i=0;i<array.length;i+=dimensions){for(var vector=new Array(dimensions),n=0;n<dimensions;n++)vector[n]=array[i+n];output.push(vector)}return output}function isPointInTriangle(p,a,b,c,inwardAdjustment){void 0===inwardAdjustment&&(inwardAdjustment=1e-6);var centerX=.33333*(a[0]+b[0]+c[0]),centerY=.33333*(a[1]+b[1]+c[1]),adjPx=p[0]+(centerX-p[0])*inwardAdjustment,adjPy=p[1]+(centerY-p[1])*inwardAdjustment,APx=adjPx-a[0],APy=adjPy-a[1],leftOfAB=(b[0]-a[0])*APy-(b[1]-a[1])*APx>0;return leftOfAB!==(c[0]-a[0])*APy-(c[1]-a[1])*APx>0&&leftOfAB===(c[0]-b[0])*(adjPy-b[1])-(c[1]-b[1])*(adjPx-b[0])>0}function isPointInTriangleArray(p,triangle,tolerance){return void 0===tolerance&&(tolerance=1e-4),isPointInTriangle(p,triangle[0],triangle[1],triangle[2],tolerance)}export{add,addAll,clamp,copy,cross,dir,dist,dot,fill,flatten,isPointInTriangle,isPointInTriangleArray,isZeroVector,magnitude,mix,modify,normalize,reshape,reverse,scale,step,sub,subAll,sumsqr,triple};
1
+ import{clamp as clamp$1,step as step$1}from"@equinor/videx-math";function copy(source,target){for(let i=0;i<source.length;i++)target[i]=source[i];return target}function add(a,b,target=a){for(let i=0;i<a.length;i++)target[i]=a[i]+b[i];return target}function addAll(vectors,target=vectors[0]){copy(vectors[0],target);for(let m=1;m<vectors.length;m++)for(let n=0;n<target.length;n++)target[n]+=vectors[m][n];return target}function sub(a,b,target=a){for(let i=0;i<a.length;i++)target[i]=a[i]-b[i];return target}function subAll(a,vectors,target=a){copy(a,target);for(let m=0;m<vectors.length;m++)for(let n=0;n<target.length;n++)target[n]-=vectors[m][n];return target}function scale(a,factor,target=a){for(let i=0;i<a.length;i++)target[i]=a[i]*factor;return target}function sumsqr(a){let sum=0;for(let i=0;i<a.length;i++)sum+=Math.pow(a[i],2);return sum}function magnitude(a){const sq=sumsqr(a);return 0===sq?sq:Math.sqrt(sq)}function normalize(a,target=a){const len=magnitude(a);return 0===len?fill(0,target):scale(a,1/len,target)}function fill(value,target){for(let i=0;i<target.length;i++)target[i]=value;return target}function dir(a,b,target=a){for(let i=0;i<a.length;i++)target[i]=b[i]-a[i];return target}function dist(a,b){let sq=0;for(let i=0;i<a.length;i++)sq+=Math.pow(b[i]-a[i],2);return 0===sq?sq:Math.sqrt(sq)}function dot(a,b){let sum=0;for(let i=0;i<a.length;i++)sum+=a[i]*b[i];return sum}function cross(a,b,target=a){const y=a[2]*b[0]-a[0]*b[2],z=a[0]*b[1]-a[1]*b[0];return target[0]=a[1]*b[2]-a[2]*b[1],target[1]=y,target[2]=z,target}function triple(a,b,c){return dot(a,cross(b,c))}function clamp(a,min=0,max=1,target=a){for(let i=0;i<a.length;i++)target[i]=clamp$1(a[i],min,max);return target}function step(edges,x,target=edges){for(let i=0;i<edges.length;i++)target[i]=step$1(edges[i],x);return target}function mix(a,b,t,target=a){const n=clamp$1(t,0,1),m=1-n;for(let i=0;i<a.length;i++)target[i]=a[i]*m+b[i]*n;return target}function modify(a,modifier,target=a){for(let i=0;i<a.length;i++)target[i]=modifier(a[i],i);return target}function isZeroVector(a,epsilon=0){void 0===epsilon&&(epsilon=0);for(let i=0;i<a.length;i++)if(Math.abs(a[i])>epsilon)return!1;return!0}function reverse(vector){const end=vector.length-1;let temp,tempIdx;for(let i=0;i<Math.ceil(end/2);i++)tempIdx=end-i,temp=vector[tempIdx],vector[tempIdx]=vector[i],vector[i]=temp;return vector}function flatten(vectors){const output=[];for(let m=0;m<vectors.length;m++)for(let n=0;n<vectors[m].length;n++)output.push(vectors[m][n]);return output}function reshape(array,dimensions){const output=[];for(let i=0;i<array.length;i+=dimensions){const vector=new Array(dimensions);for(let n=0;n<dimensions;n++)vector[n]=array[i+n];output.push(vector)}return output}function isPointInTriangle(p,a,b,c,inwardAdjustment=1e-6){const centerX=.33333*(a[0]+b[0]+c[0]),centerY=.33333*(a[1]+b[1]+c[1]),adjPx=p[0]+(centerX-p[0])*inwardAdjustment,adjPy=p[1]+(centerY-p[1])*inwardAdjustment,APx=adjPx-a[0],APy=adjPy-a[1],leftOfAB=(b[0]-a[0])*APy-(b[1]-a[1])*APx>0;if(leftOfAB===(c[0]-a[0])*APy-(c[1]-a[1])*APx>0)return!1;return leftOfAB===(c[0]-b[0])*(adjPy-b[1])-(c[1]-b[1])*(adjPx-b[0])>0}function isPointInTriangleArray(p,triangle,tolerance=1e-4){return isPointInTriangle(p,triangle[0],triangle[1],triangle[2],tolerance)}export{add,addAll,clamp,copy,cross,dir,dist,dot,fill,flatten,isPointInTriangle,isPointInTriangleArray,isZeroVector,magnitude,mix,modify,normalize,reshape,reverse,scale,step,sub,subAll,sumsqr,triple};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var videxMath=require("@equinor/videx-math");function copy(source,target){for(var i=0;i<source.length;i++)target[i]=source[i];return target}function scale(a,factor,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=a[i]*factor;return target}function sumsqr(a){for(var sum=0,i=0;i<a.length;i++)sum+=Math.pow(a[i],2);return sum}function magnitude(a){var sq=sumsqr(a);return 0===sq?sq:Math.sqrt(sq)}function fill(value,target){for(var i=0;i<target.length;i++)target[i]=value;return target}function dot(a,b){for(var sum=0,i=0;i<a.length;i++)sum+=a[i]*b[i];return sum}function cross(a,b,target){void 0===target&&(target=a);var y=a[2]*b[0]-a[0]*b[2],z=a[0]*b[1]-a[1]*b[0];return target[0]=a[1]*b[2]-a[2]*b[1],target[1]=y,target[2]=z,target}function isPointInTriangle(p,a,b,c,inwardAdjustment){void 0===inwardAdjustment&&(inwardAdjustment=1e-6);var centerX=.33333*(a[0]+b[0]+c[0]),centerY=.33333*(a[1]+b[1]+c[1]),adjPx=p[0]+(centerX-p[0])*inwardAdjustment,adjPy=p[1]+(centerY-p[1])*inwardAdjustment,APx=adjPx-a[0],APy=adjPy-a[1],leftOfAB=(b[0]-a[0])*APy-(b[1]-a[1])*APx>0;return leftOfAB!==(c[0]-a[0])*APy-(c[1]-a[1])*APx>0&&leftOfAB===(c[0]-b[0])*(adjPy-b[1])-(c[1]-b[1])*(adjPx-b[0])>0}exports.add=function(a,b,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=a[i]+b[i];return target},exports.addAll=function(vectors,target){void 0===target&&(target=vectors[0]),copy(vectors[0],target);for(var m=1;m<vectors.length;m++)for(var n=0;n<target.length;n++)target[n]+=vectors[m][n];return target},exports.clamp=function(a,min,max,target){void 0===min&&(min=0),void 0===max&&(max=1),void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=videxMath.clamp(a[i],min,max);return target},exports.copy=copy,exports.cross=cross,exports.dir=function(a,b,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=b[i]-a[i];return target},exports.dist=function(a,b){for(var sq=0,i=0;i<a.length;i++)sq+=Math.pow(b[i]-a[i],2);return 0===sq?sq:Math.sqrt(sq)},exports.dot=dot,exports.fill=fill,exports.flatten=function(vectors){for(var output=[],m=0;m<vectors.length;m++)for(var n=0;n<vectors[m].length;n++)output.push(vectors[m][n]);return output},exports.isPointInTriangle=isPointInTriangle,exports.isPointInTriangleArray=function(p,triangle,tolerance){return void 0===tolerance&&(tolerance=1e-4),isPointInTriangle(p,triangle[0],triangle[1],triangle[2],tolerance)},exports.isZeroVector=function(a,epsilon){void 0===epsilon&&(epsilon=0),void 0===epsilon&&(epsilon=0);for(var i=0;i<a.length;i++)if(Math.abs(a[i])>epsilon)return!1;return!0},exports.magnitude=magnitude,exports.mix=function(a,b,t,target){void 0===target&&(target=a);for(var n=videxMath.clamp(t,0,1),m=1-n,i=0;i<a.length;i++)target[i]=a[i]*m+b[i]*n;return target},exports.modify=function(a,modifier,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=modifier(a[i],i);return target},exports.normalize=function(a,target){void 0===target&&(target=a);var len=magnitude(a);return 0===len?fill(0,target):scale(a,1/len,target)},exports.reshape=function(array,dimensions){for(var output=[],i=0;i<array.length;i+=dimensions){for(var vector=new Array(dimensions),n=0;n<dimensions;n++)vector[n]=array[i+n];output.push(vector)}return output},exports.reverse=function(vector){for(var temp,tempIdx,end=vector.length-1,i=0;i<Math.ceil(end/2);i++)temp=vector[tempIdx=end-i],vector[tempIdx]=vector[i],vector[i]=temp;return vector},exports.scale=scale,exports.step=function(edges,x,target){void 0===target&&(target=edges);for(var i=0;i<edges.length;i++)target[i]=videxMath.step(edges[i],x);return target},exports.sub=function(a,b,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=a[i]-b[i];return target},exports.subAll=function(a,vectors,target){void 0===target&&(target=a),copy(a,target);for(var m=0;m<vectors.length;m++)for(var n=0;n<target.length;n++)target[n]-=vectors[m][n];return target},exports.sumsqr=sumsqr,exports.triple=function(a,b,c){return dot(a,cross(b,c))};
1
+ "use strict";var videxMath=require("@equinor/videx-math");function copy(source,target){for(let i=0;i<source.length;i++)target[i]=source[i];return target}function scale(a,factor,target=a){for(let i=0;i<a.length;i++)target[i]=a[i]*factor;return target}function sumsqr(a){let sum=0;for(let i=0;i<a.length;i++)sum+=Math.pow(a[i],2);return sum}function magnitude(a){const sq=sumsqr(a);return 0===sq?sq:Math.sqrt(sq)}function fill(value,target){for(let i=0;i<target.length;i++)target[i]=value;return target}function dot(a,b){let sum=0;for(let i=0;i<a.length;i++)sum+=a[i]*b[i];return sum}function cross(a,b,target=a){const y=a[2]*b[0]-a[0]*b[2],z=a[0]*b[1]-a[1]*b[0];return target[0]=a[1]*b[2]-a[2]*b[1],target[1]=y,target[2]=z,target}function isPointInTriangle(p,a,b,c,inwardAdjustment=1e-6){const centerX=.33333*(a[0]+b[0]+c[0]),centerY=.33333*(a[1]+b[1]+c[1]),adjPx=p[0]+(centerX-p[0])*inwardAdjustment,adjPy=p[1]+(centerY-p[1])*inwardAdjustment,APx=adjPx-a[0],APy=adjPy-a[1],leftOfAB=(b[0]-a[0])*APy-(b[1]-a[1])*APx>0;if(leftOfAB===(c[0]-a[0])*APy-(c[1]-a[1])*APx>0)return!1;return leftOfAB===(c[0]-b[0])*(adjPy-b[1])-(c[1]-b[1])*(adjPx-b[0])>0}exports.add=function(a,b,target=a){for(let i=0;i<a.length;i++)target[i]=a[i]+b[i];return target},exports.addAll=function(vectors,target=vectors[0]){copy(vectors[0],target);for(let m=1;m<vectors.length;m++)for(let n=0;n<target.length;n++)target[n]+=vectors[m][n];return target},exports.clamp=function(a,min=0,max=1,target=a){for(let i=0;i<a.length;i++)target[i]=videxMath.clamp(a[i],min,max);return target},exports.copy=copy,exports.cross=cross,exports.dir=function(a,b,target=a){for(let i=0;i<a.length;i++)target[i]=b[i]-a[i];return target},exports.dist=function(a,b){let sq=0;for(let i=0;i<a.length;i++)sq+=Math.pow(b[i]-a[i],2);return 0===sq?sq:Math.sqrt(sq)},exports.dot=dot,exports.fill=fill,exports.flatten=function(vectors){const output=[];for(let m=0;m<vectors.length;m++)for(let n=0;n<vectors[m].length;n++)output.push(vectors[m][n]);return output},exports.isPointInTriangle=isPointInTriangle,exports.isPointInTriangleArray=function(p,triangle,tolerance=1e-4){return isPointInTriangle(p,triangle[0],triangle[1],triangle[2],tolerance)},exports.isZeroVector=function(a,epsilon=0){void 0===epsilon&&(epsilon=0);for(let i=0;i<a.length;i++)if(Math.abs(a[i])>epsilon)return!1;return!0},exports.magnitude=magnitude,exports.mix=function(a,b,t,target=a){const n=videxMath.clamp(t,0,1),m=1-n;for(let i=0;i<a.length;i++)target[i]=a[i]*m+b[i]*n;return target},exports.modify=function(a,modifier,target=a){for(let i=0;i<a.length;i++)target[i]=modifier(a[i],i);return target},exports.normalize=function(a,target=a){const len=magnitude(a);return 0===len?fill(0,target):scale(a,1/len,target)},exports.reshape=function(array,dimensions){const output=[];for(let i=0;i<array.length;i+=dimensions){const vector=new Array(dimensions);for(let n=0;n<dimensions;n++)vector[n]=array[i+n];output.push(vector)}return output},exports.reverse=function(vector){const end=vector.length-1;let temp,tempIdx;for(let i=0;i<Math.ceil(end/2);i++)tempIdx=end-i,temp=vector[tempIdx],vector[tempIdx]=vector[i],vector[i]=temp;return vector},exports.scale=scale,exports.step=function(edges,x,target=edges){for(let i=0;i<edges.length;i++)target[i]=videxMath.step(edges[i],x);return target},exports.sub=function(a,b,target=a){for(let i=0;i<a.length;i++)target[i]=a[i]-b[i];return target},exports.subAll=function(a,vectors,target=a){copy(a,target);for(let m=0;m<vectors.length;m++)for(let n=0;n<target.length;n++)target[n]-=vectors[m][n];return target},exports.sumsqr=sumsqr,exports.triple=function(a,b,c){return dot(a,cross(b,c))};
package/dist/index.umd.js CHANGED
@@ -1 +1 @@
1
- !function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports):"function"==typeof define&&define.amd?define(["exports"],factory):factory((global="undefined"!=typeof globalThis?globalThis:global||self)["videx-linear-algebra"]={})}(this,(function(exports){"use strict";function clamp$1(value,min=0,max=1){return value<min?min:value>max?max:value}function step$1(edge,x){return x>=edge?1:0}function copy(source,target){for(var i=0;i<source.length;i++)target[i]=source[i];return target}function scale(a,factor,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=a[i]*factor;return target}function sumsqr(a){for(var sum=0,i=0;i<a.length;i++)sum+=Math.pow(a[i],2);return sum}function magnitude(a){var sq=sumsqr(a);return 0===sq?sq:Math.sqrt(sq)}function fill(value,target){for(var i=0;i<target.length;i++)target[i]=value;return target}function dot(a,b){for(var sum=0,i=0;i<a.length;i++)sum+=a[i]*b[i];return sum}function cross(a,b,target){void 0===target&&(target=a);var y=a[2]*b[0]-a[0]*b[2],z=a[0]*b[1]-a[1]*b[0];return target[0]=a[1]*b[2]-a[2]*b[1],target[1]=y,target[2]=z,target}function isPointInTriangle(p,a,b,c,inwardAdjustment){void 0===inwardAdjustment&&(inwardAdjustment=1e-6);var centerX=.33333*(a[0]+b[0]+c[0]),centerY=.33333*(a[1]+b[1]+c[1]),adjPx=p[0]+(centerX-p[0])*inwardAdjustment,adjPy=p[1]+(centerY-p[1])*inwardAdjustment,APx=adjPx-a[0],APy=adjPy-a[1],leftOfAB=(b[0]-a[0])*APy-(b[1]-a[1])*APx>0;return leftOfAB!==(c[0]-a[0])*APy-(c[1]-a[1])*APx>0&&leftOfAB===(c[0]-b[0])*(adjPy-b[1])-(c[1]-b[1])*(adjPx-b[0])>0}exports.add=function(a,b,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=a[i]+b[i];return target},exports.addAll=function(vectors,target){void 0===target&&(target=vectors[0]),copy(vectors[0],target);for(var m=1;m<vectors.length;m++)for(var n=0;n<target.length;n++)target[n]+=vectors[m][n];return target},exports.clamp=function(a,min,max,target){void 0===min&&(min=0),void 0===max&&(max=1),void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=clamp$1(a[i],min,max);return target},exports.copy=copy,exports.cross=cross,exports.dir=function(a,b,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=b[i]-a[i];return target},exports.dist=function(a,b){for(var sq=0,i=0;i<a.length;i++)sq+=Math.pow(b[i]-a[i],2);return 0===sq?sq:Math.sqrt(sq)},exports.dot=dot,exports.fill=fill,exports.flatten=function(vectors){for(var output=[],m=0;m<vectors.length;m++)for(var n=0;n<vectors[m].length;n++)output.push(vectors[m][n]);return output},exports.isPointInTriangle=isPointInTriangle,exports.isPointInTriangleArray=function(p,triangle,tolerance){return void 0===tolerance&&(tolerance=1e-4),isPointInTriangle(p,triangle[0],triangle[1],triangle[2],tolerance)},exports.isZeroVector=function(a,epsilon){void 0===epsilon&&(epsilon=0),void 0===epsilon&&(epsilon=0);for(var i=0;i<a.length;i++)if(Math.abs(a[i])>epsilon)return!1;return!0},exports.magnitude=magnitude,exports.mix=function(a,b,t,target){void 0===target&&(target=a);for(var n=clamp$1(t,0,1),m=1-n,i=0;i<a.length;i++)target[i]=a[i]*m+b[i]*n;return target},exports.modify=function(a,modifier,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=modifier(a[i],i);return target},exports.normalize=function(a,target){void 0===target&&(target=a);var len=magnitude(a);return 0===len?fill(0,target):scale(a,1/len,target)},exports.reshape=function(array,dimensions){for(var output=[],i=0;i<array.length;i+=dimensions){for(var vector=new Array(dimensions),n=0;n<dimensions;n++)vector[n]=array[i+n];output.push(vector)}return output},exports.reverse=function(vector){for(var temp,tempIdx,end=vector.length-1,i=0;i<Math.ceil(end/2);i++)temp=vector[tempIdx=end-i],vector[tempIdx]=vector[i],vector[i]=temp;return vector},exports.scale=scale,exports.step=function(edges,x,target){void 0===target&&(target=edges);for(var i=0;i<edges.length;i++)target[i]=step$1(edges[i],x);return target},exports.sub=function(a,b,target){void 0===target&&(target=a);for(var i=0;i<a.length;i++)target[i]=a[i]-b[i];return target},exports.subAll=function(a,vectors,target){void 0===target&&(target=a),copy(a,target);for(var m=0;m<vectors.length;m++)for(var n=0;n<target.length;n++)target[n]-=vectors[m][n];return target},exports.sumsqr=sumsqr,exports.triple=function(a,b,c){return dot(a,cross(b,c))}}));
1
+ !function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports):"function"==typeof define&&define.amd?define(["exports"],factory):factory((global="undefined"!=typeof globalThis?globalThis:global||self)["videx-linear-algebra"]={})}(this,(function(exports){"use strict";function clamp$1(value,min=0,max=1){return value<min?min:value>max?max:value}function step$1(edge,x){return x>=edge?1:0}function copy(source,target){for(let i=0;i<source.length;i++)target[i]=source[i];return target}function scale(a,factor,target=a){for(let i=0;i<a.length;i++)target[i]=a[i]*factor;return target}function sumsqr(a){let sum=0;for(let i=0;i<a.length;i++)sum+=Math.pow(a[i],2);return sum}function magnitude(a){const sq=sumsqr(a);return 0===sq?sq:Math.sqrt(sq)}function fill(value,target){for(let i=0;i<target.length;i++)target[i]=value;return target}function dot(a,b){let sum=0;for(let i=0;i<a.length;i++)sum+=a[i]*b[i];return sum}function cross(a,b,target=a){const y=a[2]*b[0]-a[0]*b[2],z=a[0]*b[1]-a[1]*b[0];return target[0]=a[1]*b[2]-a[2]*b[1],target[1]=y,target[2]=z,target}function isPointInTriangle(p,a,b,c,inwardAdjustment=1e-6){const centerX=.33333*(a[0]+b[0]+c[0]),centerY=.33333*(a[1]+b[1]+c[1]),adjPx=p[0]+(centerX-p[0])*inwardAdjustment,adjPy=p[1]+(centerY-p[1])*inwardAdjustment,APx=adjPx-a[0],APy=adjPy-a[1],leftOfAB=(b[0]-a[0])*APy-(b[1]-a[1])*APx>0;if(leftOfAB===(c[0]-a[0])*APy-(c[1]-a[1])*APx>0)return!1;return leftOfAB===(c[0]-b[0])*(adjPy-b[1])-(c[1]-b[1])*(adjPx-b[0])>0}exports.add=function(a,b,target=a){for(let i=0;i<a.length;i++)target[i]=a[i]+b[i];return target},exports.addAll=function(vectors,target=vectors[0]){copy(vectors[0],target);for(let m=1;m<vectors.length;m++)for(let n=0;n<target.length;n++)target[n]+=vectors[m][n];return target},exports.clamp=function(a,min=0,max=1,target=a){for(let i=0;i<a.length;i++)target[i]=clamp$1(a[i],min,max);return target},exports.copy=copy,exports.cross=cross,exports.dir=function(a,b,target=a){for(let i=0;i<a.length;i++)target[i]=b[i]-a[i];return target},exports.dist=function(a,b){let sq=0;for(let i=0;i<a.length;i++)sq+=Math.pow(b[i]-a[i],2);return 0===sq?sq:Math.sqrt(sq)},exports.dot=dot,exports.fill=fill,exports.flatten=function(vectors){const output=[];for(let m=0;m<vectors.length;m++)for(let n=0;n<vectors[m].length;n++)output.push(vectors[m][n]);return output},exports.isPointInTriangle=isPointInTriangle,exports.isPointInTriangleArray=function(p,triangle,tolerance=1e-4){return isPointInTriangle(p,triangle[0],triangle[1],triangle[2],tolerance)},exports.isZeroVector=function(a,epsilon=0){void 0===epsilon&&(epsilon=0);for(let i=0;i<a.length;i++)if(Math.abs(a[i])>epsilon)return!1;return!0},exports.magnitude=magnitude,exports.mix=function(a,b,t,target=a){const n=clamp$1(t,0,1),m=1-n;for(let i=0;i<a.length;i++)target[i]=a[i]*m+b[i]*n;return target},exports.modify=function(a,modifier,target=a){for(let i=0;i<a.length;i++)target[i]=modifier(a[i],i);return target},exports.normalize=function(a,target=a){const len=magnitude(a);return 0===len?fill(0,target):scale(a,1/len,target)},exports.reshape=function(array,dimensions){const output=[];for(let i=0;i<array.length;i+=dimensions){const vector=new Array(dimensions);for(let n=0;n<dimensions;n++)vector[n]=array[i+n];output.push(vector)}return output},exports.reverse=function(vector){const end=vector.length-1;let temp,tempIdx;for(let i=0;i<Math.ceil(end/2);i++)tempIdx=end-i,temp=vector[tempIdx],vector[tempIdx]=vector[i],vector[i]=temp;return vector},exports.scale=scale,exports.step=function(edges,x,target=edges){for(let i=0;i<edges.length;i++)target[i]=step$1(edges[i],x);return target},exports.sub=function(a,b,target=a){for(let i=0;i<a.length;i++)target[i]=a[i]-b[i];return target},exports.subAll=function(a,vectors,target=a){copy(a,target);for(let m=0;m<vectors.length;m++)for(let n=0;n<target.length;n++)target[n]-=vectors[m][n];return target},exports.sumsqr=sumsqr,exports.triple=function(a,b,c){return dot(a,cross(b,c))}}));
@@ -112,7 +112,7 @@ export declare function magnitude(a: VectorLike): number;
112
112
  * @return Normalized vector
113
113
  *
114
114
  * @example
115
- * magnitude([0, 10, 0], new Array(3)); // Returns: [0, 1, 0]
115
+ * normalize([0, 10, 0], new Array(3)); // Returns: [0, 1, 0]
116
116
  */
117
117
  export declare function normalize<T extends VectorLike>(a: T, target?: T): T;
118
118
  /**
@@ -153,7 +153,7 @@ export declare function dist(a: VectorLike, b: VectorLike): number;
153
153
  * @return Dot product
154
154
  *
155
155
  * @example
156
- * dist([1, 2], [3, 4]); // Returns: 11
156
+ * dot([1, 2], [3, 4]); // Returns: 11
157
157
  */
158
158
  export declare function dot(a: VectorLike, b: VectorLike): number;
159
159
  /**
@@ -274,7 +274,7 @@ export declare function reshape(array: number[], dimensions: number): number[][]
274
274
  * @param {VectorLike} b - Vertex B of the triangle [x, y].
275
275
  * @param {VectorLike} c - Vertex C of the triangle [x, y].
276
276
  * @param {number} inwardAdjustment - Scales inward adjustment relative to distance for edge handling (default: 1e-6).
277
- * @returns {boolean} True if the point is strictly inside the triangle; otherwise, false.
277
+ * @returns {boolean} True if the point is inside the triangle or on one of its edges; otherwise, false.
278
278
  *
279
279
  * @example
280
280
  * isPointInTriangle([0.25, 0.25], [0, 0], [1, 0], [0, 1]); // Returns true
@@ -282,6 +282,6 @@ export declare function reshape(array: number[], dimensions: number): number[][]
282
282
  export declare function isPointInTriangle(p: VectorLike, a: VectorLike, b: VectorLike, c: VectorLike, inwardAdjustment?: number): boolean;
283
283
  /**
284
284
  * Wrapper function for isPointInTriangle which allows an array of vectors.
285
- * @returns {boolean} True if the point is strictly inside the triangle; otherwise, false.
285
+ * @returns {boolean} True if the point is inside the triangle or on one of its edges; otherwise, false.
286
286
  */
287
287
  export declare function isPointInTriangleArray(p: VectorLike, triangle: [VectorLike, VectorLike, VectorLike], tolerance?: number): boolean;
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@equinor/videx-linear-algebra",
3
- "version": "1.0.20",
3
+ "version": "1.0.22",
4
4
  "description": "A library with linear algebra used by Videx.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -9,13 +9,22 @@
9
9
  "dist"
10
10
  ],
11
11
  "types": "dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.esm.js",
16
+ "require": "./dist/index.js",
17
+ "default": "./dist/index.js"
18
+ },
19
+ "./package.json": "./package.json"
20
+ },
12
21
  "scripts": {
13
22
  "prebuild": "rimraf dist",
14
23
  "build": "rollup -c",
15
24
  "prepub": "npm run build",
16
25
  "pub": "npm publish --access=public",
17
- "test": "jest",
18
- "test:watch": "jest --watchAll",
26
+ "test": "vitest run",
27
+ "test:watch": "vitest",
19
28
  "predocs": "rimraf docs",
20
29
  "docs": "typedoc --out docs src",
21
30
  "postdocs": "copyfiles images/* docs && copyfiles .nojekyll docs",
@@ -40,36 +49,23 @@
40
49
  },
41
50
  "homepage": "https://github.com/equinor/videx-linear-algebra#readme",
42
51
  "devDependencies": {
43
- "@equinor/videx-vector2": "^1.0.48",
52
+ "@equinor/videx-vector2": "^1.0.54",
44
53
  "@rollup/plugin-node-resolve": "^16.0.3",
45
54
  "@rollup/plugin-terser": "^1.0.0",
46
55
  "@rollup/plugin-typescript": "^12.3.0",
47
- "@types/jest": "^30.0.0",
48
56
  "@typescript-eslint/eslint-plugin": "^8.46.3",
49
57
  "@typescript-eslint/parser": "^8.46.3",
50
58
  "copyfiles": "^2.2.0",
51
59
  "eslint": "^9.39.2",
52
60
  "eslint-plugin-import": "^2.32.0",
53
- "jest": "^30.2.0",
54
- "rimraf": "^6.1.2",
55
- "rollup": "^4.55.1",
56
- "ts-jest": "^29.4.6",
61
+ "rimraf": "^6.1.3",
62
+ "rollup": "^4.60.4",
57
63
  "tslib": "^2.8.1",
58
- "typedoc": "^0.28.15",
59
- "typescript": "^5.9.3"
64
+ "typedoc": "^0.28.19",
65
+ "typescript": "^5.9.3",
66
+ "vitest": "^4.1.10"
60
67
  },
61
68
  "dependencies": {
62
- "@equinor/videx-math": "^1.1.4"
63
- },
64
- "jest": {
65
- "transform": {
66
- ".(ts|tsx)": "ts-jest"
67
- },
68
- "testRegex": "/test/.*",
69
- "moduleFileExtensions": [
70
- "ts",
71
- "tsx",
72
- "js"
73
- ]
69
+ "@equinor/videx-math": "^1.1.8"
74
70
  }
75
71
  }