@webviz/subsurface-viewer 0.0.2-alpha.4 → 0.0.2-alpha.6
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/SubsurfaceViewer.d.ts +29 -0
- package/dist/SubsurfaceViewer.js +2 -2
- package/dist/SubsurfaceViewer.js.map +1 -1
- package/dist/components/Map.d.ts +6 -0
- package/dist/components/Map.js +66 -14
- package/dist/components/Map.js.map +1 -1
- package/dist/inputSchema/WellLogTemplate.json +0 -5
- package/dist/layers/BoxSelectionLayer/boxSelectionLayer.d.ts +3 -3
- package/dist/layers/BoxSelectionLayer/boxSelectionLayer.js +2 -5
- package/dist/layers/BoxSelectionLayer/boxSelectionLayer.js.map +1 -1
- package/dist/layers/axes2d/axes2DLayer.js +53 -21
- package/dist/layers/axes2d/axes2DLayer.js.map +1 -1
- package/dist/layers/grid3d/earcut.d.ts +5 -0
- package/dist/layers/grid3d/earcut.js +563 -0
- package/dist/layers/grid3d/earcut.js.map +1 -0
- package/dist/layers/grid3d/grid3dLayer.d.ts +3 -0
- package/dist/layers/grid3d/grid3dLayer.js +17 -1
- package/dist/layers/grid3d/grid3dLayer.js.map +1 -1
- package/dist/layers/grid3d/test_data/PentagonalToroid.d.ts +7 -0
- package/dist/layers/grid3d/test_data/PentagonalToroid.js +55 -0
- package/dist/layers/grid3d/test_data/PentagonalToroid.js.map +1 -0
- package/dist/layers/grid3d/test_data/TruncatedSnubCube.d.ts +7 -0
- package/dist/layers/grid3d/test_data/TruncatedSnubCube.js +267 -0
- package/dist/layers/grid3d/test_data/TruncatedSnubCube.js.map +1 -0
- package/dist/layers/grid3d/webworker.js +86 -71
- package/dist/layers/grid3d/webworker.js.map +1 -1
- package/dist/layers/map/mapLayer.d.ts +1 -0
- package/dist/layers/map/mapLayer.js +16 -5
- package/dist/layers/map/mapLayer.js.map +1 -1
- package/dist/layers/triangle/privateTriangleLayer.js.map +1 -1
- package/dist/layers/triangle/triangleLayer.d.ts +1 -0
- package/dist/layers/triangle/triangleLayer.js +14 -1
- package/dist/layers/triangle/triangleLayer.js.map +1 -1
- package/package.json +49 -36
- package/dist/assets/glTF/north_arrow/scene.bin +0 -0
- package/dist/assets/glTF/north_arrow/scene.gltf +0 -315
- package/dist/inputSchema/wellCompletions.json +0 -108
- package/dist/package.json +0 -38
|
@@ -12,6 +12,7 @@ import privateLayer from "./privateLayer";
|
|
|
12
12
|
import { makeFullMesh } from "./webworker";
|
|
13
13
|
import { isEqual } from "lodash";
|
|
14
14
|
import { load, JSONLoader } from "@loaders.gl/core";
|
|
15
|
+
import { default as earcut } from "./earcut";
|
|
15
16
|
function GetBBox(points, isZIncreasingDownwards) {
|
|
16
17
|
let xmax = -99999999;
|
|
17
18
|
let ymax = -99999999;
|
|
@@ -56,6 +57,15 @@ const defaultProps = {
|
|
|
56
57
|
ZIncreasingDownwards: true,
|
|
57
58
|
};
|
|
58
59
|
export default class Grid3DLayer extends CompositeLayer {
|
|
60
|
+
get isLoaded() {
|
|
61
|
+
var _a, _b;
|
|
62
|
+
const subLayers = this.getSubLayers();
|
|
63
|
+
const isLoaded = super.isLoaded &&
|
|
64
|
+
subLayers.length > 0 &&
|
|
65
|
+
subLayers.every((layer) => layer.isLoaded);
|
|
66
|
+
const isFinished = (_b = (_a = this.state) === null || _a === void 0 ? void 0 : _a["isFinishedLoading"]) !== null && _b !== void 0 ? _b : false;
|
|
67
|
+
return isLoaded && isFinished;
|
|
68
|
+
}
|
|
59
69
|
rebuildData(reportBoundingBox) {
|
|
60
70
|
const p = load_data(this.props.pointsData, this.props.polysData, this.props.propertiesData);
|
|
61
71
|
p.then(([points, polys, properties]) => {
|
|
@@ -70,6 +80,8 @@ export default class Grid3DLayer extends CompositeLayer {
|
|
|
70
80
|
polys,
|
|
71
81
|
properties,
|
|
72
82
|
isZIncreasingDownwards: this.props.ZIncreasingDownwards,
|
|
83
|
+
triangulateFunc: `return earcut(points);\n${earcut.toString()}`,
|
|
84
|
+
triangulateParamName: "points",
|
|
73
85
|
};
|
|
74
86
|
webWorker.postMessage(webworkerParams);
|
|
75
87
|
webWorker.onmessage = (e) => {
|
|
@@ -93,10 +105,12 @@ export default class Grid3DLayer extends CompositeLayer {
|
|
|
93
105
|
this.props.setReportedBoundingBox(bbox);
|
|
94
106
|
}
|
|
95
107
|
webWorker.terminate();
|
|
108
|
+
this.setState(Object.assign(Object.assign({}, this.state), { isFinishedLoading: true }));
|
|
96
109
|
};
|
|
97
110
|
});
|
|
98
111
|
}
|
|
99
112
|
initializeState() {
|
|
113
|
+
this.setState(Object.assign(Object.assign({}, this.state), { isFinishedLoading: false }));
|
|
100
114
|
const reportBoundingBox = true;
|
|
101
115
|
this.rebuildData(reportBoundingBox);
|
|
102
116
|
}
|
|
@@ -106,12 +120,14 @@ export default class Grid3DLayer extends CompositeLayer {
|
|
|
106
120
|
!isEqual(props.propertiesData, oldProps.propertiesData) ||
|
|
107
121
|
!isEqual(props.ZIncreasingDownwards, oldProps.ZIncreasingDownwards);
|
|
108
122
|
if (needs_reload) {
|
|
123
|
+
this.setState(Object.assign(Object.assign({}, this.state), { isFinishedLoading: false }));
|
|
109
124
|
const reportBoundingBox = false;
|
|
110
125
|
this.rebuildData(reportBoundingBox);
|
|
111
126
|
}
|
|
112
127
|
}
|
|
113
128
|
renderLayers() {
|
|
114
|
-
if (Object.keys(this.state).length ===
|
|
129
|
+
if (Object.keys(this.state).length === 1) {
|
|
130
|
+
// isFinishedLoading only in state
|
|
115
131
|
return [];
|
|
116
132
|
}
|
|
117
133
|
const layer = new privateLayer(this.getSubLayerProps({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid3dLayer.js","sourceRoot":"","sources":["../../../src/layers/grid3d/grid3dLayer.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAS,MAAM,qBAAqB,CAAC;AAC5D,OAAO,YAA0B,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"grid3dLayer.js","sourceRoot":"","sources":["../../../src/layers/grid3d/grid3dLayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* eslint-disable prettier/prettier */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-loss-of-precision */
|
|
3
|
+
/**
|
|
4
|
+
* Pentagonal Antiprism-Trapezohedron Toroid
|
|
5
|
+
* http://dmccooey.com/polyhedra/PentagonalAntiprismTrapezohedronToroid.html
|
|
6
|
+
*/
|
|
7
|
+
const C0 = (3 - Math.sqrt(5)) / 4;
|
|
8
|
+
const C1 = (Math.sqrt(5) - 1) / 4;
|
|
9
|
+
const C2 = (1 + Math.sqrt(5)) / 4;
|
|
10
|
+
export const Points = [
|
|
11
|
+
0.5, 0.0, C2,
|
|
12
|
+
0.5, 0.0, -C2,
|
|
13
|
+
-0.5, 0.0, C2,
|
|
14
|
+
-0.5, 0.0, -C2,
|
|
15
|
+
0.0, C2, 0.5,
|
|
16
|
+
0.0, C2, -0.5,
|
|
17
|
+
0.0, -C2, 0.5,
|
|
18
|
+
0.0, -C2, -0.5,
|
|
19
|
+
C2, 0.5, 0.0,
|
|
20
|
+
-C2, -0.5, 0.0,
|
|
21
|
+
0.0, C0, 0.5,
|
|
22
|
+
0.0, C0, -0.5,
|
|
23
|
+
0.0, -C0, 0.5,
|
|
24
|
+
0.0, -C0, -0.5,
|
|
25
|
+
C1, C1, C1,
|
|
26
|
+
C1, C1, -C1,
|
|
27
|
+
-C1, -C1, C1,
|
|
28
|
+
-C1, -C1, -C1,
|
|
29
|
+
C0, 0.5, 0.0,
|
|
30
|
+
-C0, -0.5, 0.0,
|
|
31
|
+
];
|
|
32
|
+
export const Faces = [
|
|
33
|
+
5, 0, 6, 16, 12, 10,
|
|
34
|
+
5, 1, 8, 18, 15, 11,
|
|
35
|
+
5, 2, 4, 14, 10, 12,
|
|
36
|
+
5, 3, 9, 19, 17, 13,
|
|
37
|
+
5, 4, 5, 15, 18, 14,
|
|
38
|
+
5, 5, 3, 13, 11, 15,
|
|
39
|
+
5, 6, 7, 17, 19, 16,
|
|
40
|
+
5, 7, 1, 11, 13, 17,
|
|
41
|
+
5, 8, 0, 10, 14, 18,
|
|
42
|
+
5, 9, 2, 12, 16, 19,
|
|
43
|
+
3, 2, 6, 0,
|
|
44
|
+
3, 2, 0, 4,
|
|
45
|
+
3, 3, 1, 7,
|
|
46
|
+
3, 3, 7, 9,
|
|
47
|
+
3, 4, 0, 8,
|
|
48
|
+
3, 4, 8, 5,
|
|
49
|
+
3, 5, 8, 1,
|
|
50
|
+
3, 5, 1, 3,
|
|
51
|
+
3, 6, 2, 9,
|
|
52
|
+
3, 6, 9, 7
|
|
53
|
+
];
|
|
54
|
+
export const VertexCount = 80;
|
|
55
|
+
//# sourceMappingURL=PentagonalToroid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PentagonalToroid.js","sourceRoot":"","sources":["../../../../src/layers/grid3d/test_data/PentagonalToroid.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,4DAA4D;AAC5D;;;EAGE;AAEF,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAClC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,GAAG,EAAG,GAAG,EAAI,EAAE;IACf,GAAG,EAAG,GAAG,EAAG,CAAC,EAAE;IAChB,CAAC,GAAG,EAAG,GAAG,EAAI,EAAE;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,CAAC,EAAE;IACf,GAAG,EAAI,EAAE,EAAG,GAAG;IACf,GAAG,EAAI,EAAE,EAAE,CAAC,GAAG;IACf,GAAG,EAAG,CAAC,EAAE,EAAG,GAAG;IACf,GAAG,EAAG,CAAC,EAAE,EAAE,CAAC,GAAG;IACd,EAAE,EAAG,GAAG,EAAG,GAAG;IACf,CAAC,EAAE,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAI,EAAE,EAAG,GAAG;IACf,GAAG,EAAI,EAAE,EAAE,CAAC,GAAG;IACf,GAAG,EAAG,CAAC,EAAE,EAAG,GAAG;IACf,GAAG,EAAG,CAAC,EAAE,EAAE,CAAC,GAAG;IACd,EAAE,EAAI,EAAE,EAAI,EAAE;IACd,EAAE,EAAI,EAAE,EAAG,CAAC,EAAE;IACf,CAAC,EAAE,EAAG,CAAC,EAAE,EAAI,EAAE;IACf,CAAC,EAAE,EAAG,CAAC,EAAE,EAAG,CAAC,EAAE;IACd,EAAE,EAAG,GAAG,EAAG,GAAG;IACf,CAAC,EAAE,EAAE,CAAC,GAAG,EAAG,GAAG;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACrB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACpB,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CAAC;IACZ,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CAAC;IACZ,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CAAC;IACZ,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CAAC;IACZ,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CAAC;IACZ,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CAAC;IACZ,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CAAC;IACZ,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CAAC;IACZ,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CAAC;IACZ,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CAAC;CAAC,CAAA;AAEb,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-loss-of-precision */
|
|
2
|
+
/* eslint-disable prettier/prettier */
|
|
3
|
+
/**
|
|
4
|
+
* Canonical Truncated Snub Cube (laevo)
|
|
5
|
+
* http://dmccooey.com/polyhedra/CanonicalTruncatedLsnubCube.html
|
|
6
|
+
*/
|
|
7
|
+
const C0 = 0.0302251764772701090307923300606;
|
|
8
|
+
const C1 = 0.0363071672915951331148593569212;
|
|
9
|
+
const C2 = 0.0409778062246362225458193945047;
|
|
10
|
+
const C3 = 0.0456429395787649414224784522932;
|
|
11
|
+
const C4 = 0.0517249303930899655065454791538;
|
|
12
|
+
const C5 = 0.0874428904727683864261001346480;
|
|
13
|
+
const C6 = 0.0889753108130376311630881430690;
|
|
14
|
+
const C7 = 0.09641163211454776963649003756654;
|
|
15
|
+
const C8 = 0.103835000017680081843811562026;
|
|
16
|
+
const C9 = 0.105367420357949326580799570447;
|
|
17
|
+
const C10 = 0.2450214662773631071920643581053;
|
|
18
|
+
const C11 = 0.252134792945065226794434215441;
|
|
19
|
+
const C12 = 0.255788526486979252796077241708;
|
|
20
|
+
const C13 = 0.259407893525480844065447649862;
|
|
21
|
+
const C14 = 0.266521220193182963667817507199;
|
|
22
|
+
const C15 = 0.3029689425643569933701316598948;
|
|
23
|
+
const C16 = 0.3107539819206035142821858189547;
|
|
24
|
+
const C17 = 0.313739895806156433849991991246;
|
|
25
|
+
const C18 = 0.316683657123930328933830649928;
|
|
26
|
+
const C19 = 0.324468696480176849845884808988;
|
|
27
|
+
const C20 = 0.341582160313331475749836432441;
|
|
28
|
+
const C21 = 0.342151628299672471981879473588;
|
|
29
|
+
const C22 = 0.349638984338757152241767048476;
|
|
30
|
+
const C23 = 0.357079364582979470793901403586;
|
|
31
|
+
const C24 = 0.357648832569320467025944444734;
|
|
32
|
+
const C25 = 0.391940478946977214295158968170;
|
|
33
|
+
const C26 = 0.402215383307808349008215898526;
|
|
34
|
+
const C27 = 0.402717409481951931035229823292;
|
|
35
|
+
const C28 = 0.403165328501965936057855186908;
|
|
36
|
+
const C29 = 0.413440232862797070770912117264;
|
|
37
|
+
const C30 = 0.422352352366772596332884976776;
|
|
38
|
+
const C31 = 0.4257635648947751879276442138453;
|
|
39
|
+
const C32 = 0.431361914520635145594778682227;
|
|
40
|
+
const C33 = 0.436902308455866726256044549281;
|
|
41
|
+
const C34 = 0.4403135209838693178508037863502;
|
|
42
|
+
const C35 = 0.471479357405498664795143730174;
|
|
43
|
+
const C36 = 0.475460037919842252621946008390;
|
|
44
|
+
const C37 = 0.480492220013909699306611793938;
|
|
45
|
+
const C38 = 0.485459845508251798486260261531;
|
|
46
|
+
const C39 = 0.489440526022595386313062539748;
|
|
47
|
+
const C40 = 0.631997406136481720130022548434;
|
|
48
|
+
const C41 = 0.635861486054042501323957014766;
|
|
49
|
+
const C42 = 0.639842166568386089150759292982;
|
|
50
|
+
const C43 = 0.641002732085134761084968597476;
|
|
51
|
+
const C44 = 0.6420771755897582912639852396851;
|
|
52
|
+
const C45 = 0.643938080377665686012635061440;
|
|
53
|
+
const C46 = 0.647947477795687904773262748842;
|
|
54
|
+
const C47 = 0.649921936021662660284721984233;
|
|
55
|
+
const C49 = 0.685557959079109566018258809311;
|
|
56
|
+
const C48 = 0.651928158310031492600065027059;
|
|
57
|
+
const C50 = 0.688969171607112157613018046380;
|
|
58
|
+
const C51 = 0.693068385870940239724468173151;
|
|
59
|
+
const C52 = 0.697074482834413973235521502239;
|
|
60
|
+
const C53 = 0.700485695362416564830280739309;
|
|
61
|
+
const C54 = 0.765729043260772372082807472863;
|
|
62
|
+
const C55 = 0.769169895674212281964023549568;
|
|
63
|
+
const C56 = 0.7697393636605532781960665907152;
|
|
64
|
+
const C57 = 0.772041383352407496366556208990;
|
|
65
|
+
const C58 = 0.773210830287960287716720126734;
|
|
66
|
+
const C59 = 0.774276392373779698479782155693;
|
|
67
|
+
const C60 = 0.774791316052818233077479806902;
|
|
68
|
+
const C61 = 0.779739171248962824060380843856;
|
|
69
|
+
const C62 = 0.780308639235303820292423885003;
|
|
70
|
+
const C63 = 0.780588732465414822763530891820;
|
|
71
|
+
const C64 = 0.922705157019364016574154365883;
|
|
72
|
+
const C65 = 0.923736492872741112092457196358;
|
|
73
|
+
const C66 = 0.924408205561285513402141498082;
|
|
74
|
+
const C67 = 0.926898070565870127203144269378;
|
|
75
|
+
const C68 = 0.927435346016054600951910190606;
|
|
76
|
+
const C69 = 0.927848015760027714252783557760;
|
|
77
|
+
const C70 = 0.930337880764612328053786329055496;
|
|
78
|
+
const C71 = 0.931009593453156729363470630779;
|
|
79
|
+
const C72 = 0.9320409293065338248817734612548;
|
|
80
|
+
export const Points = [
|
|
81
|
+
C72, -C25, -C2,
|
|
82
|
+
-C72, C25, -C2,
|
|
83
|
+
C25, C72, -C2,
|
|
84
|
+
-C25, -C72, -C2,
|
|
85
|
+
C71, -C15, C12,
|
|
86
|
+
-C71, C15, C12,
|
|
87
|
+
C15, C71, C12,
|
|
88
|
+
-C15, -C71, C12,
|
|
89
|
+
C10, C70, -C17,
|
|
90
|
+
-C10, -C70, -C17,
|
|
91
|
+
C70, -C10, -C17,
|
|
92
|
+
-C70, C10, -C17,
|
|
93
|
+
C0, C69, C27,
|
|
94
|
+
-C0, -C69, C27,
|
|
95
|
+
C69, -C0, C27,
|
|
96
|
+
-C69, C0, C27,
|
|
97
|
+
C28, -C1, -C68,
|
|
98
|
+
-C28, C1, -C68,
|
|
99
|
+
C1, C28, -C68,
|
|
100
|
+
-C1, -C28, -C68,
|
|
101
|
+
C26, C3, C68,
|
|
102
|
+
-C26, -C3, C68,
|
|
103
|
+
C3, -C26, C68,
|
|
104
|
+
-C3, C26, C68,
|
|
105
|
+
C18, -C11, C68,
|
|
106
|
+
-C18, C11, C68,
|
|
107
|
+
C11, C18, C68,
|
|
108
|
+
-C11, -C18, C68,
|
|
109
|
+
C16, C13, -C68,
|
|
110
|
+
-C16, -C13, -C68,
|
|
111
|
+
C13, -C16, -C68,
|
|
112
|
+
-C13, C16, -C68,
|
|
113
|
+
C4, -C67, -C27,
|
|
114
|
+
-C4, C67, -C27,
|
|
115
|
+
C67, C4, -C27,
|
|
116
|
+
-C67, -C4, -C27,
|
|
117
|
+
C14, -C66, C17,
|
|
118
|
+
-C14, C66, C17,
|
|
119
|
+
C66, C14, C17,
|
|
120
|
+
-C66, -C14, C17,
|
|
121
|
+
C65, C19, -C12,
|
|
122
|
+
-C65, -C19, -C12,
|
|
123
|
+
C19, -C65, -C12,
|
|
124
|
+
-C19, C65, -C12,
|
|
125
|
+
C64, C29, C2,
|
|
126
|
+
-C64, -C29, C2,
|
|
127
|
+
C29, -C64, C2,
|
|
128
|
+
-C29, C64, C2,
|
|
129
|
+
C63, -C40, -C7,
|
|
130
|
+
-C63, C40, -C7,
|
|
131
|
+
C40, C63, -C7,
|
|
132
|
+
-C40, -C63, -C7,
|
|
133
|
+
C62, -C35, C32,
|
|
134
|
+
-C62, C35, C32,
|
|
135
|
+
C35, C62, C32,
|
|
136
|
+
-C35, -C62, C32,
|
|
137
|
+
C30, C61, -C37,
|
|
138
|
+
-C30, -C61, -C37,
|
|
139
|
+
C61, -C30, -C37,
|
|
140
|
+
-C61, C30, -C37,
|
|
141
|
+
C38, -C31, C60,
|
|
142
|
+
-C38, C31, C60,
|
|
143
|
+
C31, C38, C60,
|
|
144
|
+
-C31, -C38, C60,
|
|
145
|
+
C36, C33, -C60,
|
|
146
|
+
-C36, -C33, -C60,
|
|
147
|
+
C33, -C36, -C60,
|
|
148
|
+
-C33, C36, -C60,
|
|
149
|
+
C5, C59, C43,
|
|
150
|
+
-C5, -C59, C43,
|
|
151
|
+
C59, -C5, C43,
|
|
152
|
+
-C59, C5, C43,
|
|
153
|
+
C44, -C6, -C58,
|
|
154
|
+
-C44, C6, -C58,
|
|
155
|
+
C6, C44, -C58,
|
|
156
|
+
-C6, -C44, -C58,
|
|
157
|
+
C42, C8, C58,
|
|
158
|
+
-C42, -C8, C58,
|
|
159
|
+
C8, -C42, C58,
|
|
160
|
+
-C8, C42, C58,
|
|
161
|
+
C9, -C57, -C43,
|
|
162
|
+
-C9, C57, -C43,
|
|
163
|
+
C57, C9, -C43,
|
|
164
|
+
-C57, -C9, -C43,
|
|
165
|
+
C34, -C56, C37,
|
|
166
|
+
-C34, C56, C37,
|
|
167
|
+
C56, C34, C37,
|
|
168
|
+
-C56, -C34, C37,
|
|
169
|
+
C55, C39, -C32,
|
|
170
|
+
-C55, -C39, -C32,
|
|
171
|
+
C39, -C55, -C32,
|
|
172
|
+
-C39, C55, -C32,
|
|
173
|
+
C54, C47, C7,
|
|
174
|
+
-C54, -C47, C7,
|
|
175
|
+
C47, -C54, C7,
|
|
176
|
+
-C47, C54, C7,
|
|
177
|
+
C53, -C41, -C22,
|
|
178
|
+
-C53, C41, -C22,
|
|
179
|
+
C41, C53, -C22,
|
|
180
|
+
-C41, -C53, -C22,
|
|
181
|
+
C20, C52, C45,
|
|
182
|
+
-C20, -C52, C45,
|
|
183
|
+
C52, -C20, C45,
|
|
184
|
+
-C52, C20, C45,
|
|
185
|
+
C46, -C21, -C51,
|
|
186
|
+
-C46, C21, -C51,
|
|
187
|
+
C21, C46, -C51,
|
|
188
|
+
-C21, -C46, -C51,
|
|
189
|
+
C42, C23, C51,
|
|
190
|
+
-C42, -C23, C51,
|
|
191
|
+
C23, -C42, C51,
|
|
192
|
+
-C23, C42, C51,
|
|
193
|
+
C24, -C50, -C45,
|
|
194
|
+
-C24, C50, -C45,
|
|
195
|
+
C50, C24, -C45,
|
|
196
|
+
-C50, -C24, -C45,
|
|
197
|
+
C49, C48, C22,
|
|
198
|
+
-C49, -C48, C22,
|
|
199
|
+
C48, -C49, C22,
|
|
200
|
+
-C48, C49, C22,
|
|
201
|
+
];
|
|
202
|
+
export const Faces = [
|
|
203
|
+
8, 0, 10, 34, 40, 44, 38, 14, 4,
|
|
204
|
+
8, 1, 11, 35, 41, 45, 39, 15, 5,
|
|
205
|
+
8, 2, 8, 33, 43, 47, 37, 12, 6,
|
|
206
|
+
8, 3, 9, 32, 42, 46, 36, 13, 7,
|
|
207
|
+
8, 16, 30, 19, 29, 17, 31, 18, 28,
|
|
208
|
+
8, 20, 26, 23, 25, 21, 27, 22, 24,
|
|
209
|
+
6, 52, 102, 60, 110, 84, 118,
|
|
210
|
+
6, 53, 103, 61, 111, 85, 119,
|
|
211
|
+
6, 54, 100, 62, 108, 86, 116,
|
|
212
|
+
6, 55, 101, 63, 109, 87, 117,
|
|
213
|
+
6, 56, 98, 88, 114, 64, 106,
|
|
214
|
+
6, 57, 99, 89, 115, 65, 107,
|
|
215
|
+
6, 58, 96, 90, 112, 66, 104,
|
|
216
|
+
6, 59, 97, 91, 113, 67, 105,
|
|
217
|
+
6, 0, 4, 52, 118, 94, 48,
|
|
218
|
+
6, 1, 5, 53, 119, 95, 49,
|
|
219
|
+
6, 2, 6, 54, 116, 92, 50,
|
|
220
|
+
6, 3, 7, 55, 117, 93, 51,
|
|
221
|
+
6, 8, 56, 106, 74, 81, 33,
|
|
222
|
+
6, 9, 57, 107, 75, 80, 32,
|
|
223
|
+
6, 10, 58, 104, 72, 82, 34,
|
|
224
|
+
6, 11, 59, 105, 73, 83, 35,
|
|
225
|
+
6, 12, 37, 85, 111, 79, 68,
|
|
226
|
+
6, 13, 36, 84, 110, 78, 69,
|
|
227
|
+
6, 14, 38, 86, 108, 76, 70,
|
|
228
|
+
6, 15, 39, 87, 109, 77, 71,
|
|
229
|
+
6, 16, 28, 64, 114, 82, 72,
|
|
230
|
+
6, 17, 29, 65, 115, 83, 73,
|
|
231
|
+
6, 18, 31, 67, 113, 81, 74,
|
|
232
|
+
6, 19, 30, 66, 112, 80, 75,
|
|
233
|
+
6, 20, 24, 60, 102, 70, 76,
|
|
234
|
+
6, 21, 25, 61, 103, 71, 77,
|
|
235
|
+
6, 22, 27, 63, 101, 69, 78,
|
|
236
|
+
6, 23, 26, 62, 100, 68, 79,
|
|
237
|
+
6, 40, 88, 98, 50, 92, 44,
|
|
238
|
+
6, 41, 89, 99, 51, 93, 45,
|
|
239
|
+
6, 42, 90, 96, 48, 94, 46,
|
|
240
|
+
6, 43, 91, 97, 49, 95, 47,
|
|
241
|
+
5, 0, 48, 96, 58, 10,
|
|
242
|
+
5, 1, 49, 97, 59, 11,
|
|
243
|
+
5, 2, 50, 98, 56, 8,
|
|
244
|
+
5, 3, 51, 99, 57, 9,
|
|
245
|
+
5, 4, 14, 70, 102, 52,
|
|
246
|
+
5, 5, 15, 71, 103, 53,
|
|
247
|
+
5, 6, 12, 68, 100, 54,
|
|
248
|
+
5, 7, 13, 69, 101, 55,
|
|
249
|
+
5, 16, 72, 104, 66, 30,
|
|
250
|
+
5, 17, 73, 105, 67, 31,
|
|
251
|
+
5, 18, 74, 106, 64, 28,
|
|
252
|
+
5, 19, 75, 107, 65, 29,
|
|
253
|
+
5, 20, 76, 108, 62, 26,
|
|
254
|
+
5, 21, 77, 109, 63, 27,
|
|
255
|
+
5, 22, 78, 110, 60, 24,
|
|
256
|
+
5, 23, 79, 111, 61, 25,
|
|
257
|
+
5, 32, 80, 112, 90, 42,
|
|
258
|
+
5, 33, 81, 113, 91, 43,
|
|
259
|
+
5, 34, 82, 114, 88, 40,
|
|
260
|
+
5, 35, 83, 115, 89, 41,
|
|
261
|
+
5, 36, 46, 94, 118, 84,
|
|
262
|
+
5, 37, 47, 95, 119, 85,
|
|
263
|
+
5, 38, 44, 92, 116, 86,
|
|
264
|
+
5, 39, 45, 93, 117, 87
|
|
265
|
+
];
|
|
266
|
+
export const VertexCount = 354;
|
|
267
|
+
//# sourceMappingURL=TruncatedSnubCube.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TruncatedSnubCube.js","sourceRoot":"","sources":["../../../../src/layers/grid3d/test_data/TruncatedSnubCube.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,sCAAsC;AACtC;;;EAGE;AAEF,MAAM,EAAE,GAAI,iCAAiC,CAAA;AAC7C,MAAM,EAAE,GAAI,iCAAiC,CAAA;AAC7C,MAAM,EAAE,GAAI,iCAAiC,CAAA;AAC7C,MAAM,EAAE,GAAI,iCAAiC,CAAA;AAC7C,MAAM,EAAE,GAAI,iCAAiC,CAAA;AAC7C,MAAM,EAAE,GAAI,iCAAiC,CAAA;AAC7C,MAAM,EAAE,GAAI,iCAAiC,CAAA;AAC7C,MAAM,EAAE,GAAI,kCAAkC,CAAA;AAC9C,MAAM,EAAE,GAAI,gCAAgC,CAAA;AAC5C,MAAM,EAAE,GAAI,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,iCAAiC,CAAA;AAC7C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,iCAAiC,CAAA;AAC7C,MAAM,GAAG,GAAG,iCAAiC,CAAA;AAC7C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,iCAAiC,CAAA;AAC7C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,iCAAiC,CAAA;AAC7C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,iCAAiC,CAAA;AAC7C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,iCAAiC,CAAA;AAC7C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,mCAAmC,CAAA;AAC/C,MAAM,GAAG,GAAG,gCAAgC,CAAA;AAC5C,MAAM,GAAG,GAAG,iCAAiC,CAAA;AAE7C,MAAM,CAAC,MAAM,MAAM,GAAG;IACtB,GAAG,EAAE,CAAC,GAAG,EAAG,CAAC,EAAE;IACf,CAAC,GAAG,EAAG,GAAG,EAAG,CAAC,EAAE;IAChB,GAAG,EAAG,GAAG,EAAG,CAAC,EAAE;IACf,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,CAAC,EAAE;IACf,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IACd,EAAE,EAAG,GAAG,EAAG,GAAG;IACf,CAAC,EAAE,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,CAAC,EAAE,EAAG,GAAG;IAChB,CAAC,GAAG,EAAI,EAAE,EAAG,GAAG;IACf,GAAG,EAAG,CAAC,EAAE,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAI,EAAE,EAAE,CAAC,GAAG;IACd,EAAE,EAAG,GAAG,EAAE,CAAC,GAAG;IACf,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAI,EAAE,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,CAAC,EAAE,EAAG,GAAG;IACd,EAAE,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,CAAC,EAAE,EAAG,GAAG,EAAG,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IACd,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,CAAC,EAAE,EAAG,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAI,EAAE,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,CAAC,EAAE,EAAE,CAAC,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAG,GAAG,EAAI,EAAE;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAI,EAAE;IACf,GAAG,EAAE,CAAC,GAAG,EAAI,EAAE;IAChB,CAAC,GAAG,EAAG,GAAG,EAAI,EAAE;IACf,GAAG,EAAE,CAAC,GAAG,EAAG,CAAC,EAAE;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,CAAC,EAAE;IACf,GAAG,EAAG,GAAG,EAAG,CAAC,EAAE;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,CAAC,EAAE;IACf,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IACd,EAAE,EAAG,GAAG,EAAG,GAAG;IACf,CAAC,EAAE,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,CAAC,EAAE,EAAG,GAAG;IAChB,CAAC,GAAG,EAAI,EAAE,EAAG,GAAG;IACf,GAAG,EAAG,CAAC,EAAE,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAI,EAAE,EAAE,CAAC,GAAG;IACd,EAAE,EAAG,GAAG,EAAE,CAAC,GAAG;IACf,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAI,EAAE,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,CAAC,EAAE,EAAG,GAAG;IACd,EAAE,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,CAAC,EAAE,EAAG,GAAG,EAAG,GAAG;IACd,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,CAAC,EAAE,EAAG,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAI,EAAE,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,CAAC,EAAE,EAAE,CAAC,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAG,GAAG,EAAI,EAAE;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAI,EAAE;IACf,GAAG,EAAE,CAAC,GAAG,EAAI,EAAE;IAChB,CAAC,GAAG,EAAG,GAAG,EAAI,EAAE;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAG,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAG,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAG,GAAG,EAAE,CAAC,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG;IACf,GAAG,EAAG,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IACf,GAAG,EAAE,CAAC,GAAG,EAAG,GAAG;IAChB,CAAC,GAAG,EAAG,GAAG,EAAG,GAAG;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;IACrB,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAI,CAAC;IACxC,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAI,CAAC;IACxC,CAAC,EAAG,CAAC,EAAI,CAAC,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAI,CAAC;IACxC,CAAC,EAAG,CAAC,EAAI,CAAC,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAI,CAAC;IACxC,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IACxC,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IACxC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG;IAC9B,CAAC,EAAE,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG;IAC9B,CAAC,EAAE,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG;IAC9B,CAAC,EAAE,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAE,GAAG;IAC9B,CAAC,EAAG,CAAC,EAAI,CAAC,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAG,CAAC,EAAI,CAAC,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAG,CAAC,EAAI,CAAC,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAG,CAAC,EAAI,CAAC,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAG,CAAC,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAG,CAAC,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IAC9B,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAI,CAAC;IACzB,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EAAG,EAAE,EAAI,CAAC;IACzB,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE;IACzB,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE;IACzB,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE;IACzB,CAAC,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE;IACzB,CAAC,EAAE,EAAE,EAAG,EAAE,EAAG,EAAE,EAAE,GAAG,EAAG,EAAE;CAAC,CAAA;AAE1B,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC"}
|
|
@@ -1,8 +1,73 @@
|
|
|
1
1
|
export function makeFullMesh(e) {
|
|
2
|
+
const get3DPoint = (points, index) => {
|
|
3
|
+
return points.slice(index * 3, (index + 1) * 3);
|
|
4
|
+
};
|
|
5
|
+
const substractPoints = (a, b) => {
|
|
6
|
+
return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
7
|
+
};
|
|
8
|
+
const crossProduct = (a, b) => {
|
|
9
|
+
return [
|
|
10
|
+
a[1] * b[2] - a[2] * b[1],
|
|
11
|
+
a[2] * b[0] - a[0] * b[2],
|
|
12
|
+
a[0] * b[1] - a[1] * b[0],
|
|
13
|
+
];
|
|
14
|
+
};
|
|
15
|
+
const dotProduct = (a, b) => {
|
|
16
|
+
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
|
|
17
|
+
};
|
|
18
|
+
const normalize = (a) => {
|
|
19
|
+
const len = Math.sqrt(dotProduct(a, a));
|
|
20
|
+
return [a[0] / len, a[1] / len, a[2] / len];
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Projects a 3D point to the coordinate system of the plane formed by two 3D orthogonal unit vectors u and v.
|
|
24
|
+
* @param u the first vector
|
|
25
|
+
* @param v the second vector
|
|
26
|
+
* @param p the point to be projected as [x, y, z] triplet.
|
|
27
|
+
* @returns projected point as [x, y] triplet.
|
|
28
|
+
*/
|
|
29
|
+
const projectPoint = (u, v, p) => {
|
|
30
|
+
const a = dotProduct(p, u);
|
|
31
|
+
const b = dotProduct(p, v);
|
|
32
|
+
return [a, b];
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Projects a polygon on the plane passing throught its points.
|
|
36
|
+
* Assumes the polygon to be flat, i.e. all the points lie on the same plane.
|
|
37
|
+
* @param points Polygon to be projected.
|
|
38
|
+
* @returns Projected polygon in the 2D coordinate system of the plane.
|
|
39
|
+
*/
|
|
40
|
+
const projectPolygon = (points) => {
|
|
41
|
+
const p0 = get3DPoint(points, 0);
|
|
42
|
+
const p1 = get3DPoint(points, 1);
|
|
43
|
+
const p2 = get3DPoint(points, 2);
|
|
44
|
+
const v1 = substractPoints(p1, p0);
|
|
45
|
+
const v2 = substractPoints(p2, p0);
|
|
46
|
+
const normal = normalize(crossProduct(v1, v2));
|
|
47
|
+
const u = normalize(v1);
|
|
48
|
+
const v = normalize(crossProduct(normal, u));
|
|
49
|
+
const res = [];
|
|
50
|
+
const count = points.length / 3;
|
|
51
|
+
for (let i = 0; i < count; ++i) {
|
|
52
|
+
const p = get3DPoint(points, i);
|
|
53
|
+
const fp = projectPoint(u, v, p);
|
|
54
|
+
res.push(...fp);
|
|
55
|
+
}
|
|
56
|
+
return res;
|
|
57
|
+
};
|
|
58
|
+
const getLineSegment = (index0, index1, out) => {
|
|
59
|
+
const i1 = polys[index0];
|
|
60
|
+
const i2 = polys[index1];
|
|
61
|
+
const p1 = get3DPoint(params.points, i1);
|
|
62
|
+
const p2 = get3DPoint(params.points, i2);
|
|
63
|
+
p1[2] *= z_sign;
|
|
64
|
+
p2[2] *= z_sign;
|
|
65
|
+
out.push(...p1);
|
|
66
|
+
out.push(...p2);
|
|
67
|
+
};
|
|
2
68
|
// Keep
|
|
3
69
|
const t0 = performance.now();
|
|
4
70
|
const params = e.data;
|
|
5
|
-
const points = params.points;
|
|
6
71
|
const polys = params.polys;
|
|
7
72
|
const properties = params.properties;
|
|
8
73
|
const isZIncreasingDownwards = params.isZIncreasingDownwards;
|
|
@@ -14,8 +79,9 @@ export function makeFullMesh(e) {
|
|
|
14
79
|
let propertyValueRangeMax = -99999999;
|
|
15
80
|
const z_sign = isZIncreasingDownwards ? -1 : 1;
|
|
16
81
|
let pn = 0;
|
|
17
|
-
let indice = 0;
|
|
18
82
|
let i = 0;
|
|
83
|
+
let vertexIndex = 0;
|
|
84
|
+
const triangFunc = Function(params.triangulateParamName, params.triangulateFunc);
|
|
19
85
|
while (i < polys.length) {
|
|
20
86
|
const n = polys[i];
|
|
21
87
|
const propertyValue = properties[pn++];
|
|
@@ -31,78 +97,27 @@ export function makeFullMesh(e) {
|
|
|
31
97
|
: propertyValueRangeMax;
|
|
32
98
|
}
|
|
33
99
|
// Lines.
|
|
34
|
-
for (let j = i + 1; j < i + n; j
|
|
35
|
-
|
|
36
|
-
const i2 = polys[j + 1];
|
|
37
|
-
const x0 = points[3 * i1 + 0];
|
|
38
|
-
const y0 = points[3 * i1 + 1];
|
|
39
|
-
const z0 = points[3 * i1 + 2] * z_sign;
|
|
40
|
-
const x1 = points[3 * i2 + 0];
|
|
41
|
-
const y1 = points[3 * i2 + 1];
|
|
42
|
-
const z1 = points[3 * i2 + 2] * z_sign;
|
|
43
|
-
line_positions.push(x0, y0, z0);
|
|
44
|
-
line_positions.push(x1, y1, z1);
|
|
100
|
+
for (let j = i + 1; j < i + n; ++j) {
|
|
101
|
+
getLineSegment(j, j + 1, line_positions);
|
|
45
102
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const x2 = points[3 * i2 + 0];
|
|
56
|
-
const y2 = points[3 * i2 + 1];
|
|
57
|
-
const z2 = points[3 * i2 + 2] * z_sign;
|
|
58
|
-
const x3 = points[3 * i3 + 0];
|
|
59
|
-
const y3 = points[3 * i3 + 1];
|
|
60
|
-
const z3 = points[3 * i3 + 2] * z_sign;
|
|
61
|
-
const x4 = points[3 * i4 + 0];
|
|
62
|
-
const y4 = points[3 * i4 + 1];
|
|
63
|
-
const z4 = points[3 * i4 + 2] * z_sign;
|
|
64
|
-
// t1
|
|
65
|
-
indices.push(indice++, indice++, indice++);
|
|
66
|
-
positions.push(x1, y1, z1);
|
|
67
|
-
positions.push(x2, y2, z2);
|
|
68
|
-
positions.push(x3, y3, z3);
|
|
69
|
-
vertexProperties.push(propertyValue);
|
|
70
|
-
vertexProperties.push(propertyValue);
|
|
71
|
-
vertexProperties.push(propertyValue);
|
|
72
|
-
// t2
|
|
73
|
-
indices.push(indice++, indice++, indice++);
|
|
74
|
-
positions.push(x1, y1, z1);
|
|
75
|
-
positions.push(x3, y3, z3);
|
|
76
|
-
positions.push(x4, y4, z4);
|
|
77
|
-
vertexProperties.push(propertyValue);
|
|
78
|
-
vertexProperties.push(propertyValue);
|
|
79
|
-
vertexProperties.push(propertyValue);
|
|
103
|
+
getLineSegment(i + 1, i + n, line_positions);
|
|
104
|
+
const polygon = [];
|
|
105
|
+
const vertexIndices = [];
|
|
106
|
+
for (let p = 1; p <= n; ++p) {
|
|
107
|
+
const i0 = polys[i + p];
|
|
108
|
+
const point = get3DPoint(params.points, i0);
|
|
109
|
+
point[2] *= z_sign;
|
|
110
|
+
vertexIndices.push(i0);
|
|
111
|
+
polygon.push(...point);
|
|
80
112
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const y1 = points[3 * i1 + 1];
|
|
88
|
-
const z1 = points[3 * i1 + 2] * z_sign;
|
|
89
|
-
const x2 = points[3 * i2 + 0];
|
|
90
|
-
const y2 = points[3 * i2 + 1];
|
|
91
|
-
const z2 = points[3 * i2 + 2] * z_sign;
|
|
92
|
-
const x3 = points[3 * i3 + 0];
|
|
93
|
-
const y3 = points[3 * i3 + 1];
|
|
94
|
-
const z3 = points[3 * i3 + 2] * z_sign;
|
|
95
|
-
// t1
|
|
96
|
-
indices.push(indice++, indice++, indice++);
|
|
97
|
-
positions.push(x1, y1, z1);
|
|
98
|
-
positions.push(x2, y2, z2);
|
|
99
|
-
positions.push(x3, y3, z3);
|
|
100
|
-
vertexProperties.push(propertyValue);
|
|
113
|
+
// As the triangulation algorythm works in 2D space
|
|
114
|
+
// the polygon should be projected on the plane passing through its points.
|
|
115
|
+
const flatPoly = projectPolygon(polygon);
|
|
116
|
+
const triangles = triangFunc(flatPoly);
|
|
117
|
+
for (const t of triangles) {
|
|
118
|
+
positions.push(...get3DPoint(polygon, t));
|
|
101
119
|
vertexProperties.push(propertyValue);
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
console.error("Only triangles or four corners are expected.");
|
|
120
|
+
indices.push(vertexIndex++);
|
|
106
121
|
}
|
|
107
122
|
i = i + n + 1;
|
|
108
123
|
}
|