@equinor/esv-intersection 3.0.0-beta.4 → 3.0.0-beta.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/README.md +0 -1
- package/dist/components/axis.d.ts +1 -1
- package/dist/control/ZoomPanHandler.d.ts +1 -1
- package/dist/datautils/picks.d.ts +6 -6
- package/dist/datautils/schematicShapeGenerator.d.ts +7 -8
- package/dist/datautils/seismicimage.d.ts +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.umd.js +1 -272
- package/dist/interfaces.d.ts +1 -1
- package/dist/layers/CalloutCanvasLayer.d.ts +2 -2
- package/dist/layers/CustomDisplayObjects/ComplexRope.d.ts +1 -1
- package/dist/layers/GeomodelCanvasLayer.d.ts +1 -1
- package/dist/layers/ImageCanvasLayer.d.ts +1 -1
- package/dist/layers/ReferenceLineLayer.d.ts +29 -0
- package/dist/layers/SchematicLayer.d.ts +10 -1
- package/dist/layers/SeismicCanvasLayer.d.ts +2 -3
- package/dist/layers/index.d.ts +1 -0
- package/dist/layers/schematicInterfaces.d.ts +13 -12
- package/dist/utils/arc-length.d.ts +1 -1
- package/dist/utils/root-finder.d.ts +1 -1
- package/package.json +38 -33
- package/src/components/axis.ts +247 -0
- package/src/components/index.ts +1 -0
- package/src/constants.ts +17 -0
- package/src/control/ExtendedCurveInterpolator.ts +155 -0
- package/src/control/IntersectionReferenceSystem.ts +391 -0
- package/src/control/LayerManager.ts +294 -0
- package/src/control/MainController.ts +296 -0
- package/src/control/ZoomPanHandler.ts +436 -0
- package/src/control/index.ts +5 -0
- package/src/control/interfaces.ts +42 -0
- package/src/control/overlay.ts +118 -0
- package/src/datautils/camelcase.ts +28 -0
- package/src/datautils/colortable.ts +14 -0
- package/src/datautils/findsample.ts +64 -0
- package/src/datautils/index.ts +6 -0
- package/src/datautils/interfaces.ts +68 -0
- package/src/datautils/picks.ts +328 -0
- package/src/datautils/schematicShapeGenerator.ts +1013 -0
- package/src/datautils/seismicimage.ts +180 -0
- package/src/datautils/surfacedata.ts +318 -0
- package/src/datautils/trajectory.ts +206 -0
- package/src/index.ts +6 -0
- package/src/interfaces.ts +99 -0
- package/src/layers/CalloutCanvasLayer.ts +338 -0
- package/src/layers/CustomDisplayObjects/ComplexRope.ts +45 -0
- package/src/layers/CustomDisplayObjects/ComplexRopeGeometry.ts +190 -0
- package/src/layers/CustomDisplayObjects/FixedWidthSimpleRope.ts +41 -0
- package/src/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.ts +149 -0
- package/src/layers/CustomDisplayObjects/UniformTextureStretchRope.ts +39 -0
- package/src/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.ts +174 -0
- package/src/layers/GeomodelCanvasLayer.ts +176 -0
- package/src/layers/GeomodelLabelsLayer.ts +619 -0
- package/src/layers/GeomodelLayerV2.ts +110 -0
- package/src/layers/GridLayer.ts +145 -0
- package/src/layers/ImageCanvasLayer.ts +55 -0
- package/src/layers/ReferenceLineLayer.ts +185 -0
- package/src/layers/SchematicLayer.ts +896 -0
- package/src/layers/SeismicCanvasLayer.ts +46 -0
- package/src/layers/WellborePathLayer.ts +129 -0
- package/src/layers/base/CanvasLayer.ts +102 -0
- package/src/layers/base/HTMLLayer.ts +70 -0
- package/src/layers/base/Layer.ts +217 -0
- package/src/layers/base/PixiLayer.ts +190 -0
- package/src/layers/base/SVGLayer.ts +63 -0
- package/src/layers/base/index.ts +5 -0
- package/src/layers/index.ts +16 -0
- package/src/layers/schematicInterfaces.ts +470 -0
- package/src/utils/arc-length.ts +66 -0
- package/src/utils/binary-search.ts +26 -0
- package/src/utils/color.ts +22 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/root-finder.ts +78 -0
- package/src/utils/text.ts +88 -0
- package/src/utils/vectorUtils.ts +67 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { clamp } from '@equinor/videx-math';
|
|
2
|
+
|
|
3
|
+
import { BoundingBox } from '../interfaces';
|
|
4
|
+
import { ScaleLinear } from 'd3-scale';
|
|
5
|
+
|
|
6
|
+
const DEFAULT_HORIZONTAL_PADDING = 4;
|
|
7
|
+
const DEFAULT_VERTICAL_PADDING = 2;
|
|
8
|
+
|
|
9
|
+
export function pixelsPerUnit(x: ScaleLinear<number, number>): number {
|
|
10
|
+
const [min] = x.domain();
|
|
11
|
+
return Math.abs(x(min + 1));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function calcSize(factor: number, min: number, max: number, x: ScaleLinear<number, number>): number {
|
|
15
|
+
return clamp(pixelsPerUnit(x) * factor, min, max);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function isOverlappingHorizontally(r1: BoundingBox, r2: BoundingBox): boolean {
|
|
19
|
+
const r1x2 = r1.x + r1.width;
|
|
20
|
+
const r2x2 = r2.x + r2.width;
|
|
21
|
+
|
|
22
|
+
if (r2.x > r1x2 || r2x2 < r1.x) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function isOverlapping(
|
|
29
|
+
r1: BoundingBox,
|
|
30
|
+
r2: BoundingBox,
|
|
31
|
+
horizontalPadding: number = DEFAULT_HORIZONTAL_PADDING,
|
|
32
|
+
verticalPadding: number = DEFAULT_VERTICAL_PADDING,
|
|
33
|
+
): boolean {
|
|
34
|
+
const r1x2 = r1.x + r1.width + horizontalPadding;
|
|
35
|
+
const r2x2 = r2.x + r2.width + horizontalPadding;
|
|
36
|
+
const r1y2 = r1.y + r1.height + verticalPadding;
|
|
37
|
+
const r2y2 = r2.y + r2.height + verticalPadding;
|
|
38
|
+
|
|
39
|
+
if (r2.x - horizontalPadding > r1x2 || r2.y - verticalPadding > r1y2 || r2x2 + horizontalPadding < r1.x || r2y2 + verticalPadding < r1.y) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function getOverlap(r1: BoundingBox, r2: BoundingBox): { dx: number; dy: number } {
|
|
46
|
+
const r1x2 = r1.x + r1.width;
|
|
47
|
+
const r2x2 = r2.x + r2.width;
|
|
48
|
+
const r1y2 = r1.y + r1.height;
|
|
49
|
+
const r2y2 = r2.y + r2.height;
|
|
50
|
+
|
|
51
|
+
if (r2.x > r1x2 || r2.y > r1y2 || r2x2 < r1.x || r2y2 < r1.y) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const dx = Math.max(0, Math.min(r1.x + r1.width, r2.x + r2.width) - Math.max(r1.x, r2.x));
|
|
56
|
+
const dy = Math.max(0, Math.min(r1.y + r1.height, r2.y + r2.height) - Math.max(r1.y, r2.y));
|
|
57
|
+
|
|
58
|
+
const newPoints = {
|
|
59
|
+
dx,
|
|
60
|
+
dy,
|
|
61
|
+
};
|
|
62
|
+
return newPoints;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function getOverlapOffset(
|
|
66
|
+
r1: BoundingBox,
|
|
67
|
+
r2: BoundingBox,
|
|
68
|
+
horizontalPadding = DEFAULT_HORIZONTAL_PADDING,
|
|
69
|
+
verticalPadding = DEFAULT_VERTICAL_PADDING,
|
|
70
|
+
): { dx: number; dy: number } {
|
|
71
|
+
const r1x2 = r1.x + r1.width;
|
|
72
|
+
const r2x2 = r2.x + r2.width;
|
|
73
|
+
const r1y2 = r1.y + r1.height;
|
|
74
|
+
const r2y2 = r2.y + r2.height;
|
|
75
|
+
|
|
76
|
+
if (r2.x - horizontalPadding > r1x2 || r2.y - verticalPadding > r1y2 || r2x2 + horizontalPadding < r1.x || r2y2 + verticalPadding < r1.y) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const dx = r1.x + r1.width - r2.x + horizontalPadding;
|
|
81
|
+
const dy = r1.y + r1.height - r2.y + verticalPadding;
|
|
82
|
+
|
|
83
|
+
const newPoints = {
|
|
84
|
+
dx,
|
|
85
|
+
dy,
|
|
86
|
+
};
|
|
87
|
+
return newPoints;
|
|
88
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { IPoint, Point } from 'pixi.js';
|
|
2
|
+
import Vector2 from '@equinor/videx-vector2';
|
|
3
|
+
|
|
4
|
+
export const pointToVector = (p: IPoint): Vector2 => new Vector2(p.x, p.y);
|
|
5
|
+
export const pointToArray = (p: IPoint): [number, number] => [p.x, p.y];
|
|
6
|
+
export const vectorToPoint = (v: Vector2): Point => new Point(v[0], v[1]);
|
|
7
|
+
export const vectorToArray = (v: Vector2): [number, number] => [v[0], v[1]];
|
|
8
|
+
export const arrayToPoint = (a: number[]): Point => new Point(a[0], a[1]);
|
|
9
|
+
export const arrayToVector = (a: number[]): Vector2 => new Vector2(a[0], a[1]);
|
|
10
|
+
|
|
11
|
+
export const calcDist = (prev: [number, number], point: [number, number]): number => {
|
|
12
|
+
return arrayToVector(point).sub(prev).magnitude;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export const calcDistPoint = (prev: Point, point: Point): number => {
|
|
16
|
+
return pointToVector(point).sub(prev.x, prev.y).magnitude;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const calcNormal = (p1: Point, p2: Point): Point => {
|
|
20
|
+
const d = pointToVector(p2).sub(p1.x, p1.y);
|
|
21
|
+
d.x = d.y === 0 ? 1 : d.x;
|
|
22
|
+
d.y = d.x === 0 ? 1 : d.y;
|
|
23
|
+
return vectorToPoint(d.rotate90()); //TODO: normalize
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const convertToUnitVector = (p: Point): Point => {
|
|
27
|
+
return vectorToPoint(pointToVector(p).normalize());
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const createNormals = (points: IPoint[]): Vector2[] => {
|
|
31
|
+
if (points.length < 2) {
|
|
32
|
+
return [new Vector2(0)];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
let n: Vector2;
|
|
36
|
+
|
|
37
|
+
return points.map((_coord, i, list) => {
|
|
38
|
+
if (i < list.length - 1) {
|
|
39
|
+
const p = pointToVector(list[i]);
|
|
40
|
+
const q = pointToVector(list[i + 1]);
|
|
41
|
+
const np = q.sub(p);
|
|
42
|
+
const rotate = np.rotate90();
|
|
43
|
+
n = rotate.normalized();
|
|
44
|
+
return n;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// reuse previous normal for last coord
|
|
48
|
+
return n;
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// TODO check if this can be simplified and return Vector/number[]
|
|
53
|
+
export const offsetPoint = (point: IPoint, vector: Vector2, offset: number): Point => {
|
|
54
|
+
const p = pointToVector(point);
|
|
55
|
+
return vectorToPoint(p.add(vector.scale(offset)));
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const offsetPoints = (points: IPoint[], vectors: Vector2[], offset: number): Point[] => {
|
|
59
|
+
if (points.length !== vectors.length) {
|
|
60
|
+
throw new Error('Number of vectors does not match number of points');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return points.map((point, index) => {
|
|
64
|
+
const vector = vectors[index];
|
|
65
|
+
return offsetPoint(point, vector, offset);
|
|
66
|
+
});
|
|
67
|
+
};
|