@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 +1 -1
- package/dist/index.js +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/{index.d.ts → src/index.d.ts} +4 -4
- package/dist/test/index.test.d.ts +1 -0
- package/package.json +19 -23
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(
|
|
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(
|
|
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(
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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.
|
|
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": "
|
|
18
|
-
"test:watch": "
|
|
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.
|
|
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
|
-
"
|
|
54
|
-
"
|
|
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.
|
|
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.
|
|
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
|
}
|