@woosh/meep-engine 2.112.1 → 2.113.2
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/bundle-worker-image-decoder.js +1 -1
- package/build/bundle-worker-terrain.js +1 -1
- package/build/meep.cjs +5 -2
- package/build/meep.module.js +5 -2
- package/editor/Editor.js +2 -0
- package/package.json +1 -1
- package/src/core/binary/BinaryBuffer.d.ts +7 -1
- package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
- package/src/core/binary/BinaryBuffer.js +17 -2
- package/src/core/binary/platform_compute_endianness.d.ts +8 -0
- package/src/core/binary/platform_compute_endianness.d.ts.map +1 -0
- package/src/core/binary/platform_compute_endianness.js +29 -0
- package/src/core/binary/type/DataTypeIndices.d.ts +1 -0
- package/src/core/binary/type/DataTypeIndices.d.ts.map +1 -1
- package/src/core/binary/type/DataTypeIndices.js +2 -1
- package/src/core/collection/CuckooFilter.d.ts +3 -0
- package/src/core/collection/CuckooFilter.d.ts.map +1 -1
- package/src/core/collection/CuckooFilter.js +8 -5
- package/src/core/collection/SCRATCH_UINT32_TRAVERSAL_STACK.js +1 -1
- package/src/core/collection/queue/Deque.d.ts.map +1 -1
- package/src/core/collection/queue/Deque.js +4 -1
- package/src/core/collection/table/RowFirstTableSpec.d.ts +2 -2
- package/src/core/collection/table/RowFirstTableSpec.d.ts.map +1 -1
- package/src/core/collection/table/RowFirstTableSpec.js +11 -7
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +8 -3
- package/src/core/geom/3d/topology/simplify/collapseEdge.d.ts.map +1 -1
- package/src/core/geom/3d/topology/simplify/collapseEdge.js +8 -23
- package/src/core/geom/3d/topology/struct/TopoEdge.d.ts +1 -0
- package/src/core/geom/3d/topology/struct/TopoEdge.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/TopoEdge.js +35 -36
- package/src/core/geom/3d/topology/struct/TopoMesh.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/TopoMesh.js +18 -21
- package/src/core/geom/3d/topology/struct/TopoTriangle.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/TopoTriangle.js +24 -26
- package/src/core/geom/3d/topology/struct/TopoVertex.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/TopoVertex.js +37 -70
- package/src/engine/scene/SerializedScene.d.ts.map +1 -1
- package/src/engine/scene/SerializedScene.js +7 -4
package/package.json
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
* Mostly useful for serialization/deserialization tasks
|
|
4
4
|
*/
|
|
5
5
|
export class BinaryBuffer {
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param {EndianType} type
|
|
9
|
+
* @return {BinaryBuffer}
|
|
10
|
+
*/
|
|
11
|
+
static fromEndianness(type: EndianType): BinaryBuffer;
|
|
6
12
|
/**
|
|
7
13
|
*
|
|
8
14
|
* @param {ArrayBuffer} v
|
|
@@ -66,7 +72,7 @@ export class BinaryBuffer {
|
|
|
66
72
|
*/
|
|
67
73
|
static copyBytes(source: BinaryBuffer, target: BinaryBuffer, length: number): Uint8Array;
|
|
68
74
|
/**
|
|
69
|
-
*
|
|
75
|
+
* Default is little-endian as most platforms operate in little-endian
|
|
70
76
|
* @type {EndianType|boolean}
|
|
71
77
|
*/
|
|
72
78
|
endianness: EndianType | boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinaryBuffer.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/BinaryBuffer.js"],"names":[],"mappings":"AA4BA;;;GAGG;AACH;IA88BI;;;;OAIG;IACH,0BAHW,WAAW,GACV,YAAY,CAQvB;IAED;;;;;OAKG;IACH,8BAJW,YAAY,UACZ,YAAY,GACV,MAAM,CAQlB;IAED;;;;;OAKG;IACH,2BAJW,YAAY,UACZ,YAAY,GACV,MAAM,CAQlB;IAED;;;;;OAKG;IACH,yBAJW,YAAY,UACZ,YAAY,GACV,MAAM,CAQlB;IAED;;;;;OAKG;IACH,0BAJW,YAAY,UACZ,YAAY,GACV,MAAM,CAQlB;IAED;;;;;OAKG;IACH,0BAJW,YAAY,UACZ,YAAY,GACV,MAAM,CAQlB;IAED;;;;;OAKG;IACH,2BAJW,YAAY,UACZ,YAAY,GACV,MAAM,CAQlB;IAED;;;;;OAKG;IACH,2BAJW,YAAY,UACZ,YAAY,GACV,MAAM,CAQlB;IAED;;;;;OAKG;IACH,yBAJW,YAAY,UACZ,YAAY,UACZ,MAAM,cAUhB;
|
|
1
|
+
{"version":3,"file":"BinaryBuffer.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/BinaryBuffer.js"],"names":[],"mappings":"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"}
|
|
@@ -33,10 +33,10 @@ const DEFAULT_INITIAL_SIZE = 1024;
|
|
|
33
33
|
export class BinaryBuffer {
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
36
|
+
* Default is little-endian as most platforms operate in little-endian
|
|
37
37
|
* @type {EndianType|boolean}
|
|
38
38
|
*/
|
|
39
|
-
endianness = EndianType.
|
|
39
|
+
endianness = EndianType.LittleEndian;
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
*
|
|
@@ -1004,6 +1004,21 @@ export class BinaryBuffer {
|
|
|
1004
1004
|
return result;
|
|
1005
1005
|
}
|
|
1006
1006
|
|
|
1007
|
+
/**
|
|
1008
|
+
*
|
|
1009
|
+
* @param {EndianType} type
|
|
1010
|
+
* @return {BinaryBuffer}
|
|
1011
|
+
*/
|
|
1012
|
+
static fromEndianness(type) {
|
|
1013
|
+
assert.enum(type, EndianType, 'type');
|
|
1014
|
+
|
|
1015
|
+
const r = new BinaryBuffer();
|
|
1016
|
+
|
|
1017
|
+
r.endianness = type;
|
|
1018
|
+
|
|
1019
|
+
return r;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1007
1022
|
/**
|
|
1008
1023
|
*
|
|
1009
1024
|
* @param {ArrayBuffer} v
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Determines underlying native endianness type
|
|
3
|
+
* Useful for knowing byte order in TypedArrays
|
|
4
|
+
* @returns {EndianType}
|
|
5
|
+
*/
|
|
6
|
+
export function platform_compute_endianness(): EndianType;
|
|
7
|
+
import { EndianType } from "./EndianType.js";
|
|
8
|
+
//# sourceMappingURL=platform_compute_endianness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform_compute_endianness.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/platform_compute_endianness.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,+CAFa,UAAU,CAoBtB;2BA5B0B,iBAAiB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EndianType } from "./EndianType.js";
|
|
2
|
+
|
|
3
|
+
let platform_endianness = EndianType.LittleEndian;
|
|
4
|
+
let platform_endianness_inferred = false;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Determines underlying native endianness type
|
|
8
|
+
* Useful for knowing byte order in TypedArrays
|
|
9
|
+
* @returns {EndianType}
|
|
10
|
+
*/
|
|
11
|
+
export function platform_compute_endianness() {
|
|
12
|
+
|
|
13
|
+
if (platform_endianness_inferred) {
|
|
14
|
+
return platform_endianness;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const buffer = new ArrayBuffer(2);
|
|
18
|
+
|
|
19
|
+
const uint8 = new Uint8Array(buffer);
|
|
20
|
+
const uint16 = new Uint16Array(buffer);
|
|
21
|
+
|
|
22
|
+
uint8[0] = 0x13;
|
|
23
|
+
|
|
24
|
+
platform_endianness = ((uint16[0] & 0xFF) === 0x13) ? EndianType.LittleEndian : EndianType.BigEndian;
|
|
25
|
+
|
|
26
|
+
platform_endianness_inferred = true;
|
|
27
|
+
|
|
28
|
+
return platform_endianness;
|
|
29
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataTypeIndices.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/type/DataTypeIndices.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DataTypeIndices.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/type/DataTypeIndices.js"],"names":[],"mappings":";;;;8BAKU,MAAM"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* Space-efficient probabilistic data structure that allows testing whether a key is included in the set or not
|
|
3
|
+
* Provides definite "not in set" answer and a probabilistic "is in set" answer, certainty probability of which can be controlled
|
|
4
|
+
* @see https://en.wikipedia.org/wiki/Cuckoo_filter
|
|
2
5
|
* @description Inspired by MGunlogson's CuckooFilter4J library
|
|
3
6
|
*/
|
|
4
7
|
export class CuckooFilter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CuckooFilter.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/CuckooFilter.js"],"names":[],"mappings":"AAqDA
|
|
1
|
+
{"version":3,"file":"CuckooFilter.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/CuckooFilter.js"],"names":[],"mappings":"AAqDA;;;;;GAKG;AACH;IACI;;;;OAIG;IACH,+BAHW,MAAM,EA2ChB;IA5BG;;;OAGG;IACH,cAFU,MAAM,CAEgC;IAChD,sBAA8D;IAE9D;;;OAGG;IACH,cAFU,MAAM,CAE8C;IAE9D;;;OAGG;IACH,MAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,SAFU,MAAM,CAEA;IAEhB,yBAA4B;IAC5B,qBAAqB;IACrB,uBAAuB;IAG3B,oBAEC;IAED;;;;;;OAMG;IACH,uBAEC;IAED;;;;;;;;;OASG;IACH,mBAkBC;IAED;;;;;;OAMG;IACH,yBASC;IAED;;;;;;OAMG;IACH,0BAUC;IAED;;;;;OAKG;IACH,oBAIC;IAED;;;;;;OAMG;IACH,2BAUC;IAED;;;;;;;OAOG;IACH,2BALW,MAAM,kBACN,MAAM,OACN,MAAM,GACJ,MAAM,CAelB;IAED;;;;;;OAMG;IACH,0BALW,MAAM,kBACN,MAAM,OACN,MAAM,GACJ,OAAO,CAanB;IAED;;;;;;;;OAQG;IACH,wBAsBC;IAED;;;;;;;OAOG;IACH,gCAaC;IAED;;;;;OAKG;IACH,yCASC;IAED;;;;;;;;;;OAUG;IACH,mCAIC;IAED;;;;;OAKG;IACH,gCAWC;IAED;;;;;;;;;;;;;;;OAeG;IACH,aAJW,MAAM,GACJ,OAAO,CA8CnB;IAED,+BAcC;IAED;;;;;;;OAOG;IACH,sBAMC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,aAJW,MAAM,GACJ,OAAO,CA6BnB;IAGD;;;;;;OAMG;IACH,mBAHW,MAAM,GACJ,OAAO,CAUnB;CACJ;uBA/gBsB,qBAAqB"}
|
|
@@ -52,6 +52,9 @@ function createMaskFromBitCount(count) {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
|
+
* Space-efficient probabilistic data structure that allows testing whether a key is included in the set or not
|
|
56
|
+
* Provides definite "not in set" answer and a probabilistic "is in set" answer, certainty probability of which can be controlled
|
|
57
|
+
* @see https://en.wikipedia.org/wiki/Cuckoo_filter
|
|
55
58
|
* @description Inspired by MGunlogson's CuckooFilter4J library
|
|
56
59
|
*/
|
|
57
60
|
export class CuckooFilter {
|
|
@@ -454,10 +457,10 @@ export class CuckooFilter {
|
|
|
454
457
|
*/
|
|
455
458
|
__checkVictim(i1, i2, tag) {
|
|
456
459
|
return this.__victim_tag === tag
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
460
|
+
&& (
|
|
461
|
+
this.__victim_index === i1
|
|
462
|
+
|| this.__victim_index === i2
|
|
463
|
+
);
|
|
461
464
|
}
|
|
462
465
|
|
|
463
466
|
/**
|
|
@@ -520,7 +523,7 @@ export class CuckooFilter {
|
|
|
520
523
|
const i2 = this.__compute_alt_bucket_index(i1, tag);
|
|
521
524
|
|
|
522
525
|
return this.__findTag(i1, i2, tag)
|
|
523
|
-
|
|
526
|
+
|| (this.__victim_exists && this.__victim_tag === tag && (this.__victim_index === i1 || this.__victim_index === i2)) //check the victim
|
|
524
527
|
;
|
|
525
528
|
}
|
|
526
529
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @readonly
|
|
5
5
|
* @type {Uint32Array|{pointer:number}}
|
|
6
6
|
*/
|
|
7
|
-
export const SCRATCH_UINT32_TRAVERSAL_STACK = new Uint32Array(781250);
|
|
7
|
+
export const SCRATCH_UINT32_TRAVERSAL_STACK = new Uint32Array(781250); // size is fairly arbitrary
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Pointer used to track current top of the stack, make sure to unwind once your traversal is done
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Deque.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/queue/Deque.js"],"names":[],"mappings":"AAcA;;;GAGG;AACH;IA8BI;;;OAGG;IACH,uBAFW,MAAM,EAUhB;
|
|
1
|
+
{"version":3,"file":"Deque.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/queue/Deque.js"],"names":[],"mappings":"AAcA;;;GAGG;AACH;IA8BI;;;OAGG;IACH,uBAFW,MAAM,EAUhB;IAuFD;;;OAGG;IACH,WAFY,OAAO,CAIlB;IAED,cAeC;IAED;;;OAGG;IACH,QAFa,MAAM,CAalB;IA+CD;;;;OAIG;IACH,UAHW,CAAC,GACC,OAAO,CAYnB;IA4BD;;;;OAIG;IACH,WAFa,OAAO,CAInB;IAED;;;OAGG;IACH,YAFW,CAAC,QAOX;IAED;;;OAGG;IACH,eAFa,CAAC,GAAC,SAAS,CAQvB;IAED;;;OAGG;IACH,YAFa,CAAC,GAAC,SAAS,CAIvB;IAED;;;OAGG;IACH,WAFW,CAAC,QAOX;IAED;;;OAGG;IACH,cAFa,CAAC,CASb;IAGD;;;OAGG;IACH,WAFa,CAAC,GAAC,SAAS,CAKvB;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,CAAC,GAAC,SAAS,CAmBvB;IAED;;;;;OAKG;IACH,iBAJW,CAAC,EAAE,kBACH,MAAM,GACJ,CAAC,EAAE,CAUf;IAoBL,gBAAoB;IACpB,uBAAoB;IACpB,eAAmB;IAEnB;;OAEG;IACH,sBAAmB;IAzBf;;;OAGG;IACH,qBAFa,UAAU,CAAC,EAAC,IAAI,CAAC,CAS7B;;CACJ"}
|
|
@@ -21,7 +21,7 @@ export class Deque {
|
|
|
21
21
|
/**
|
|
22
22
|
* Using static array allocator to preserve data locality.
|
|
23
23
|
* Initialization via "[]" would give us a dynamically sized array,
|
|
24
|
-
* but it would have unpredictable locality as array may or may not have
|
|
24
|
+
* but it would have unpredictable locality as array may or may not have its elements stored next to each other in memory
|
|
25
25
|
* @type {T[]}
|
|
26
26
|
* @private
|
|
27
27
|
*/
|
|
@@ -112,9 +112,11 @@ export class Deque {
|
|
|
112
112
|
const length = this.#data.length;
|
|
113
113
|
|
|
114
114
|
if (UINT32_MAX === length) {
|
|
115
|
+
// array is already as big as it can get
|
|
115
116
|
throw new Error('Maximum array size exceeded');
|
|
116
117
|
}
|
|
117
118
|
|
|
119
|
+
// double existing length
|
|
118
120
|
let new_length = length * 2;
|
|
119
121
|
|
|
120
122
|
if (new_length > UINT32_MAX) {
|
|
@@ -169,6 +171,7 @@ export class Deque {
|
|
|
169
171
|
}
|
|
170
172
|
|
|
171
173
|
/**
|
|
174
|
+
* Number of elements in the collection
|
|
172
175
|
* @returns {number}
|
|
173
176
|
*/
|
|
174
177
|
size() {
|
|
@@ -13,10 +13,10 @@ export class RowFirstTableSpec {
|
|
|
13
13
|
/**
|
|
14
14
|
*
|
|
15
15
|
* @param {BinaryDataType[]} types
|
|
16
|
-
* @param {EndianType} [
|
|
16
|
+
* @param {EndianType} [endianness]
|
|
17
17
|
* @constructor
|
|
18
18
|
*/
|
|
19
|
-
constructor(types: BinaryDataType[],
|
|
19
|
+
constructor(types: BinaryDataType[], endianness?: EndianType);
|
|
20
20
|
/**
|
|
21
21
|
* @readonly
|
|
22
22
|
* @type {BinaryDataType[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowFirstTableSpec.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/table/RowFirstTableSpec.js"],"names":[],"mappings":"AA+HA;;;GAGG;AACH;
|
|
1
|
+
{"version":3,"file":"RowFirstTableSpec.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/table/RowFirstTableSpec.js"],"names":[],"mappings":"AA+HA;;;GAGG;AACH;IA4GI;;;;;OAKG;IACH,kBAJW,cAAc,EAAE,eAChB,UAAU,GACR,iBAAiB,CAmB7B;IAlID;;;;;OAKG;IACH,mBAJW,cAAc,EAAE,eAChB,UAAU,EAqEpB;IA5DG;;;OAGG;IACH,gBAFU,cAAc,EAAE,CAER;IAElB;;;OAGG;IACH,qBAFU,UAAU,CAEQ;IAE5B;;;OAGG;IACH,wBAFU,WAAW,CAEyB;IAiB9C;;;OAGG;IACH,yBAFU,MAAM,CAEgB;IAEhC;;;OAGG;IACH,+BAFmB,QAAQ,QAAE,MAAM,QAAE,MAAM,EAAE,KAAG,IAAI,CAEA;IAEpD;;;OAGG;IACH,gCAFmB,QAAQ,QAAE,MAAM,QAAE,MAAM,EAAE,KAAG,IAAI,CAEC;IAIrD,mBAAsC;IACtC,mBAAsC;IAQ1C;;;OAGG;IACH,kBAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,QAFY,MAAM,CAQjB;IAED;;;;OAIG;IACH,cAHW,iBAAiB,GACf,OAAO,CAQnB;IA4BL;;;OAGG;IACH,8BAFU,OAAO,CAE8B;CAN9C;+BA/P8B,qCAAqC;2BADzC,4BAA4B"}
|
|
@@ -133,11 +133,12 @@ export class RowFirstTableSpec {
|
|
|
133
133
|
/**
|
|
134
134
|
*
|
|
135
135
|
* @param {BinaryDataType[]} types
|
|
136
|
-
* @param {EndianType} [
|
|
136
|
+
* @param {EndianType} [endianness]
|
|
137
137
|
* @constructor
|
|
138
138
|
*/
|
|
139
|
-
constructor(types,
|
|
139
|
+
constructor(types, endianness = EndianType.BigEndian) {
|
|
140
140
|
assert.isArray(types, 'types');
|
|
141
|
+
assert.enum(endianness, EndianType, 'endianness');
|
|
141
142
|
|
|
142
143
|
const numTypes = types.length;
|
|
143
144
|
|
|
@@ -151,7 +152,7 @@ export class RowFirstTableSpec {
|
|
|
151
152
|
* @readonly
|
|
152
153
|
* @type {EndianType}
|
|
153
154
|
*/
|
|
154
|
-
this.endianType =
|
|
155
|
+
this.endianType = endianness;
|
|
155
156
|
|
|
156
157
|
/**
|
|
157
158
|
* @readonly
|
|
@@ -163,6 +164,9 @@ export class RowFirstTableSpec {
|
|
|
163
164
|
|
|
164
165
|
for (let index = 0; index < numTypes; index++) {
|
|
165
166
|
const type = types[index];
|
|
167
|
+
|
|
168
|
+
assert.enum(type, BinaryDataType, `type[${index}]`);
|
|
169
|
+
|
|
166
170
|
this.columnOffsets[index] = byteOffset;
|
|
167
171
|
|
|
168
172
|
const columnByteSize = DataTypeByteSizes[type];
|
|
@@ -181,13 +185,13 @@ export class RowFirstTableSpec {
|
|
|
181
185
|
* @readonly
|
|
182
186
|
* @type {function(DataView, number, number[]): void}
|
|
183
187
|
*/
|
|
184
|
-
this.readRowMethod = genRowReader(types,
|
|
188
|
+
this.readRowMethod = genRowReader(types, endianness);
|
|
185
189
|
|
|
186
190
|
/**
|
|
187
191
|
* @readonly
|
|
188
192
|
* @type {function(DataView, number, number[]): void}
|
|
189
193
|
*/
|
|
190
|
-
this.writeRowMethod = genRowWriter(types,
|
|
194
|
+
this.writeRowMethod = genRowWriter(types, endianness);
|
|
191
195
|
|
|
192
196
|
|
|
193
197
|
//generate cell readers/writers
|
|
@@ -195,8 +199,8 @@ export class RowFirstTableSpec {
|
|
|
195
199
|
this.cellReaders = new Array(numTypes);
|
|
196
200
|
|
|
197
201
|
for (let i = 0; i < numTypes; i++) {
|
|
198
|
-
this.cellReaders[i] = compileDataViewValueReader(types[i], this.columnOffsets[i],
|
|
199
|
-
this.cellWriters[i] = compileDataViewValueWriter(types[i], this.columnOffsets[i],
|
|
202
|
+
this.cellReaders[i] = compileDataViewValueReader(types[i], this.columnOffsets[i], endianness);
|
|
203
|
+
this.cellWriters[i] = compileDataViewValueWriter(types[i], this.columnOffsets[i], endianness);
|
|
200
204
|
}
|
|
201
205
|
}
|
|
202
206
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TetrahedralMesh.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/TetrahedralMesh.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TetrahedralMesh.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/TetrahedralMesh.js"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,qCAFU,MAAM,CAEkD;AAElE;;;GAGG;AACH,gCAFU,MAAM,CAE4B;AAE5C;;;GAGG;AACH,4BAFU,MAAM,CAEwB;AAoBxC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;IACI;;;OAGG;IACH,2BAFW,MAAM,EAqDhB;IAhDG;;;;OAIG;IACH,iBAAsE;IAEtE;;;;OAIG;IACH,sBAAmD;IAEnD;;;;OAIG;IACH,eAAyC;IAEzC;;;;OAIG;IACH,mBAA8B;IAE9B;;;;OAIG;IACH,mBAAmB;IAEnB;;;;OAIG;IACH,eAAgB;IAEhB;;;;OAIG;IACH,uBAAuB;IAG3B;;;;;OAKG;IACH,2BAEC;IAED;;;;OAIG;IACH,2CAUC;IAED;;;;OAIG;IACH,WAFY,MAAM,EAAE,CAYnB;IAED;;;OAGG;IACH,cAWC;IAED;;;OAGG;IACH,sBAFW,MAAM,QA8BhB;IAED;;;OAGG;IACH,eAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,QAFY,MAAM,CAMjB;IAED;;;;OAIG;IACH,oBAEC;IAGD;;;;OAIG;IACH,qBAYC;IAED;;;OAGG;IACH,yBAFW,MAAM,QAWhB;IAED;;;;OAIG;IACH,YAHW,MAAM,GACL,OAAO,CAiBlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,mBACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,mBACN,MAAM,aACN,MAAM,QAchB;IAGD;;;;;OAKG;IACH,0BAJW,MAAM,eACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,eACN,MAAM,UACN,MAAM,QAiBhB;IAED;;;;;OAKG;IACH,uBAJW,MAAM,UACN,MAAM,GACL,OAAO,CAUlB;IAGD;;;;OAIG;IACH,YAFY,MAAM,CA4BjB;IAED;;;;;;;;OAQG;IACH,eAPW,MAAM,EAAE,GAAC,YAAY,KACrB,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAqBlB;IAED;;;;OAIG;IACH,wBAFW,MAAM,QAmBhB;IAED;;;;OAIG;IACH,oBAFW,MAAM,QAmBhB;IAED;;;;;OAKG;IACH,2CAHW,MAAM,aACN,MAAM,QAwBhB;IAED;;;;;;;;OAQG;IACH,8BAPW,MAAM,KACN,MAAM,KACN,MAAM,UACN,MAAM,EAAE,sBACR,MAAM,GACJ,MAAM,CA8DlB;IAGD;;;;;OAKG;IACH,uBAHW,MAAM,qBACN,MAAM,QA0ChB;IAED;;;;OAIG;IACH,WAFa,MAAM,CA2ClB;IAED;;;OAGG;IACH,kBAFW,YAAY,QAUtB;IAED;;;OAGG;IACH,oBAFW,YAAY,QAiBtB;IAED;;;OAGG;IACH,oBAFY,MAAM,CAYjB;IAED;;;OAGG;IACH,wBAFW,MAAM,QAUhB;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;CAN1C;6BA/wB4B,iCAAiC"}
|
|
@@ -2,6 +2,7 @@ import { orient3d } from "robust-predicates";
|
|
|
2
2
|
import { assert } from "../../../assert.js";
|
|
3
3
|
import { Base64 } from "../../../binary/Base64.js";
|
|
4
4
|
import { BinaryBuffer } from "../../../binary/BinaryBuffer.js";
|
|
5
|
+
import { EndianType } from "../../../binary/EndianType.js";
|
|
5
6
|
import { array_copy } from "../../../collection/array/array_copy.js";
|
|
6
7
|
import { array_quick_sort_by_comparator } from "../../../collection/array/array_quick_sort_by_comparator.js";
|
|
7
8
|
import { typed_array_copy } from "../../../collection/array/typed/typed_array_copy.js";
|
|
@@ -761,6 +762,8 @@ export class TetrahedralMesh {
|
|
|
761
762
|
serialize_base64() {
|
|
762
763
|
const buffer = new BinaryBuffer();
|
|
763
764
|
|
|
765
|
+
buffer.endianness = EndianType.LittleEndian;
|
|
766
|
+
|
|
764
767
|
this.serialize(buffer);
|
|
765
768
|
|
|
766
769
|
buffer.trim();
|
|
@@ -773,11 +776,13 @@ export class TetrahedralMesh {
|
|
|
773
776
|
* @param {string} str
|
|
774
777
|
*/
|
|
775
778
|
deserialize_base64(str) {
|
|
776
|
-
const
|
|
779
|
+
const array_buffer = Base64.decode(str);
|
|
780
|
+
|
|
781
|
+
const buffer = BinaryBuffer.fromArrayBuffer(array_buffer);
|
|
777
782
|
|
|
778
|
-
|
|
783
|
+
buffer.endianness = EndianType.LittleEndian;
|
|
779
784
|
|
|
780
|
-
this.deserialize(
|
|
785
|
+
this.deserialize(buffer);
|
|
781
786
|
}
|
|
782
787
|
}
|
|
783
788
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapseEdge.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/simplify/collapseEdge.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"collapseEdge.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/simplify/collapseEdge.js"],"names":[],"mappings":"AAwFA;;;;;;;;GAQG;AACH,uHAmDC;AAED;;;;;;;;GAQG;AACH,gHAOC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
//
|
|
2
2
|
|
|
3
3
|
import { assert } from "../../../../assert.js";
|
|
4
|
+
import { tm_face_kill } from "../tm_face_kill.js";
|
|
5
|
+
import { tm_kill_only_edge } from "../tm_kill_only_edge.js";
|
|
6
|
+
import { tm_vert_splice } from "../tm_vert_splice.js";
|
|
4
7
|
|
|
5
8
|
/**
|
|
6
9
|
*
|
|
@@ -19,23 +22,13 @@ function cleanupDanglingEdges(face, mesh) {
|
|
|
19
22
|
if (edge.faces.length === 0) {
|
|
20
23
|
// dangling edge, remove
|
|
21
24
|
edge.unlink();
|
|
22
|
-
mesh
|
|
25
|
+
tm_kill_only_edge(mesh, edge);
|
|
23
26
|
|
|
24
27
|
//TODO consider to clean up dangling vertices as well
|
|
25
28
|
}
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
31
|
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
* @param {TopoTriangle} face
|
|
32
|
-
* @param {TopoMesh} mesh
|
|
33
|
-
*/
|
|
34
|
-
function removeFace(face, mesh) {
|
|
35
|
-
face.unlink();
|
|
36
|
-
mesh.removeFace(face);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
32
|
/**
|
|
40
33
|
*
|
|
41
34
|
* @param {TopoMesh} mesh
|
|
@@ -74,7 +67,7 @@ function collapseFaceToEdge(mesh, victim_face, vertex_victim, vertex_successor)
|
|
|
74
67
|
}
|
|
75
68
|
|
|
76
69
|
victim_edge.unlink();
|
|
77
|
-
mesh
|
|
70
|
+
tm_kill_only_edge(mesh, victim_edge);
|
|
78
71
|
// debugValidateMesh(mesh);
|
|
79
72
|
|
|
80
73
|
// migrate faces
|
|
@@ -113,7 +106,7 @@ export function partialEdgeCollapse(mesh, edge, victim, replacement) {
|
|
|
113
106
|
// unlink the edge
|
|
114
107
|
edge.unlink();
|
|
115
108
|
// remove the edge
|
|
116
|
-
mesh
|
|
109
|
+
tm_kill_only_edge(mesh, edge);
|
|
117
110
|
|
|
118
111
|
// debugValidateMesh(mesh);
|
|
119
112
|
|
|
@@ -123,7 +116,7 @@ export function partialEdgeCollapse(mesh, edge, victim, replacement) {
|
|
|
123
116
|
// get the other two edges
|
|
124
117
|
const remaining_edges = edge_face.edges;
|
|
125
118
|
// remove the face
|
|
126
|
-
|
|
119
|
+
tm_face_kill(mesh, edge_face);
|
|
127
120
|
|
|
128
121
|
// topology_find_broken_links(mesh);
|
|
129
122
|
|
|
@@ -170,13 +163,5 @@ export function collapseEdge(mesh, edge, victim, replacement) {
|
|
|
170
163
|
partialEdgeCollapse(mesh, edge, victim, replacement);
|
|
171
164
|
|
|
172
165
|
// replace the victim vertex with the replacer
|
|
173
|
-
replacement
|
|
174
|
-
//remove replaced vertex
|
|
175
|
-
|
|
176
|
-
/*
|
|
177
|
-
NOTE we're not removing vertex because doing so is costly and resulting mesh can be parsed later to remove dangling vertices
|
|
178
|
-
*/
|
|
179
|
-
// mesh.removeVertex(victim);
|
|
180
|
-
|
|
181
|
-
// validateMesh(mesh);
|
|
166
|
+
tm_vert_splice(mesh,replacement,victim);
|
|
182
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopoEdge.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/struct/TopoEdge.js"],"names":[],"mappings":"AAUA;
|
|
1
|
+
{"version":3,"file":"TopoEdge.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/struct/TopoEdge.js"],"names":[],"mappings":"AAUA;IACI;;;OAGG;IACH,OAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,eAAU;IACV;;;OAGG;IACH,eAAU;IAGV;;;OAGG;IACH,OAFU,cAAc,CAEb;IAEX;;;OAGG;IACH,WAFU,MAAM,CAED;IAEf,uBAEC;IAED;;;;OAIG;IACH,oBAHW,MAAM,cAWhB;IAED;;;OAGG;IACH,YAFW,QAAQ,QASlB;IAED,kBAMC;IAED;;;;OAIG;IACH,+BAFY,OAAO,CAiClB;IAED;;;OAGG;IACH,YAFY,OAAO,CAIlB;IAED;;OAEG;IACH,eAkBC;IAED;;;OAGG;IACH,oBAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,oBAFY,OAAO,CAKlB;IAED;;;OAGG;IACH,qBAMC;IAED,6BAiBC;IAED;;;;OAIG;IACH,mEASC;IAED;;;;OAIG;IACH,aAFW,QAAQ,QA0ClB;IAED;;;;OAIG;IACH,kCAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,kCAKC;IAED;;;OAGG;IACH,wCAIC;IAED;;;OAGG;IACH,kCAIC;IAED;;;;OAIG;IACH,0CAEC;IAED;;;;OAIG;IACH,+BAFY,OAAO,CAIlB;IAED;;;;;OAKG;IACH,oDAFY,OAAO,CAIlB;IAED;;;;OAIG;IACH,8BAHW,QAAQ,GACN,OAAO,CAInB;IAGL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAN5B"}
|
|
@@ -1,48 +1,46 @@
|
|
|
1
1
|
import { assert } from "../../../../assert.js";
|
|
2
|
-
import { array_remove_first } from "../../../../collection/array/array_remove_first.js";
|
|
3
2
|
import { array_push_if_unique } from "../../../../collection/array/array_push_if_unique.js";
|
|
4
|
-
import {
|
|
3
|
+
import { array_remove_first } from "../../../../collection/array/array_remove_first.js";
|
|
4
|
+
import { query_edge_is_boundary } from "../query/query_edge_is_boundary.js";
|
|
5
5
|
import { query_edge_other_vertex } from "../query/query_edge_other_vertex.js";
|
|
6
|
+
import { query_vertex_in_edge } from "../query/query_vertex_in_edge.js";
|
|
6
7
|
import { query_vertices_in_edge } from "../query/query_vertices_in_edge.js";
|
|
7
|
-
import { query_edge_is_boundary } from "../query/query_edge_is_boundary.js";
|
|
8
8
|
|
|
9
9
|
let index_counter = 0;
|
|
10
10
|
|
|
11
11
|
export class TopoEdge {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
this.lengthSqr = -1;
|
|
42
|
-
}
|
|
12
|
+
/**
|
|
13
|
+
* Unique ID
|
|
14
|
+
* @type {number}
|
|
15
|
+
*/
|
|
16
|
+
index = index_counter++;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @type {TopoVertex}
|
|
21
|
+
*/
|
|
22
|
+
v0 = null;
|
|
23
|
+
/**
|
|
24
|
+
*
|
|
25
|
+
* @type {TopoVertex}
|
|
26
|
+
*/
|
|
27
|
+
v1 = null;
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @type {TopoTriangle[]}
|
|
33
|
+
*/
|
|
34
|
+
faces = [];
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @type {number}
|
|
39
|
+
*/
|
|
40
|
+
lengthSqr = -1;
|
|
43
41
|
|
|
44
42
|
get byteSize() {
|
|
45
|
-
return 80+5*4 + 4 + 8 + 8 + 8 + this.faces.length * 8 + 10;
|
|
43
|
+
return 80 + 5 * 4 + 4 + 8 + 8 + 8 + this.faces.length * 8 + 10;
|
|
46
44
|
}
|
|
47
45
|
|
|
48
46
|
/**
|
|
@@ -333,9 +331,10 @@ export class TopoEdge {
|
|
|
333
331
|
/**
|
|
334
332
|
*
|
|
335
333
|
* @param {TopoEdge} other
|
|
334
|
+
* @returns {boolean}
|
|
336
335
|
*/
|
|
337
336
|
containsSameVerticesAs(other) {
|
|
338
|
-
return this
|
|
337
|
+
return query_vertices_in_edge(this, other.v0, other.v1);
|
|
339
338
|
}
|
|
340
339
|
}
|
|
341
340
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopoMesh.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/struct/TopoMesh.js"],"names":[],"mappings":"AAcA;
|
|
1
|
+
{"version":3,"file":"TopoMesh.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/struct/TopoMesh.js"],"names":[],"mappings":"AAcA;IAEI;;;OAGG;IACH,UAFU,UAAU,EAAE,CAER;IAEd;;;;OAIG;IACH,gBAAoB;IAGpB;;;;OAIG;IACH,gBAAoB;IAEpB;;;;OAIG;IACH,uBAkBC;IAED;;;OAGG;IACH,YAFa,IAAI,QAAQ,CAAC,CAIzB;IAED;;;OAGG;IACH,YAFa,IAAI,YAAY,CAAC,CAI7B;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACL,SAAS,GAAC,YAAY,CAYjC;IAED;;;;OAIG;IACH,wCAFa,OAAO,CA0GnB;IAED,kBAMC;IAED;;;OAGG;IACH,sBAFa,IAAI,MAAM,EAAE,UAAU,CAAC,CAoBnC;IAED;;;;OAIG;IACH,yBAHW,QAAQ,cACR,IAAI,MAAM,EAAE,UAAU,CAAC,QAYjC;IAED;;;;OAIG;IACH,kBAHW,YAAY,cACZ,IAAI,MAAM,EAAC,UAAU,CAAC,QAqChC;IAED;;;;OAIG;IACH,qBAFW,YAAY,QAsBtB;IAED;;;OAGG;IACH,WAFW,QAAQ,QAclB;IAED;;;OAGG;IACH,aAFW,UAAU,QAKpB;IAED;;;OAGG;IACH,mBAFW,UAAU,QAMpB;IAED;;;OAGG;IACH,gBAFW,UAAU,QAIpB;IAED;;;;OAIG;IACH,kBAHW,UAAU,GACR,OAAO,CAKnB;IAGD;;;OAGG;IACH,WAFW,QAAQ,QAKlB;IAED;;;OAGG;IACH,iBAFW,QAAQ,QAMlB;IAED;;;OAGG;IACH,cAFW,QAAQ,QAIlB;IAED;;;;OAIG;IACH,gBAHW,QAAQ,GACN,OAAO,CAKnB;IAED;;;OAGG;IACH,WAFW,YAAY,QAUtB;IAED;;;OAGG;IACH,uBAFW,SAAS,YAAY,CAAC,QAMhC;IAED;;;OAGG;IACH,cAFW,YAAY,QAwBtB;IAED;;;OAGG;IACH,cAFW,YAAY,QAItB;IAED;;;;OAIG;IACH,gBAHW,YAAY,GACV,OAAO,CAKnB;IAED;;;;;;OAMG;IACH,cALW,UAAU,KACV,UAAU,GAER,QAAQ,CAoCpB;IAED,mBAsCC;IAED,kCAQC;IAED;;;;OAIG;IACH,gBAHW,YAAY,SACZ,WAAW,GAAC,WAAW,GAAC,UAAU,GAAC,MAAM,EAAE,QAmErD;IAED,mBAEC;IAIL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAP5B;2BAnoB0B,iBAAiB;yBAFnB,eAAe;6BACX,mBAAmB;qBAR3B,8BAA8B"}
|
|
@@ -13,29 +13,27 @@ import { TopoTriangle } from "./TopoTriangle.js";
|
|
|
13
13
|
import { TopoVertex } from "./TopoVertex.js";
|
|
14
14
|
|
|
15
15
|
export class TopoMesh {
|
|
16
|
-
constructor() {
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
/**
|
|
18
|
+
*
|
|
19
|
+
* @type {TopoVertex[]}
|
|
20
|
+
*/
|
|
21
|
+
vertices = [];
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
/**
|
|
24
|
+
*
|
|
25
|
+
* @type {Set<TopoEdge>}
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
__edges = new Set();
|
|
30
29
|
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
* @type {Set<TopoTriangle>}
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
__faces = new Set();
|
|
39
37
|
|
|
40
38
|
/**
|
|
41
39
|
* Approximation of memory footprint of this object
|
|
@@ -562,7 +560,7 @@ export class TopoMesh {
|
|
|
562
560
|
}
|
|
563
561
|
|
|
564
562
|
//cut the second edge
|
|
565
|
-
this
|
|
563
|
+
tm_kill_only_edge(this, e1);
|
|
566
564
|
|
|
567
565
|
//absorb edge
|
|
568
566
|
e0.merge(e1);
|
|
@@ -644,7 +642,6 @@ export class TopoMesh {
|
|
|
644
642
|
f.vertices.push(vA, vB, vC);
|
|
645
643
|
f.edges.push(eAB, eBC, eCA);
|
|
646
644
|
|
|
647
|
-
|
|
648
645
|
vA.faces.push(f);
|
|
649
646
|
vB.faces.push(f);
|
|
650
647
|
vC.faces.push(f);
|