@equinor/esv-intersection 3.0.8 → 3.0.10
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/components/axis.d.ts +1 -2
- package/dist/components/axis.d.ts.map +1 -1
- package/dist/control/ExtendedCurveInterpolator.d.ts.map +1 -1
- package/dist/control/IntersectionReferenceSystem.d.ts +2 -6
- package/dist/control/IntersectionReferenceSystem.d.ts.map +1 -1
- package/dist/control/LayerManager.d.ts +2 -2
- package/dist/control/LayerManager.d.ts.map +1 -1
- package/dist/control/MainController.d.ts +3 -3
- package/dist/control/MainController.d.ts.map +1 -1
- package/dist/control/ZoomPanHandler.d.ts +5 -4
- package/dist/control/ZoomPanHandler.d.ts.map +1 -1
- package/dist/control/interfaces.d.ts +3 -4
- package/dist/control/interfaces.d.ts.map +1 -1
- package/dist/control/overlay.d.ts +3 -3
- package/dist/control/overlay.d.ts.map +1 -1
- package/dist/datautils/colortable.d.ts +1 -1
- package/dist/datautils/colortable.d.ts.map +1 -1
- package/dist/datautils/findsample.d.ts.map +1 -1
- package/dist/datautils/schematicShapeGenerator.d.ts +3 -3
- package/dist/datautils/schematicShapeGenerator.d.ts.map +1 -1
- package/dist/datautils/seismicimage.d.ts.map +1 -1
- package/dist/datautils/trajectory.d.ts +1 -1
- package/dist/datautils/trajectory.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1373 -1272
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/dist/interfaces.d.ts +1 -2
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/layers/CalloutCanvasLayer.d.ts +2 -2
- package/dist/layers/CalloutCanvasLayer.d.ts.map +1 -1
- package/dist/layers/CustomDisplayObjects/ComplexRopeGeometry.d.ts.map +1 -1
- package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts.map +1 -1
- package/dist/layers/GeomodelCanvasLayer.d.ts +1 -1
- package/dist/layers/GeomodelCanvasLayer.d.ts.map +1 -1
- package/dist/layers/GeomodelLabelsLayer.d.ts +4 -4
- package/dist/layers/GeomodelLabelsLayer.d.ts.map +1 -1
- package/dist/layers/GeomodelLayerV2.d.ts.map +1 -1
- package/dist/layers/GridLayer.d.ts.map +1 -1
- package/dist/layers/ImageCanvasLayer.d.ts +1 -1
- package/dist/layers/ImageCanvasLayer.d.ts.map +1 -1
- package/dist/layers/ReferenceLineLayer.d.ts +1 -2
- package/dist/layers/ReferenceLineLayer.d.ts.map +1 -1
- package/dist/layers/SchematicLayer.d.ts.map +1 -1
- package/dist/layers/WellborePathLayer.d.ts +1 -1
- package/dist/layers/WellborePathLayer.d.ts.map +1 -1
- package/dist/layers/base/CanvasLayer.d.ts +3 -3
- package/dist/layers/base/CanvasLayer.d.ts.map +1 -1
- package/dist/layers/base/HTMLLayer.d.ts +1 -1
- package/dist/layers/base/HTMLLayer.d.ts.map +1 -1
- package/dist/layers/base/Layer.d.ts +10 -10
- package/dist/layers/base/Layer.d.ts.map +1 -1
- package/dist/layers/base/PixiLayer.d.ts +4 -4
- package/dist/layers/base/PixiLayer.d.ts.map +1 -1
- package/dist/layers/base/SVGLayer.d.ts +1 -1
- package/dist/layers/base/SVGLayer.d.ts.map +1 -1
- package/dist/utils/arc-length.d.ts.map +1 -1
- package/dist/utils/color.d.ts.map +1 -1
- package/dist/utils/root-finder.d.ts +1 -1
- package/dist/utils/root-finder.d.ts.map +1 -1
- package/dist/utils/text.d.ts +2 -2
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/vectorUtils.d.ts.map +1 -1
- package/dist/vendor/pixi-dashed-line/index.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/components/axis.ts +23 -30
- package/src/control/ExtendedCurveInterpolator.ts +7 -7
- package/src/control/IntersectionReferenceSystem.ts +33 -41
- package/src/control/LayerManager.ts +33 -31
- package/src/control/MainController.ts +5 -7
- package/src/control/ZoomPanHandler.ts +50 -45
- package/src/control/interfaces.ts +3 -3
- package/src/control/overlay.ts +20 -16
- package/src/datautils/colortable.ts +4 -4
- package/src/datautils/findsample.ts +8 -7
- package/src/datautils/picks.ts +13 -13
- package/src/datautils/schematicShapeGenerator.ts +47 -17
- package/src/datautils/seismicimage.ts +12 -13
- package/src/datautils/surfacedata.ts +27 -26
- package/src/datautils/trajectory.ts +34 -32
- package/src/interfaces.ts +1 -1
- package/src/layers/CalloutCanvasLayer.ts +55 -58
- package/src/layers/CustomDisplayObjects/ComplexRopeGeometry.ts +23 -20
- package/src/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.ts +9 -10
- package/src/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.ts +13 -13
- package/src/layers/GeomodelCanvasLayer.ts +43 -36
- package/src/layers/GeomodelLabelsLayer.ts +99 -96
- package/src/layers/GeomodelLayerV2.ts +11 -11
- package/src/layers/GridLayer.ts +25 -21
- package/src/layers/ImageCanvasLayer.ts +17 -11
- package/src/layers/ReferenceLineLayer.ts +53 -45
- package/src/layers/SchematicLayer.ts +78 -75
- package/src/layers/WellborePathLayer.ts +48 -46
- package/src/layers/base/CanvasLayer.ts +18 -18
- package/src/layers/base/HTMLLayer.ts +5 -5
- package/src/layers/base/Layer.ts +18 -18
- package/src/layers/base/PixiLayer.ts +24 -20
- package/src/layers/base/SVGLayer.ts +5 -5
- package/src/utils/arc-length.ts +3 -10
- package/src/utils/binary-search.ts +2 -2
- package/src/utils/color.ts +9 -5
- package/src/utils/root-finder.ts +4 -4
- package/src/utils/text.ts +5 -5
- package/src/utils/vectorUtils.ts +13 -6
- package/src/vendor/pixi-dashed-line/index.ts +3 -2
|
@@ -28,7 +28,7 @@ export class ComplexRopeGeometry extends MeshGeometry {
|
|
|
28
28
|
* @readonly
|
|
29
29
|
*/
|
|
30
30
|
get width(): number {
|
|
31
|
-
return max(this.segments, (segment) => segment.diameter)
|
|
31
|
+
return max(this.segments, (segment) => segment.diameter)!;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/** Refreshes Rope indices and uvs */
|
|
@@ -66,7 +66,7 @@ export class ComplexRopeGeometry extends MeshGeometry {
|
|
|
66
66
|
uvs[3] = 1;
|
|
67
67
|
|
|
68
68
|
const segmentCount = segments.length;
|
|
69
|
-
const maxDiameter = max(segments, (segment) => segment.diameter)
|
|
69
|
+
const maxDiameter = max(segments, (segment) => segment.diameter)!;
|
|
70
70
|
|
|
71
71
|
let amount = 0;
|
|
72
72
|
let uvIndex = 0;
|
|
@@ -74,21 +74,21 @@ export class ComplexRopeGeometry extends MeshGeometry {
|
|
|
74
74
|
let indexCount = 0;
|
|
75
75
|
|
|
76
76
|
for (let i = 0; i < segmentCount; i++) {
|
|
77
|
-
let prev = segments[i]
|
|
77
|
+
let prev = segments[i]?.points[0]!;
|
|
78
78
|
const textureWidth = maxDiameter;
|
|
79
|
-
const radius = segments[i]
|
|
79
|
+
const radius = segments[i]?.diameter! / maxDiameter / 2;
|
|
80
80
|
|
|
81
|
-
const total = segments[i]
|
|
81
|
+
const total = segments[i]?.points.length!; // - 1;
|
|
82
82
|
|
|
83
83
|
for (let j = 0; j < total; j++) {
|
|
84
84
|
// time to do some smart drawing!
|
|
85
85
|
|
|
86
86
|
// calculate pixel distance from previous point
|
|
87
|
-
const dx = prev.x - segments[i]
|
|
88
|
-
const dy = prev.y - segments[i]
|
|
87
|
+
const dx = prev.x - segments[i]?.points[j]?.x!;
|
|
88
|
+
const dy = prev.y - segments[i]?.points[j]?.y!;
|
|
89
89
|
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
90
90
|
|
|
91
|
-
prev = segments[i]
|
|
91
|
+
prev = segments[i]?.points[j]!;
|
|
92
92
|
amount += distance / textureWidth;
|
|
93
93
|
|
|
94
94
|
uvs[uvIndex] = amount;
|
|
@@ -131,20 +131,20 @@ export class ComplexRopeGeometry extends MeshGeometry {
|
|
|
131
131
|
const segmentCount = segments.length;
|
|
132
132
|
let lastIndex = 0;
|
|
133
133
|
for (let i = 0; i < segmentCount; i++) {
|
|
134
|
-
let lastPoint = segments[i]
|
|
134
|
+
let lastPoint = segments[i]?.points[0]!;
|
|
135
135
|
let nextPoint;
|
|
136
136
|
let perpX = 0;
|
|
137
137
|
let perpY = 0;
|
|
138
138
|
|
|
139
|
-
const vertices = this.buffers[0]
|
|
140
|
-
const total = segments[i]
|
|
139
|
+
const vertices = this.buffers[0]?.data;
|
|
140
|
+
const total = segments[i]?.points.length!;
|
|
141
141
|
let index = 0;
|
|
142
142
|
for (let j = 0; j < total; j++) {
|
|
143
|
-
const point = segments[i]
|
|
143
|
+
const point = segments[i]?.points[j]!;
|
|
144
144
|
index = lastIndex + j * 4;
|
|
145
145
|
|
|
146
|
-
if (j < segments[i]
|
|
147
|
-
nextPoint = segments[i]
|
|
146
|
+
if (j < segments[i]?.points.length! - 1) {
|
|
147
|
+
nextPoint = segments[i]?.points[j + 1]!;
|
|
148
148
|
} else {
|
|
149
149
|
nextPoint = point;
|
|
150
150
|
}
|
|
@@ -153,7 +153,7 @@ export class ComplexRopeGeometry extends MeshGeometry {
|
|
|
153
153
|
perpX = nextPoint.y - lastPoint.y;
|
|
154
154
|
|
|
155
155
|
const perpLength = Math.sqrt(perpX * perpX + perpY * perpY);
|
|
156
|
-
const num = segments[i]
|
|
156
|
+
const num = segments[i]?.diameter! / 2;
|
|
157
157
|
|
|
158
158
|
perpX /= perpLength;
|
|
159
159
|
perpY /= perpLength;
|
|
@@ -161,16 +161,19 @@ export class ComplexRopeGeometry extends MeshGeometry {
|
|
|
161
161
|
perpX *= num;
|
|
162
162
|
perpY *= num;
|
|
163
163
|
|
|
164
|
-
vertices
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
164
|
+
if (vertices != null) {
|
|
165
|
+
vertices[index] = point.x + perpX;
|
|
166
|
+
vertices[index + 1] = point.y + perpY;
|
|
167
|
+
vertices[index + 2] = point.x - perpX;
|
|
168
|
+
vertices[index + 3] = point.y - perpY;
|
|
169
|
+
}
|
|
170
|
+
|
|
168
171
|
lastPoint = point;
|
|
169
172
|
}
|
|
170
173
|
lastIndex = index + 4;
|
|
171
174
|
}
|
|
172
175
|
|
|
173
|
-
this.buffers[0]
|
|
176
|
+
this.buffers[0]?.update();
|
|
174
177
|
}
|
|
175
178
|
|
|
176
179
|
public update(): void {
|
|
@@ -8,7 +8,6 @@ export class FixedWidthSimpleRopeGeometry extends MeshGeometry {
|
|
|
8
8
|
* @param {PIXI.Point[]} [points] - An array of PIXI.Point objects to construct this rope.
|
|
9
9
|
*/
|
|
10
10
|
constructor(points: IPoint[], width = 200) {
|
|
11
|
-
// eslint-disable-next-line no-magic-numbers
|
|
12
11
|
super(new Float32Array(points.length * 4), new Float32Array(points.length * 4), new Uint16Array((points.length - 1) * 6));
|
|
13
12
|
/**
|
|
14
13
|
* An array of points that determine the rope
|
|
@@ -66,17 +65,17 @@ export class FixedWidthSimpleRopeGeometry extends MeshGeometry {
|
|
|
66
65
|
uvs[2] = 0;
|
|
67
66
|
uvs[3] = 1;
|
|
68
67
|
let amount = 0;
|
|
69
|
-
let prev = points[0]
|
|
68
|
+
let prev = points[0]!;
|
|
70
69
|
const total = points.length; // - 1;
|
|
71
70
|
for (let i = 0; i < total; i++) {
|
|
72
71
|
// time to do some smart drawing!
|
|
73
72
|
const index = i * 4;
|
|
74
73
|
|
|
75
74
|
// calculate pixel distance from previous point
|
|
76
|
-
const dx = prev.x - points[i]
|
|
77
|
-
const dy = prev.y - points[i]
|
|
75
|
+
const dx = prev.x - points[i]?.x!;
|
|
76
|
+
const dy = prev.y - points[i]?.y!;
|
|
78
77
|
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
79
|
-
prev = points[i]
|
|
78
|
+
prev = points[i]!;
|
|
80
79
|
amount += distance / this._width;
|
|
81
80
|
|
|
82
81
|
uvs[index] = amount;
|
|
@@ -107,17 +106,17 @@ export class FixedWidthSimpleRopeGeometry extends MeshGeometry {
|
|
|
107
106
|
if (points.length < 1) {
|
|
108
107
|
return;
|
|
109
108
|
}
|
|
110
|
-
let lastPoint = points[0]
|
|
109
|
+
let lastPoint = points[0]!;
|
|
111
110
|
let nextPoint;
|
|
112
111
|
let perpX = 0;
|
|
113
112
|
let perpY = 0;
|
|
114
|
-
const vertices = this.buffers[0]
|
|
113
|
+
const vertices = this.buffers[0]?.data!;
|
|
115
114
|
const total = points.length;
|
|
116
115
|
for (let i = 0; i < total; i++) {
|
|
117
|
-
const point = points[i]
|
|
116
|
+
const point = points[i]!;
|
|
118
117
|
const index = i * 4;
|
|
119
118
|
if (i < points.length - 1) {
|
|
120
|
-
nextPoint = points[i + 1]
|
|
119
|
+
nextPoint = points[i + 1]!;
|
|
121
120
|
} else {
|
|
122
121
|
nextPoint = point;
|
|
123
122
|
}
|
|
@@ -140,7 +139,7 @@ export class FixedWidthSimpleRopeGeometry extends MeshGeometry {
|
|
|
140
139
|
vertices[index + 3] = point.y - perpY;
|
|
141
140
|
lastPoint = point;
|
|
142
141
|
}
|
|
143
|
-
this.buffers[0]
|
|
142
|
+
this.buffers[0]?.update();
|
|
144
143
|
}
|
|
145
144
|
|
|
146
145
|
public update(): void {
|
|
@@ -55,14 +55,14 @@ export class UniformTextureStretchRopeGeometry extends MeshGeometry {
|
|
|
55
55
|
const total = points.length; // - 1;
|
|
56
56
|
|
|
57
57
|
let totalLength = 0;
|
|
58
|
-
let prevPoint = points[0]
|
|
58
|
+
let prevPoint = points[0]!;
|
|
59
59
|
|
|
60
60
|
for (let i = 0; i < total; i++) {
|
|
61
|
-
const dx = prevPoint.x - points[i]
|
|
62
|
-
const dy = prevPoint.y - points[i]
|
|
61
|
+
const dx = prevPoint.x - points[i]?.x!;
|
|
62
|
+
const dy = prevPoint.y - points[i]?.y!;
|
|
63
63
|
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
64
64
|
|
|
65
|
-
prevPoint = points[i]
|
|
65
|
+
prevPoint = points[i]!;
|
|
66
66
|
totalLength += distance;
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -75,18 +75,18 @@ export class UniformTextureStretchRopeGeometry extends MeshGeometry {
|
|
|
75
75
|
uvs[3] = 1;
|
|
76
76
|
|
|
77
77
|
let amount = 0;
|
|
78
|
-
let prev = points[0]
|
|
78
|
+
let prev = points[0]!;
|
|
79
79
|
|
|
80
80
|
for (let i = 0; i < total; i++) {
|
|
81
81
|
// time to do some smart drawing!
|
|
82
82
|
const index = i * 4;
|
|
83
83
|
|
|
84
84
|
// calculate pixel distance from previous point
|
|
85
|
-
const dx = prev.x - points[i]
|
|
86
|
-
const dy = prev.y - points[i]
|
|
85
|
+
const dx = prev.x - points[i]?.x!;
|
|
86
|
+
const dy = prev.y - points[i]?.y!;
|
|
87
87
|
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
88
88
|
|
|
89
|
-
prev = points[i]
|
|
89
|
+
prev = points[i]!;
|
|
90
90
|
|
|
91
91
|
// strech texture on distance/length instead of point/points.length to get a more correct strech
|
|
92
92
|
amount += distance / totalLength;
|
|
@@ -127,20 +127,20 @@ export class UniformTextureStretchRopeGeometry extends MeshGeometry {
|
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
let lastPoint = points[0]
|
|
130
|
+
let lastPoint = points[0]!;
|
|
131
131
|
let nextPoint;
|
|
132
132
|
let perpX = 0;
|
|
133
133
|
let perpY = 0;
|
|
134
134
|
|
|
135
|
-
const vertices = this.buffers[0]
|
|
135
|
+
const vertices = this.buffers[0]?.data!;
|
|
136
136
|
const total = points.length;
|
|
137
137
|
|
|
138
138
|
for (let i = 0; i < total; i++) {
|
|
139
|
-
const point = points[i]
|
|
139
|
+
const point = points[i]!;
|
|
140
140
|
const index = i * 4;
|
|
141
141
|
|
|
142
142
|
if (i < points.length - 1) {
|
|
143
|
-
nextPoint = points[i + 1]
|
|
143
|
+
nextPoint = points[i + 1]!;
|
|
144
144
|
} else {
|
|
145
145
|
nextPoint = point;
|
|
146
146
|
}
|
|
@@ -165,7 +165,7 @@ export class UniformTextureStretchRopeGeometry extends MeshGeometry {
|
|
|
165
165
|
lastPoint = point;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
this.buffers[0]
|
|
168
|
+
this.buffers[0]?.update();
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
public update(): void {
|
|
@@ -12,7 +12,7 @@ type SurfacePaths = {
|
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
export class GeomodelCanvasLayer<T extends SurfaceData> extends CanvasLayer<T> {
|
|
15
|
-
rescaleEvent: OnRescaleEvent;
|
|
15
|
+
rescaleEvent: OnRescaleEvent | undefined;
|
|
16
16
|
|
|
17
17
|
surfaceAreasPaths: SurfacePaths[] = [];
|
|
18
18
|
|
|
@@ -69,65 +69,72 @@ export class GeomodelCanvasLayer<T extends SurfaceData> extends CanvasLayer<T> {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
generateSurfaceAreasPaths(): void {
|
|
72
|
-
this.surfaceAreasPaths =
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
72
|
+
this.surfaceAreasPaths =
|
|
73
|
+
this.data?.areas.reduce((acc: SurfacePaths[], s: SurfaceArea) => {
|
|
74
|
+
const polygons = this.createPolygons(s.data);
|
|
75
|
+
const mapped: SurfacePaths[] = polygons.map((polygon: number[]) => ({
|
|
76
|
+
color: this.colorToCSSColor(s.color),
|
|
77
|
+
path: this.generatePolygonPath(polygon),
|
|
78
|
+
}));
|
|
79
|
+
acc.push(...mapped);
|
|
80
|
+
return acc;
|
|
81
|
+
}, []) ?? [];
|
|
81
82
|
}
|
|
82
83
|
|
|
83
84
|
generateSurfaceLinesPaths(): void {
|
|
84
|
-
this.surfaceLinesPaths =
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
this.surfaceLinesPaths =
|
|
86
|
+
this.data?.lines.reduce((acc: SurfacePaths[], l: SurfaceLine) => {
|
|
87
|
+
const lines = this.generateLinePaths(l);
|
|
88
|
+
const mapped: SurfacePaths[] = lines.map((path: Path2D) => ({ color: this.colorToCSSColor(l.color), path }));
|
|
89
|
+
acc.push(...mapped);
|
|
90
|
+
return acc;
|
|
91
|
+
}, []) ?? [];
|
|
90
92
|
}
|
|
91
93
|
|
|
92
94
|
drawPolygonPath = (color: string, path: Path2D): void => {
|
|
93
95
|
const { ctx } = this;
|
|
94
|
-
ctx
|
|
95
|
-
|
|
96
|
+
if (ctx != null) {
|
|
97
|
+
ctx.fillStyle = color;
|
|
98
|
+
ctx.fill(path);
|
|
99
|
+
}
|
|
96
100
|
};
|
|
97
101
|
|
|
98
102
|
drawLinePath = (color: string, path: Path2D): void => {
|
|
99
103
|
const { ctx } = this;
|
|
100
|
-
|
|
101
|
-
ctx
|
|
104
|
+
|
|
105
|
+
if (ctx != null) {
|
|
106
|
+
ctx.strokeStyle = color;
|
|
107
|
+
ctx.stroke(path);
|
|
108
|
+
}
|
|
102
109
|
};
|
|
103
110
|
|
|
104
111
|
createPolygons = (data: number[][]): number[][] => {
|
|
105
112
|
const polygons: number[][] = [];
|
|
106
|
-
let polygon: number[] =
|
|
113
|
+
let polygon: number[] = [];
|
|
107
114
|
|
|
108
115
|
// Start generating polygons
|
|
109
116
|
for (let i = 0; i < data.length; i++) {
|
|
110
117
|
// Generate top of polygon as long as we have valid values
|
|
111
|
-
const topIsValid = !!data[i][1];
|
|
118
|
+
const topIsValid = !!data[i]?.[1];
|
|
112
119
|
if (topIsValid) {
|
|
113
120
|
if (polygon === null) {
|
|
114
121
|
polygon = [];
|
|
115
122
|
}
|
|
116
|
-
polygon.push(data[i][0]
|
|
123
|
+
polygon.push(data[i]?.[0]!, data[i]?.[1]!);
|
|
117
124
|
}
|
|
118
125
|
|
|
119
126
|
const endIsReached = i === data.length - 1;
|
|
120
127
|
if (!topIsValid || endIsReached) {
|
|
121
|
-
if (polygon) {
|
|
128
|
+
if (polygon.length > 0) {
|
|
122
129
|
// Generate bottom of polygon
|
|
123
130
|
for (let j: number = !topIsValid ? i - 1 : i; j >= 0; j--) {
|
|
124
|
-
if (!data[j][1]) {
|
|
131
|
+
if (!data[j]?.[1]) {
|
|
125
132
|
break;
|
|
126
133
|
}
|
|
127
|
-
polygon.push(data[j][0]
|
|
134
|
+
polygon.push(data[j]?.[0]!, data[j]?.[2] || this.maxDepth);
|
|
128
135
|
}
|
|
129
136
|
polygons.push(polygon);
|
|
130
|
-
polygon =
|
|
137
|
+
polygon = [];
|
|
131
138
|
}
|
|
132
139
|
}
|
|
133
140
|
}
|
|
@@ -138,9 +145,9 @@ export class GeomodelCanvasLayer<T extends SurfaceData> extends CanvasLayer<T> {
|
|
|
138
145
|
generatePolygonPath = (polygon: number[]): Path2D => {
|
|
139
146
|
const path = new Path2D();
|
|
140
147
|
|
|
141
|
-
path.moveTo(polygon[0]
|
|
148
|
+
path.moveTo(polygon[0]!, polygon[1]!);
|
|
142
149
|
for (let i = 2; i < polygon.length; i += 2) {
|
|
143
|
-
path.lineTo(polygon[i]
|
|
150
|
+
path.lineTo(polygon[i]!, polygon[i + 1]!);
|
|
144
151
|
}
|
|
145
152
|
path.closePath();
|
|
146
153
|
|
|
@@ -152,22 +159,22 @@ export class GeomodelCanvasLayer<T extends SurfaceData> extends CanvasLayer<T> {
|
|
|
152
159
|
const { data: d } = s;
|
|
153
160
|
|
|
154
161
|
let penDown = false;
|
|
155
|
-
let path
|
|
162
|
+
let path: Path2D | undefined;
|
|
156
163
|
for (let i = 0; i < d.length; i++) {
|
|
157
|
-
if (d[i][1]) {
|
|
158
|
-
if (penDown) {
|
|
159
|
-
path.lineTo(d[i][0]
|
|
164
|
+
if (d[i]?.[1]) {
|
|
165
|
+
if (penDown && path) {
|
|
166
|
+
path.lineTo(d[i]?.[0]!, d[i]?.[1]!);
|
|
160
167
|
} else {
|
|
161
168
|
path = new Path2D();
|
|
162
|
-
path.moveTo(d[i][0]
|
|
169
|
+
path.moveTo(d[i]?.[0]!, d[i]?.[1]!);
|
|
163
170
|
penDown = true;
|
|
164
171
|
}
|
|
165
|
-
} else if (penDown) {
|
|
172
|
+
} else if (penDown && path) {
|
|
166
173
|
paths.push(path);
|
|
167
174
|
penDown = false;
|
|
168
175
|
}
|
|
169
176
|
}
|
|
170
|
-
if (penDown) {
|
|
177
|
+
if (penDown && path) {
|
|
171
178
|
paths.push(path);
|
|
172
179
|
}
|
|
173
180
|
|