@woosh/meep-engine 2.109.0 → 2.109.1
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/build/meep.cjs +28 -13
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +28 -13
- package/package.json +1 -1
- package/src/core/binary/BitSet.d.ts +6 -0
- package/src/core/binary/BitSet.d.ts.map +1 -1
- package/src/core/binary/BitSet.js +14 -42
- package/src/core/binary/align_32.d.ts +7 -0
- package/src/core/binary/align_32.d.ts.map +1 -0
- package/src/core/binary/align_32.js +8 -0
- package/src/core/binary/align_32.spec.d.ts +2 -0
- package/src/core/binary/align_32.spec.d.ts.map +1 -0
- package/src/core/binary/align_32.spec.js +11 -0
- package/src/core/binary/align_4.js +2 -1
- package/src/core/binary/lsb_32.d.ts +9 -0
- package/src/core/binary/lsb_32.d.ts.map +1 -0
- package/src/core/binary/lsb_32.js +12 -0
- package/src/core/binary/msb_32.d.ts +2 -0
- package/src/core/binary/msb_32.d.ts.map +1 -0
- package/src/core/binary/msb_32.js +20 -0
- package/src/core/binary/msb_lut_de_bruijn.d.ts +7 -0
- package/src/core/binary/msb_lut_de_bruijn.d.ts.map +1 -0
- package/src/core/binary/msb_lut_de_bruijn.js +9 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_convolve_with_cosine_kernel.js +2 -1
- package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.d.ts +12 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.js +40 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.d.ts +2 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.js +27 -0
- package/src/core/geom/vec/vector_copy.d.ts +10 -0
- package/src/core/geom/vec/vector_copy.d.ts.map +1 -0
- package/src/core/geom/vec/vector_copy.js +13 -0
- package/src/core/{math/vector_nd_dot.d.ts → geom/vec/vector_dot.d.ts} +2 -2
- package/src/core/geom/vec/vector_dot.d.ts.map +1 -0
- package/src/core/{math/vector_nd_dot.js → geom/vec/vector_dot.js} +1 -1
- package/src/core/{math/vector_nd_normalize.d.ts → geom/vec/vector_normalize.d.ts} +2 -2
- package/src/core/geom/vec/vector_normalize.d.ts.map +1 -0
- package/src/core/{math/vector_nd_normalize.js → geom/vec/vector_normalize.js} +1 -1
- package/src/core/geom/vec/vector_normalize.spec.d.ts +2 -0
- package/src/core/geom/vec/vector_normalize.spec.d.ts.map +1 -0
- package/src/core/{math/vector_nd_normalize.spec.js → geom/vec/vector_normalize.spec.js} +3 -3
- package/src/core/geom/vec/vector_scale_array.d.ts +11 -0
- package/src/core/geom/vec/vector_scale_array.d.ts.map +1 -0
- package/src/core/geom/vec/vector_scale_array.js +31 -0
- package/src/core/geom/vec3/v3_dot_array_array.js +2 -0
- package/src/core/model/node-graph/node/NodeInstance.d.ts.map +1 -1
- package/src/core/model/node-graph/node/NodeInstance.js +18 -0
- package/src/engine/graphics/sh3/fromCubeRenderTarget.d.ts.map +1 -1
- package/src/engine/graphics/sh3/fromCubeRenderTarget.js +14 -17
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts +3 -2
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +21 -11
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.js +8 -15
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +19 -3
- package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts +11 -1
- package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.d.ts.map +1 -1
- package/src/engine/graphics/sh3/visualise_spherical_harmonic_sphere.js +33 -16
- package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.d.ts.map +1 -1
- package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.js +6 -6
- package/src/core/math/vector_nd_dot.d.ts.map +0 -1
- package/src/core/math/vector_nd_normalize.d.ts.map +0 -1
- package/src/core/math/vector_nd_normalize.spec.d.ts +0 -2
- package/src/core/math/vector_nd_normalize.spec.d.ts.map +0 -1
package/build/meep.module.js
CHANGED
|
@@ -59953,7 +59953,7 @@ const DEFAULT_INITIAL_CAPACITY_POWER = 4;
|
|
|
59953
59953
|
* @readonly
|
|
59954
59954
|
* @type {number}
|
|
59955
59955
|
*/
|
|
59956
|
-
const DEFAULT_INITIAL_CAPACITY = 2 ** DEFAULT_INITIAL_CAPACITY_POWER;
|
|
59956
|
+
const DEFAULT_INITIAL_CAPACITY$1 = 2 ** DEFAULT_INITIAL_CAPACITY_POWER;
|
|
59957
59957
|
|
|
59958
59958
|
/**
|
|
59959
59959
|
* @readonly
|
|
@@ -60082,7 +60082,7 @@ class HashMap {
|
|
|
60082
60082
|
constructor({
|
|
60083
60083
|
keyHashFunction = invokeObjectHash,
|
|
60084
60084
|
keyEqualityFunction = invokeObjectEquals,
|
|
60085
|
-
capacity = DEFAULT_INITIAL_CAPACITY,
|
|
60085
|
+
capacity = DEFAULT_INITIAL_CAPACITY$1,
|
|
60086
60086
|
loadFactor = DEFAULT_LOAD_FACTOR
|
|
60087
60087
|
} = {}) {
|
|
60088
60088
|
|
|
@@ -70775,16 +70775,25 @@ const EntityFlags = {
|
|
|
70775
70775
|
WatchDestruction: 4
|
|
70776
70776
|
};
|
|
70777
70777
|
|
|
70778
|
+
/**
|
|
70779
|
+
* Align to the nearest number divisible by 32, rounding up
|
|
70780
|
+
* @param {number} n
|
|
70781
|
+
* @returns {number}
|
|
70782
|
+
*/
|
|
70783
|
+
function align_32(n) {
|
|
70784
|
+
return ((n + 31) >>> 5) << 5
|
|
70785
|
+
}
|
|
70786
|
+
|
|
70778
70787
|
/**
|
|
70779
70788
|
* de Bruijn sequence
|
|
70780
70789
|
* @see https://graphics.stanford.edu/~seander/bithacks.html
|
|
70781
70790
|
* @type {Uint8Array}
|
|
70782
70791
|
*/
|
|
70783
|
-
const
|
|
70792
|
+
const msb_lut_de_bruijn = new Uint8Array([
|
|
70784
70793
|
0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
|
|
70785
70794
|
31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
|
|
70786
|
-
]);
|
|
70787
|
-
|
|
70795
|
+
]);
|
|
70796
|
+
|
|
70788
70797
|
/**
|
|
70789
70798
|
* Get index of the least significant set bit
|
|
70790
70799
|
* Also known as ctz32 or "count trailing zeroes"
|
|
@@ -70793,9 +70802,9 @@ const msb_lut = new Uint8Array([
|
|
|
70793
70802
|
* @returns {number}
|
|
70794
70803
|
*/
|
|
70795
70804
|
function lsb_32(v) {
|
|
70796
|
-
return
|
|
70797
|
-
}
|
|
70798
|
-
|
|
70805
|
+
return msb_lut_de_bruijn[((v & -v) * 0x077CB531) >>> 27];
|
|
70806
|
+
}
|
|
70807
|
+
|
|
70799
70808
|
/**
|
|
70800
70809
|
* Used for overallocating space when bit set needs to grow
|
|
70801
70810
|
* @constant
|
|
@@ -70816,12 +70825,20 @@ const SHRINK_FACTOR$1 = 0.5;
|
|
|
70816
70825
|
*/
|
|
70817
70826
|
const RESIZE_COUNT_THRESHOLD = 128;
|
|
70818
70827
|
|
|
70828
|
+
/**
|
|
70829
|
+
* @readonly
|
|
70830
|
+
* @type {number}
|
|
70831
|
+
*/
|
|
70832
|
+
const DEFAULT_INITIAL_CAPACITY = 64;
|
|
70833
|
+
|
|
70819
70834
|
class BitSet {
|
|
70820
70835
|
/**
|
|
70821
70836
|
* Dynamically sized bit field
|
|
70822
70837
|
* @constructor
|
|
70838
|
+
* @param {number} [initial_capacity]
|
|
70823
70839
|
*/
|
|
70824
|
-
constructor() {
|
|
70840
|
+
constructor(initial_capacity = DEFAULT_INITIAL_CAPACITY) {
|
|
70841
|
+
|
|
70825
70842
|
/**
|
|
70826
70843
|
* Number of bits currently in use
|
|
70827
70844
|
* @private
|
|
@@ -70834,7 +70851,7 @@ class BitSet {
|
|
|
70834
70851
|
* @private
|
|
70835
70852
|
* @type {number}
|
|
70836
70853
|
*/
|
|
70837
|
-
this.__capacity =
|
|
70854
|
+
this.__capacity = align_32(initial_capacity);
|
|
70838
70855
|
|
|
70839
70856
|
/**
|
|
70840
70857
|
* Uint32-backed storage
|
|
@@ -71360,9 +71377,7 @@ class BitSet {
|
|
|
71360
71377
|
* @returns {BitSet}
|
|
71361
71378
|
*/
|
|
71362
71379
|
static fixedSize(x) {
|
|
71363
|
-
const r = new BitSet();
|
|
71364
|
-
|
|
71365
|
-
r.setCapacity(x);
|
|
71380
|
+
const r = new BitSet(x);
|
|
71366
71381
|
|
|
71367
71382
|
//prevent resizing
|
|
71368
71383
|
r.__shrinkFactor = 0;
|
package/package.json
CHANGED
|
@@ -5,6 +5,12 @@ export class BitSet {
|
|
|
5
5
|
* @returns {BitSet}
|
|
6
6
|
*/
|
|
7
7
|
static fixedSize(x: number): BitSet;
|
|
8
|
+
/**
|
|
9
|
+
* Dynamically sized bit field
|
|
10
|
+
* @constructor
|
|
11
|
+
* @param {number} [initial_capacity]
|
|
12
|
+
*/
|
|
13
|
+
constructor(initial_capacity?: number);
|
|
8
14
|
/**
|
|
9
15
|
* Number of bits currently in use
|
|
10
16
|
* @private
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitSet.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/BitSet.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BitSet.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/BitSet.js"],"names":[],"mappings":"AAgCA;IAyiBI;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CASlB;IApjBD;;;;OAIG;IACH,+BAFW,MAAM,EA8BhB;IAzBG;;;;OAIG;IACH,iBAAiB;IAEjB;;;;OAIG;IACH,mBAA4C;IAE5C;;;;OAIG;IACH,sBAA0D;IAE1D;;OAEG;IACH,gBAFU,MAAM,CAEmB;IAGvC,sBAEC;IAED;;;OAGG;IACH,mBAFW,MAAM,QAOhB;IAED;;;OAGG;IACH,uBAFW,MAAM,QAUhB;IAED;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,iBAsBC;IAED,uBAMC;IAED;;;;OAIG;IACH,oBAyBC;IAED;;;;OAIG;IACH,oCAqCC;IAED;;;;OAIG;IACH,4BAFa,MAAM,CAuDlB;IAED;;;;OAIG;IACH,8BAFa,MAAM,CAkDlB;IAED;;;;OAIG;IACH,0BAFW,OAAO,QAmCjB;IAED;;;OAGG;IACH,2BAEC;IAED;;;;OAIG;IACH,qBAHW,MAAM,YACN,MAAM,QAWhB;IAED;;;;OAIG;IACH,uBAHW,MAAM,YACN,MAAM,QAShB;IAED;;;OAGG;IACH,SAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAFa,OAAO,CAkBnB;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,OAAO,CAUnB;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,OAAO,CAUnB;IAED;;;;;OAKG;IACH,sBAJW,MAAM,eACN,MAAM,aACN,MAAM,QAShB;IAED;;;;;OAKG;IACH,qBAJW,MAAM,eACN,MAAM,aACN,MAAM,QAShB;IAED;;;;;OAKG;IACH,gBAJW,MAAM,eACN,MAAM,aACN,MAAM,QAQhB;IAED;;OAEG;IACH,cAgBC;IAED;;;OAGG;IACH,YAFW,MAAM,QAoChB;CAeJ"}
|
|
@@ -1,43 +1,8 @@
|
|
|
1
1
|
import { assert } from "../assert.js";
|
|
2
2
|
import { max3 } from "../math/max3.js";
|
|
3
3
|
import { min2 } from "../math/min2.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* de Bruijn sequence
|
|
7
|
-
* @see https://graphics.stanford.edu/~seander/bithacks.html
|
|
8
|
-
* @type {Uint8Array}
|
|
9
|
-
*/
|
|
10
|
-
const msb_lut = new Uint8Array([
|
|
11
|
-
0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
|
|
12
|
-
31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
|
|
13
|
-
]);
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* get most significant set bit
|
|
17
|
-
* @see https://graphics.stanford.edu/~seander/bithacks.html
|
|
18
|
-
* @param {number} v 32 bit integer
|
|
19
|
-
* @returns {number} integer position of most significant bit
|
|
20
|
-
*/
|
|
21
|
-
function msb_32(v) {
|
|
22
|
-
v |= v >>> 1;
|
|
23
|
-
v |= v >>> 2;
|
|
24
|
-
v |= v >>> 4;
|
|
25
|
-
v |= v >>> 8;
|
|
26
|
-
v |= v >>> 16;
|
|
27
|
-
v = (v >>> 1) + 1;
|
|
28
|
-
return msb_lut[(v * 0x077CB531) >>> 27];
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Get index of the least significant set bit
|
|
33
|
-
* Also known as ctz32 or "count trailing zeroes"
|
|
34
|
-
* @see https://graphics.stanford.edu/~seander/bithacks.html
|
|
35
|
-
* @param {number} v
|
|
36
|
-
* @returns {number}
|
|
37
|
-
*/
|
|
38
|
-
function lsb_32(v) {
|
|
39
|
-
return msb_lut[((v & -v) * 0x077CB531) >>> 27];
|
|
40
|
-
}
|
|
4
|
+
import { align_32 } from "./align_32.js";
|
|
5
|
+
import { lsb_32 } from "./lsb_32.js";
|
|
41
6
|
|
|
42
7
|
/**
|
|
43
8
|
* Used for overallocating space when bit set needs to grow
|
|
@@ -59,12 +24,21 @@ const SHRINK_FACTOR = 0.5;
|
|
|
59
24
|
*/
|
|
60
25
|
const RESIZE_COUNT_THRESHOLD = 128;
|
|
61
26
|
|
|
27
|
+
/**
|
|
28
|
+
* @readonly
|
|
29
|
+
* @type {number}
|
|
30
|
+
*/
|
|
31
|
+
const DEFAULT_INITIAL_CAPACITY = 64;
|
|
32
|
+
|
|
62
33
|
export class BitSet {
|
|
63
34
|
/**
|
|
64
35
|
* Dynamically sized bit field
|
|
65
36
|
* @constructor
|
|
37
|
+
* @param {number} [initial_capacity]
|
|
66
38
|
*/
|
|
67
|
-
constructor() {
|
|
39
|
+
constructor(initial_capacity = DEFAULT_INITIAL_CAPACITY) {
|
|
40
|
+
assert.isNonNegativeInteger(initial_capacity, 'initial_capacity');
|
|
41
|
+
|
|
68
42
|
/**
|
|
69
43
|
* Number of bits currently in use
|
|
70
44
|
* @private
|
|
@@ -77,7 +51,7 @@ export class BitSet {
|
|
|
77
51
|
* @private
|
|
78
52
|
* @type {number}
|
|
79
53
|
*/
|
|
80
|
-
this.__capacity =
|
|
54
|
+
this.__capacity = align_32(initial_capacity);
|
|
81
55
|
|
|
82
56
|
/**
|
|
83
57
|
* Uint32-backed storage
|
|
@@ -615,9 +589,7 @@ export class BitSet {
|
|
|
615
589
|
* @returns {BitSet}
|
|
616
590
|
*/
|
|
617
591
|
static fixedSize(x) {
|
|
618
|
-
const r = new BitSet();
|
|
619
|
-
|
|
620
|
-
r.setCapacity(x);
|
|
592
|
+
const r = new BitSet(x);
|
|
621
593
|
|
|
622
594
|
//prevent resizing
|
|
623
595
|
r.__shrinkFactor = 0;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"align_32.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/align_32.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,4BAHW,MAAM,GACJ,MAAM,CAIlB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"align_32.spec.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/align_32.spec.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { align_32 } from "./align_32.js";
|
|
2
|
+
|
|
3
|
+
test("basics", () => {
|
|
4
|
+
expect(align_32(0)).toBe(0);
|
|
5
|
+
expect(align_32(1)).toBe(32);
|
|
6
|
+
expect(align_32(31)).toBe(32);
|
|
7
|
+
expect(align_32(32)).toBe(32);
|
|
8
|
+
expect(align_32(33)).toBe(64);
|
|
9
|
+
expect(align_32(63)).toBe(64);
|
|
10
|
+
expect(align_32(64)).toBe(64);
|
|
11
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get index of the least significant set bit
|
|
3
|
+
* Also known as ctz32 or "count trailing zeroes"
|
|
4
|
+
* @see https://graphics.stanford.edu/~seander/bithacks.html
|
|
5
|
+
* @param {number} v
|
|
6
|
+
* @returns {number}
|
|
7
|
+
*/
|
|
8
|
+
export function lsb_32(v: number): number;
|
|
9
|
+
//# sourceMappingURL=lsb_32.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsb_32.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/lsb_32.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,0BAHW,MAAM,GACJ,MAAM,CAIlB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { msb_lut_de_bruijn } from "./msb_lut_de_bruijn.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Get index of the least significant set bit
|
|
5
|
+
* Also known as ctz32 or "count trailing zeroes"
|
|
6
|
+
* @see https://graphics.stanford.edu/~seander/bithacks.html
|
|
7
|
+
* @param {number} v
|
|
8
|
+
* @returns {number}
|
|
9
|
+
*/
|
|
10
|
+
export function lsb_32(v) {
|
|
11
|
+
return msb_lut_de_bruijn[((v & -v) * 0x077CB531) >>> 27];
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msb_32.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/msb_32.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { msb_lut_de_bruijn } from "./msb_lut_de_bruijn.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* get most significant set bit
|
|
5
|
+
* @see https://graphics.stanford.edu/~seander/bithacks.html
|
|
6
|
+
* @param {number} x 32 bit integer
|
|
7
|
+
* @returns {number} integer position of most significant bit
|
|
8
|
+
*/
|
|
9
|
+
function msb_32(x) {
|
|
10
|
+
let v = x;
|
|
11
|
+
|
|
12
|
+
v |= v >>> 1;
|
|
13
|
+
v |= v >>> 2;
|
|
14
|
+
v |= v >>> 4;
|
|
15
|
+
v |= v >>> 8;
|
|
16
|
+
v |= v >>> 16;
|
|
17
|
+
v = (v >>> 1) + 1;
|
|
18
|
+
|
|
19
|
+
return msb_lut_de_bruijn[(v * 0x077CB531) >>> 27];
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msb_lut_de_bruijn.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/msb_lut_de_bruijn.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,gCAFU,UAAU,CAKjB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* de Bruijn sequence
|
|
3
|
+
* @see https://graphics.stanford.edu/~seander/bithacks.html
|
|
4
|
+
* @type {Uint8Array}
|
|
5
|
+
*/
|
|
6
|
+
export const msb_lut_de_bruijn = new Uint8Array([
|
|
7
|
+
0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
|
|
8
|
+
31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
|
|
9
|
+
]);
|
|
@@ -22,4 +22,5 @@ export function sh3_convolve_with_cosine_kernel(out, out_offset, input, input_of
|
|
|
22
22
|
out[out_offset + 6] = input[input_offset + 6] * CosineA2;
|
|
23
23
|
out[out_offset + 7] = input[input_offset + 7] * CosineA2;
|
|
24
24
|
out[out_offset + 8] = input[input_offset + 8] * CosineA2;
|
|
25
|
-
}
|
|
25
|
+
}
|
|
26
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]|Float32Array|Float64Array} out
|
|
4
|
+
* @param {number} out_offset
|
|
5
|
+
* @param {number[]|Float32Array|Float64Array} basis
|
|
6
|
+
* @param {number} basis_offset
|
|
7
|
+
* @param {number[]|Float32Array|Float64Array} vector
|
|
8
|
+
* @param {number} vector_offset
|
|
9
|
+
* @param {number} dimensions
|
|
10
|
+
*/
|
|
11
|
+
export function sh3_vector_accumulate(out: number[] | Float32Array | Float64Array, out_offset: number, basis: number[] | Float32Array | Float64Array, basis_offset: number, vector: number[] | Float32Array | Float64Array, vector_offset: number, dimensions: number): void;
|
|
12
|
+
//# sourceMappingURL=sh3_vector_accumulate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sh3_vector_accumulate.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.js"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,2CARW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,SACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,gBAClC,MAAM,UACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,MAAM,cACN,MAAM,QA6BhB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { assert } from "../../../../assert.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {number[]|Float32Array|Float64Array} out
|
|
6
|
+
* @param {number} out_offset
|
|
7
|
+
* @param {number[]|Float32Array|Float64Array} basis
|
|
8
|
+
* @param {number} basis_offset
|
|
9
|
+
* @param {number[]|Float32Array|Float64Array} vector
|
|
10
|
+
* @param {number} vector_offset
|
|
11
|
+
* @param {number} dimensions
|
|
12
|
+
*/
|
|
13
|
+
export function sh3_vector_accumulate(
|
|
14
|
+
out, out_offset,
|
|
15
|
+
basis, basis_offset,
|
|
16
|
+
vector, vector_offset, dimensions
|
|
17
|
+
) {
|
|
18
|
+
|
|
19
|
+
assert.isArrayLike(out, 'out');
|
|
20
|
+
assert.isNonNegativeInteger(out_offset, 'out_offset');
|
|
21
|
+
|
|
22
|
+
assert.isArrayLike(basis, 'basis');
|
|
23
|
+
assert.isNonNegativeInteger(basis_offset, 'basis_offset');
|
|
24
|
+
|
|
25
|
+
assert.isNonNegativeInteger(dimensions, 'dimensions');
|
|
26
|
+
|
|
27
|
+
for (let j = 0; j < 9; j++) {
|
|
28
|
+
|
|
29
|
+
const out_coefficient_offset = out_offset + j * dimensions;
|
|
30
|
+
|
|
31
|
+
const basis_value = basis[basis_offset + j];
|
|
32
|
+
|
|
33
|
+
for (let i = 0; i < dimensions; i++) {
|
|
34
|
+
const scalar = vector[vector_offset + i];
|
|
35
|
+
|
|
36
|
+
out[out_coefficient_offset + i] += basis_value * scalar;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sh3_vector_accumulate.spec.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { sh3_vector_accumulate } from "./sh3_vector_accumulate.js";
|
|
2
|
+
|
|
3
|
+
test("basics", () => {
|
|
4
|
+
const out = [
|
|
5
|
+
1, 2,
|
|
6
|
+
3,4, 5,6,7,8,
|
|
7
|
+
9,10, 11,12, 13,14, 15,16, 17,18
|
|
8
|
+
];
|
|
9
|
+
const basis = [
|
|
10
|
+
2,
|
|
11
|
+
3, 5, 7,
|
|
12
|
+
11, 13, 17, 19, 23
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
sh3_vector_accumulate(
|
|
16
|
+
out, 0,
|
|
17
|
+
basis, 0,
|
|
18
|
+
[-3, 5], 0,
|
|
19
|
+
2
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
expect(out).toEqual([
|
|
23
|
+
-5, 12,
|
|
24
|
+
-6, 19, -10, 31, -14, 43,
|
|
25
|
+
-24, 65, -28, 77, -38, 99, -42, 111, -52, 133
|
|
26
|
+
]);
|
|
27
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]} out
|
|
4
|
+
* @param {number} out_offset
|
|
5
|
+
* @param {number[]} input
|
|
6
|
+
* @param {number} input_offset
|
|
7
|
+
* @param {number} length
|
|
8
|
+
*/
|
|
9
|
+
export function vector_copy(out: number[], out_offset: number, input: number[], input_offset: number, length: number): void;
|
|
10
|
+
//# sourceMappingURL=vector_copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector_copy.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec/vector_copy.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,iCANW,MAAM,EAAE,cACR,MAAM,SACN,MAAM,EAAE,gBACR,MAAM,UACN,MAAM,QAIhB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { array_copy } from "../../collection/array/array_copy.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {number[]} out
|
|
6
|
+
* @param {number} out_offset
|
|
7
|
+
* @param {number[]} input
|
|
8
|
+
* @param {number} input_offset
|
|
9
|
+
* @param {number} length
|
|
10
|
+
*/
|
|
11
|
+
export function vector_copy(out, out_offset, input, input_offset, length) {
|
|
12
|
+
array_copy(input, input_offset, out, out_offset, length);
|
|
13
|
+
}
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* @param {number} n number of dimensions
|
|
6
6
|
* @return {number}
|
|
7
7
|
*/
|
|
8
|
-
export function
|
|
9
|
-
//# sourceMappingURL=
|
|
8
|
+
export function vector_dot(a: number[] | Float32Array | Float64Array, b: number[] | Float32Array | Float64Array, n: number): number;
|
|
9
|
+
//# sourceMappingURL=vector_dot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector_dot.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec/vector_dot.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,8BALW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,KAClC,MAAM,GACL,MAAM,CAUjB"}
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* @param {number[]|Float32Array|Float64Array} data
|
|
5
5
|
* @param {number} [length] number of dimensions
|
|
6
6
|
*/
|
|
7
|
-
export function
|
|
8
|
-
//# sourceMappingURL=
|
|
7
|
+
export function vector_normalize(result: number[] | Float32Array | Float64Array, data: number[] | Float32Array | Float64Array, length?: number): void;
|
|
8
|
+
//# sourceMappingURL=vector_normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector_normalize.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec/vector_normalize.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,yCAJW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,QAClC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,WAClC,MAAM,QAoBhB"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @param {number[]|Float32Array|Float64Array} data
|
|
5
5
|
* @param {number} [length] number of dimensions
|
|
6
6
|
*/
|
|
7
|
-
export function
|
|
7
|
+
export function vector_normalize(result, data, length = data.length) {
|
|
8
8
|
|
|
9
9
|
let magnitude2 = 0;
|
|
10
10
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector_normalize.spec.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec/vector_normalize.spec.js"],"names":[],"mappings":""}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { vector_normalize } from "./vector_normalize.js";
|
|
2
2
|
|
|
3
3
|
test("1d vector normalization", () => {
|
|
4
4
|
const v = [7];
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
vector_normalize(v, v, 1);
|
|
7
7
|
|
|
8
8
|
expect(v[0]).toBeCloseTo(1);
|
|
9
9
|
|
|
10
10
|
v[0] = -13;
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
vector_normalize(v, v, 1);
|
|
13
13
|
|
|
14
14
|
expect(v[0]).toBeCloseTo(-1);
|
|
15
15
|
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]|Float32Array|Float64Array} out
|
|
4
|
+
* @param {number} out_offset
|
|
5
|
+
* @param {number[]|Float32Array|Float64Array} input
|
|
6
|
+
* @param {number} input_offset
|
|
7
|
+
* @param {number} dimensions
|
|
8
|
+
* @param {number} scale
|
|
9
|
+
*/
|
|
10
|
+
export function vector_scale_array(out: number[] | Float32Array | Float64Array, out_offset: number, input: number[] | Float32Array | Float64Array, input_offset: number, dimensions: number, scale: number): void;
|
|
11
|
+
//# sourceMappingURL=vector_scale_array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector_scale_array.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/vec/vector_scale_array.js"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wCAPW,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,cAClC,MAAM,SACN,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,gBAClC,MAAM,cACN,MAAM,SACN,MAAM,QAqBhB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { assert } from "../../assert.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {number[]|Float32Array|Float64Array} out
|
|
6
|
+
* @param {number} out_offset
|
|
7
|
+
* @param {number[]|Float32Array|Float64Array} input
|
|
8
|
+
* @param {number} input_offset
|
|
9
|
+
* @param {number} dimensions
|
|
10
|
+
* @param {number} scale
|
|
11
|
+
*/
|
|
12
|
+
export function vector_scale_array(
|
|
13
|
+
out, out_offset,
|
|
14
|
+
input, input_offset,
|
|
15
|
+
dimensions,
|
|
16
|
+
scale) {
|
|
17
|
+
|
|
18
|
+
assert.isArrayLike(out, 'out');
|
|
19
|
+
assert.isNonNegativeInteger(out_offset, 'out_offset');
|
|
20
|
+
|
|
21
|
+
assert.isArrayLike(input, 'input');
|
|
22
|
+
assert.isNonNegativeInteger(input_offset, 'input_offset');
|
|
23
|
+
|
|
24
|
+
assert.isNonNegativeInteger(dimensions, 'dimensions');
|
|
25
|
+
assert.isNumber(scale, 'scale');
|
|
26
|
+
|
|
27
|
+
for (let i = 0; i < dimensions; i++) {
|
|
28
|
+
out[out_offset + i] = input[input_offset + i] * scale;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeInstance.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/NodeInstance.js"],"names":[],"mappings":"AAcA;;;;GAIG;AACH;IAEI;;;;OAIG;IACH,aAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,6BAAmB;IAEnB;;;OAGG;IACH,WAFU,yBAAyB,EAAE,CAEtB;IAEf;;;OAGG;IACH,gBAAgB;IAEhB;;;OAGG;IACH,qBAAmB;IAEnB;;;OAGG;IACH,aAFU,gBAAgB,CAED;IAEzB;;;;;;OAMG;IACH,wBAFU,MAAM,CAEE;IAElB;;OAEG;IACH;QACI;;;WAGG;mCADO,OAAO,MAAM,WAAO;QAG9B;;;WAGG;iCADO,OAAO,MAAM,MAAI;QAG3B;;;WAGG;mCADO,OAAO,MAAM,MAAI;QAI3B;;;;WAIG;qCADO,yCAAyC,YAAY,CAAC;MAGlE;IAEF;;;;;;OAMG;IACH,yBALW,MAAM,aACN,aAAa,UACb,YAAY,GACV,MAAM,CAsBlB;IAED;;;OAGG;IACH,gDAEC;IAED;;;OAGG;IACH,+CAEC;IAGD;;;OAGG;IACH,mCAEC;IAED;;;;OAIG;IACH,kCAEC;IAED;;;;OAIG;IACH,mBAHW,MAAM,oBAKhB;IAED;;;;OAIG;IACH,mBAHW,MAAM,OAKhB;IAED;;;;OAIG;IACH,yBAHW,MAAM,KAOhB;IAED;;;;OAIG;IACH,2BAHW,MAAM,oBAmChB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,OAAO,CAkBnB;IAED;;;OAGG;IACH,uCAQC;IAED,wBAIC;IAED;;;OAGG;IACH,mDA+BC;IAED;;;;OAIG;IACH,qBAHW,MAAM,GACJ,yBAAyB,GAAC,SAAS,CAoB/C;IAED,eAEC;IAED;;;;OAIG;IACH,cAHW,YAAY,GACV,OAAO,CAQnB;IAED,mBAEC;IAIL;;;OAGG;IACH,yBAFU,OAAO,CAEoB;CAPpC;
|
|
1
|
+
{"version":3,"file":"NodeInstance.d.ts","sourceRoot":"","sources":["../../../../../../src/core/model/node-graph/node/NodeInstance.js"],"names":[],"mappings":"AAcA;;;;GAIG;AACH;IAEI;;;;OAIG;IACH,aAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,6BAAmB;IAEnB;;;OAGG;IACH,WAFU,yBAAyB,EAAE,CAEtB;IAEf;;;OAGG;IACH,gBAAgB;IAEhB;;;OAGG;IACH,qBAAmB;IAEnB;;;OAGG;IACH,aAFU,gBAAgB,CAED;IAEzB;;;;;;OAMG;IACH,wBAFU,MAAM,CAEE;IAElB;;OAEG;IACH;QACI;;;WAGG;mCADO,OAAO,MAAM,WAAO;QAG9B;;;WAGG;iCADO,OAAO,MAAM,MAAI;QAG3B;;;WAGG;mCADO,OAAO,MAAM,MAAI;QAI3B;;;;WAIG;qCADO,yCAAyC,YAAY,CAAC;MAGlE;IAEF;;;;;;OAMG;IACH,yBALW,MAAM,aACN,aAAa,UACb,YAAY,GACV,MAAM,CAsBlB;IAED;;;OAGG;IACH,gDAEC;IAED;;;OAGG;IACH,+CAEC;IAGD;;;OAGG;IACH,mCAEC;IAED;;;;OAIG;IACH,kCAEC;IAED;;;;OAIG;IACH,mBAHW,MAAM,oBAKhB;IAED;;;;OAIG;IACH,mBAHW,MAAM,OAKhB;IAED;;;;OAIG;IACH,yBAHW,MAAM,KAOhB;IAED;;;;OAIG;IACH,2BAHW,MAAM,oBAmChB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,OAAO,CAkBnB;IAED;;;OAGG;IACH,uCAQC;IAED,wBAIC;IAED;;;OAGG;IACH,mDA+BC;IAED;;;;OAIG;IACH,qBAHW,MAAM,GACJ,yBAAyB,GAAC,SAAS,CAoB/C;IAED;;;;OAIG;IACH,6BAHW,MAAM,GACJ,SAAS,GAAC,yBAAyB,CAa/C;IAED,eAEC;IAED;;;;OAIG;IACH,cAHW,YAAY,GACV,OAAO,CAQnB;IAED,mBAEC;IAIL;;;OAGG;IACH,yBAFU,OAAO,CAEoB;CAPpC;0CA5WyC,gCAAgC;iBAHzD,kCAAkC;mBAChC,kCAAkC;8BAGvB,oBAAoB"}
|
|
@@ -329,6 +329,24 @@ export class NodeInstance {
|
|
|
329
329
|
return undefined;
|
|
330
330
|
}
|
|
331
331
|
|
|
332
|
+
/**
|
|
333
|
+
*
|
|
334
|
+
* @param {string} name
|
|
335
|
+
* @returns {undefined|NodeInstancePortReference}
|
|
336
|
+
*/
|
|
337
|
+
getFirstEndpointByName(name) {
|
|
338
|
+
assert.isString(name, 'name');
|
|
339
|
+
|
|
340
|
+
const ports = this.description.getPortsByName(name);
|
|
341
|
+
|
|
342
|
+
if (ports.length === 0) {
|
|
343
|
+
return undefined;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
return this.getEndpoint(ports[0].id);
|
|
347
|
+
|
|
348
|
+
}
|
|
349
|
+
|
|
332
350
|
hash() {
|
|
333
351
|
return this.id;
|
|
334
352
|
}
|