@cornerstonejs/tools 1.51.5 → 1.52.0
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/cjs/drawingSvg/drawPolyline.js +1 -1
- package/dist/cjs/drawingSvg/drawPolyline.js.map +1 -1
- package/dist/cjs/enums/ChangeTypes.d.ts +2 -1
- package/dist/cjs/enums/ChangeTypes.js +1 -0
- package/dist/cjs/enums/ChangeTypes.js.map +1 -1
- package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js +1 -1
- package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/helpers/state.d.ts +2 -1
- package/dist/cjs/stateManagement/annotation/helpers/state.js +2 -1
- package/dist/cjs/stateManagement/annotation/helpers/state.js.map +1 -1
- package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.d.ts +4 -0
- package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js +82 -0
- package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js.map +1 -1
- package/dist/cjs/tools/annotation/LivewireContourTool.d.ts +10 -9
- package/dist/cjs/tools/annotation/LivewireContourTool.js +56 -43
- package/dist/cjs/tools/annotation/LivewireContourTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +2 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/SplineROITool.js +3 -3
- package/dist/cjs/tools/annotation/SplineROITool.js.map +1 -1
- package/dist/cjs/types/ContourSegmentationAnnotation.d.ts +8 -0
- package/dist/cjs/types/InterpolationTypes.d.ts +2 -0
- package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +2 -5
- package/dist/cjs/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/createPolylineToolData.js +2 -1
- package/dist/cjs/utilities/contours/interpolation/createPolylineToolData.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/findAnnotationForInterpolation.js +2 -1
- package/dist/cjs/utilities/contours/interpolation/findAnnotationForInterpolation.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/getInterpolationData.js +3 -1
- package/dist/cjs/utilities/contours/interpolation/getInterpolationData.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/interpolate.d.ts +8 -0
- package/dist/cjs/utilities/contours/interpolation/interpolate.js +56 -42
- package/dist/cjs/utilities/contours/interpolation/interpolate.js.map +1 -1
- package/dist/cjs/utilities/contours/interpolation/selectHandles.d.ts +4 -0
- package/dist/cjs/utilities/contours/interpolation/selectHandles.js +170 -0
- package/dist/cjs/utilities/contours/interpolation/selectHandles.js.map +1 -0
- package/dist/cjs/utilities/livewire/LivewireScissors.d.ts +2 -1
- package/dist/cjs/utilities/livewire/LivewireScissors.js +46 -24
- package/dist/cjs/utilities/livewire/LivewireScissors.js.map +1 -1
- package/dist/cjs/utilities/segmentation/InterpolationManager/InterpolationManager.js +13 -3
- package/dist/cjs/utilities/segmentation/InterpolationManager/InterpolationManager.js.map +1 -1
- package/dist/esm/drawingSvg/drawPolyline.js +1 -1
- package/dist/esm/drawingSvg/drawPolyline.js.map +1 -1
- package/dist/esm/enums/ChangeTypes.js +1 -0
- package/dist/esm/enums/ChangeTypes.js.map +1 -1
- package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js +1 -1
- package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
- package/dist/esm/stateManagement/annotation/helpers/state.js +3 -2
- package/dist/esm/stateManagement/annotation/helpers/state.js.map +1 -1
- package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js +81 -0
- package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js.map +1 -1
- package/dist/esm/tools/annotation/LivewireContourTool.js +57 -44
- package/dist/esm/tools/annotation/LivewireContourTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +2 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/esm/tools/annotation/SplineROITool.js +3 -3
- package/dist/esm/tools/annotation/SplineROITool.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/createPolylineToolData.js +2 -1
- package/dist/esm/utilities/contours/interpolation/createPolylineToolData.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/findAnnotationForInterpolation.js +2 -1
- package/dist/esm/utilities/contours/interpolation/findAnnotationForInterpolation.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/getInterpolationData.js +3 -1
- package/dist/esm/utilities/contours/interpolation/getInterpolationData.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/interpolate.js +57 -43
- package/dist/esm/utilities/contours/interpolation/interpolate.js.map +1 -1
- package/dist/esm/utilities/contours/interpolation/selectHandles.js +164 -0
- package/dist/esm/utilities/contours/interpolation/selectHandles.js.map +1 -0
- package/dist/esm/utilities/livewire/LivewireScissors.js +46 -24
- package/dist/esm/utilities/livewire/LivewireScissors.js.map +1 -1
- package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.js +13 -3
- package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.js.map +1 -1
- package/dist/types/enums/ChangeTypes.d.ts +2 -1
- package/dist/types/enums/ChangeTypes.d.ts.map +1 -1
- package/dist/types/stateManagement/annotation/helpers/state.d.ts +2 -1
- package/dist/types/stateManagement/annotation/helpers/state.d.ts.map +1 -1
- package/dist/types/tools/annotation/LivewireContourSegmentationTool.d.ts +4 -0
- package/dist/types/tools/annotation/LivewireContourSegmentationTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/LivewireContourTool.d.ts +10 -9
- package/dist/types/tools/annotation/LivewireContourTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts.map +1 -1
- package/dist/types/types/ContourSegmentationAnnotation.d.ts +8 -0
- package/dist/types/types/ContourSegmentationAnnotation.d.ts.map +1 -1
- package/dist/types/types/InterpolationTypes.d.ts +2 -0
- package/dist/types/types/InterpolationTypes.d.ts.map +1 -1
- package/dist/types/types/ToolSpecificAnnotationTypes.d.ts +2 -5
- package/dist/types/types/ToolSpecificAnnotationTypes.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/acceptAutogeneratedInterpolations.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/createPolylineToolData.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/findAnnotationForInterpolation.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/getInterpolationData.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/interpolate.d.ts +8 -0
- package/dist/types/utilities/contours/interpolation/interpolate.d.ts.map +1 -1
- package/dist/types/utilities/contours/interpolation/selectHandles.d.ts +5 -0
- package/dist/types/utilities/contours/interpolation/selectHandles.d.ts.map +1 -0
- package/dist/types/utilities/livewire/LivewireScissors.d.ts +2 -1
- package/dist/types/utilities/livewire/LivewireScissors.d.ts.map +1 -1
- package/dist/types/utilities/segmentation/InterpolationManager/InterpolationManager.d.ts.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/src/drawingSvg/drawPolyline.ts +1 -1
- package/src/enums/ChangeTypes.ts +4 -0
- package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +1 -1
- package/src/stateManagement/annotation/helpers/state.ts +4 -2
- package/src/tools/annotation/LivewireContourSegmentationTool.ts +151 -0
- package/src/tools/annotation/LivewireContourTool.ts +113 -82
- package/src/tools/annotation/PlanarFreehandROITool.ts +8 -3
- package/src/tools/annotation/SplineROITool.ts +3 -3
- package/src/types/ContourSegmentationAnnotation.ts +38 -0
- package/src/types/InterpolationTypes.ts +6 -0
- package/src/types/ToolSpecificAnnotationTypes.ts +7 -5
- package/src/utilities/contours/interpolation/acceptAutogeneratedInterpolations.ts +3 -1
- package/src/utilities/contours/interpolation/createPolylineToolData.ts +7 -1
- package/src/utilities/contours/interpolation/findAnnotationForInterpolation.ts +2 -1
- package/src/utilities/contours/interpolation/getInterpolationData.ts +3 -1
- package/src/utilities/contours/interpolation/interpolate.ts +94 -75
- package/src/utilities/contours/interpolation/selectHandles.ts +240 -0
- package/src/utilities/livewire/LivewireScissors.ts +65 -53
- package/src/utilities/segmentation/InterpolationManager/InterpolationManager.ts +39 -4
- package/dist/cjs/utilities/contours/PointsArray.d.ts +0 -29
- package/dist/cjs/utilities/contours/PointsArray.js +0 -104
- package/dist/cjs/utilities/contours/PointsArray.js.map +0 -1
- package/dist/esm/utilities/contours/PointsArray.js +0 -98
- package/dist/esm/utilities/contours/PointsArray.js.map +0 -1
- package/dist/types/utilities/contours/PointsArray.d.ts +0 -30
- package/dist/types/utilities/contours/PointsArray.d.ts.map +0 -1
- package/src/utilities/contours/PointsArray.ts +0 -165
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { vec2, vec3 } from 'gl-matrix';
|
|
2
|
-
export class PointsArray {
|
|
3
|
-
constructor(configuration = {}) {
|
|
4
|
-
this.dimensions = 3;
|
|
5
|
-
this.length = 0;
|
|
6
|
-
const { initialSize = 1024, dimensions = 3 } = configuration;
|
|
7
|
-
this.data = new Float32Array(initialSize * dimensions);
|
|
8
|
-
this.dimensions = dimensions;
|
|
9
|
-
}
|
|
10
|
-
forEach(func, point) {
|
|
11
|
-
for (let i = 0; i < this.length; i++) {
|
|
12
|
-
func(this.getPoint(i, point), i);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
reverse() {
|
|
16
|
-
const midLength = Math.floor(this.length / 2);
|
|
17
|
-
for (let i = 0; i < midLength; i++) {
|
|
18
|
-
const indexStart = i * this.dimensions;
|
|
19
|
-
const indexEnd = (this.length - 1 - i) * this.dimensions;
|
|
20
|
-
for (let dimension = 0; dimension < this.dimensions; dimension++) {
|
|
21
|
-
const valueStart = this.data[indexStart + dimension];
|
|
22
|
-
this.data[indexStart + dimension] = this.data[indexEnd + dimension];
|
|
23
|
-
this.data[indexEnd + dimension] = valueStart;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
map(f, factory) {
|
|
28
|
-
const mapData = [];
|
|
29
|
-
for (let i = 0; i < this.length; i++) {
|
|
30
|
-
mapData.push(f(this.getPoint(i, factory(i)), i));
|
|
31
|
-
}
|
|
32
|
-
return mapData;
|
|
33
|
-
}
|
|
34
|
-
static fromXYZ({ x, y, z }) {
|
|
35
|
-
const array = new PointsArray3({ initialSize: x.length });
|
|
36
|
-
let offset = 0;
|
|
37
|
-
for (let i = 0; i < x.length; i++) {
|
|
38
|
-
array.data[offset++] = x[i];
|
|
39
|
-
array.data[offset++] = y[i];
|
|
40
|
-
array.data[offset++] = z[i];
|
|
41
|
-
}
|
|
42
|
-
array.length = x.length;
|
|
43
|
-
return array;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
export class PointsArray2 extends PointsArray {
|
|
47
|
-
constructor(configuration = {}) {
|
|
48
|
-
super({ ...configuration, dimensions: 2 });
|
|
49
|
-
}
|
|
50
|
-
forEach(func, point = vec2.create()) {
|
|
51
|
-
super.forEach(func, point);
|
|
52
|
-
}
|
|
53
|
-
getPoint(index, point = vec2.create()) {
|
|
54
|
-
if (index >= this.length) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const index2 = index * 2;
|
|
58
|
-
point[0] = this.data[index2];
|
|
59
|
-
point[1] = this.data[index2 + 1];
|
|
60
|
-
return point;
|
|
61
|
-
}
|
|
62
|
-
get points() {
|
|
63
|
-
return this.map((point) => point, () => vec2.create());
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
export class PointsArray3 extends PointsArray {
|
|
67
|
-
constructor(configuration = {}) {
|
|
68
|
-
super({ ...configuration, dimensions: 3 });
|
|
69
|
-
}
|
|
70
|
-
forEach(func, point = vec3.create()) {
|
|
71
|
-
super.forEach(func, point);
|
|
72
|
-
}
|
|
73
|
-
getPoint(index, point = vec3.create()) {
|
|
74
|
-
if (index >= this.length) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
const index2 = index * 3;
|
|
78
|
-
point[0] = this.data[index2];
|
|
79
|
-
point[1] = this.data[index2 + 1];
|
|
80
|
-
point[2] = this.data[index2 + 2];
|
|
81
|
-
return point;
|
|
82
|
-
}
|
|
83
|
-
get points() {
|
|
84
|
-
return this.map((point) => point, () => vec3.create());
|
|
85
|
-
}
|
|
86
|
-
getXYZ() {
|
|
87
|
-
const x = [];
|
|
88
|
-
const y = [];
|
|
89
|
-
const z = [];
|
|
90
|
-
this.forEach((point) => {
|
|
91
|
-
x.push(point[0]);
|
|
92
|
-
y.push(point[1]);
|
|
93
|
-
z.push(point[2]);
|
|
94
|
-
});
|
|
95
|
-
return { x, y, z };
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=PointsArray.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PointsArray.js","sourceRoot":"","sources":["../../../../src/utilities/contours/PointsArray.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { Types } from '@cornerstonejs/core';
|
|
2
|
-
export declare type PolyDataPointConfiguration = {
|
|
3
|
-
dimensions?: 2 | 3;
|
|
4
|
-
initialSize?: number;
|
|
5
|
-
};
|
|
6
|
-
export declare abstract class PointsArray<T> {
|
|
7
|
-
data: Float32Array;
|
|
8
|
-
dimensions: number;
|
|
9
|
-
length: number;
|
|
10
|
-
constructor(configuration?: PolyDataPointConfiguration);
|
|
11
|
-
protected forEach(func: (value: T, index: number) => void, point: T): void;
|
|
12
|
-
abstract getPoint(index: number, point: T): T;
|
|
13
|
-
reverse(): void;
|
|
14
|
-
protected map(f: (value: any, index: number) => T, factory: (index: number) => T): any[];
|
|
15
|
-
static fromXYZ({ x, y, z }: Types.PointsXYZ): PointsArray3;
|
|
16
|
-
}
|
|
17
|
-
export declare class PointsArray2 extends PointsArray<Types.Point2> {
|
|
18
|
-
constructor(configuration?: {});
|
|
19
|
-
forEach(func: (value: Types.Point2, index: number) => void, point?: Types.Point2): void;
|
|
20
|
-
getPoint(index: number, point?: Types.Point2): Types.Point2;
|
|
21
|
-
get points(): any[];
|
|
22
|
-
}
|
|
23
|
-
export declare class PointsArray3 extends PointsArray<Types.Point3> {
|
|
24
|
-
constructor(configuration?: {});
|
|
25
|
-
forEach(func: (value: Types.Point3, index: number) => void, point?: Types.Point3): void;
|
|
26
|
-
getPoint(index: number, point?: Types.Point3): Types.Point3;
|
|
27
|
-
get points(): any[];
|
|
28
|
-
getXYZ(): Types.PointsXYZ;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=PointsArray.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PointsArray.d.ts","sourceRoot":"","sources":["../../../../src/utilities/contours/PointsArray.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAGjD,oBAAY,0BAA0B,GAAG;IACvC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAUF,8BAAsB,WAAW,CAAC,CAAC;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,SAAK;IACR,MAAM,SAAK;gBAEN,aAAa,GAAE,0BAA+B;IAM1D,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;IAMnE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAKtC,OAAO;IAcd,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,KAAA,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC;WAS7D,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,GAAG,YAAY;CAWlE;AAQD,qBAAa,YAAa,SAAQ,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC7C,aAAa,KAAK;IAIvB,OAAO,CACZ,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,EAClD,KAAK,eAAgC;IAKhC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,eAAgC;IAUpE,IAAW,MAAM,UAKhB;CACF;AAeD,qBAAa,YAAa,SAAQ,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC7C,aAAa,KAAK;IAIvB,OAAO,CACZ,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,EAClD,KAAK,eAAgC;IAKhC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,eAAgC;IAWpE,IAAW,MAAM,UAKhB;IAEM,MAAM,IAAI,KAAK,CAAC,SAAS;CAWjC"}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import type { Types } from '@cornerstonejs/core';
|
|
2
|
-
import { vec2, vec3 } from 'gl-matrix';
|
|
3
|
-
|
|
4
|
-
export type PolyDataPointConfiguration = {
|
|
5
|
-
dimensions?: 2 | 3;
|
|
6
|
-
initialSize?: number;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* PointsArray is a TypedArray based representation of n dimensional points with
|
|
11
|
-
* custom sub-classes to represent the version of this based on Point2 and Point3
|
|
12
|
-
* gl-matrix implementation.
|
|
13
|
-
* This representation is efficient for storing large numbers of points and for
|
|
14
|
-
* transferring them amongst systems and is planned to have more methods added
|
|
15
|
-
* for generic manipulation of data.
|
|
16
|
-
*/
|
|
17
|
-
export abstract class PointsArray<T> {
|
|
18
|
-
data: Float32Array;
|
|
19
|
-
dimensions = 3;
|
|
20
|
-
public length = 0;
|
|
21
|
-
|
|
22
|
-
constructor(configuration: PolyDataPointConfiguration = {}) {
|
|
23
|
-
const { initialSize = 1024, dimensions = 3 } = configuration;
|
|
24
|
-
this.data = new Float32Array(initialSize * dimensions);
|
|
25
|
-
this.dimensions = dimensions;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
protected forEach(func: (value: T, index: number) => void, point: T) {
|
|
29
|
-
for (let i = 0; i < this.length; i++) {
|
|
30
|
-
func(this.getPoint(i, point), i);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
abstract getPoint(index: number, point: T): T;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Reverse the points in place
|
|
38
|
-
*/
|
|
39
|
-
public reverse() {
|
|
40
|
-
const midLength = Math.floor(this.length / 2);
|
|
41
|
-
|
|
42
|
-
for (let i = 0; i < midLength; i++) {
|
|
43
|
-
const indexStart = i * this.dimensions;
|
|
44
|
-
const indexEnd = (this.length - 1 - i) * this.dimensions;
|
|
45
|
-
for (let dimension = 0; dimension < this.dimensions; dimension++) {
|
|
46
|
-
const valueStart = this.data[indexStart + dimension];
|
|
47
|
-
this.data[indexStart + dimension] = this.data[indexEnd + dimension];
|
|
48
|
-
this.data[indexEnd + dimension] = valueStart;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
protected map(f: (value, index: number) => T, factory: (index: number) => T) {
|
|
54
|
-
const mapData = [];
|
|
55
|
-
for (let i = 0; i < this.length; i++) {
|
|
56
|
-
mapData.push(f(this.getPoint(i, factory(i)), i));
|
|
57
|
-
}
|
|
58
|
-
return mapData;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/** Create an PointsArray3 from the x,y,z individual arrays */
|
|
62
|
-
public static fromXYZ({ x, y, z }: Types.PointsXYZ): PointsArray3 {
|
|
63
|
-
const array = new PointsArray3({ initialSize: x.length });
|
|
64
|
-
let offset = 0;
|
|
65
|
-
for (let i = 0; i < x.length; i++) {
|
|
66
|
-
array.data[offset++] = x[i];
|
|
67
|
-
array.data[offset++] = y[i];
|
|
68
|
-
array.data[offset++] = z[i];
|
|
69
|
-
}
|
|
70
|
-
array.length = x.length;
|
|
71
|
-
return array;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* A version of this with support for Types.Point2 and vec2 generation and extraction.
|
|
77
|
-
*
|
|
78
|
-
* This class is designed to allow for efficient storage and manipulation of
|
|
79
|
-
* large sets of Point2 type data but stored as a single Float32Array.
|
|
80
|
-
*/
|
|
81
|
-
export class PointsArray2 extends PointsArray<Types.Point2> {
|
|
82
|
-
constructor(configuration = {}) {
|
|
83
|
-
super({ ...configuration, dimensions: 2 });
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
public forEach(
|
|
87
|
-
func: (value: Types.Point2, index: number) => void,
|
|
88
|
-
point = vec2.create() as Types.Point2
|
|
89
|
-
) {
|
|
90
|
-
super.forEach(func, point);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
public getPoint(index: number, point = vec2.create() as Types.Point2) {
|
|
94
|
-
if (index >= this.length) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const index2 = index * 2;
|
|
98
|
-
point[0] = this.data[index2];
|
|
99
|
-
point[1] = this.data[index2 + 1];
|
|
100
|
-
return point;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
public get points() {
|
|
104
|
-
return this.map(
|
|
105
|
-
(point) => point,
|
|
106
|
-
() => vec2.create() as Types.Point2
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* A version of PointsArray designed to work with Types.Point3 and vec3 data,
|
|
113
|
-
* but efficiently storing the data internally as a Float32Array.
|
|
114
|
-
* A good use case for this would be storing contour data or function results
|
|
115
|
-
* of type `(number)=>Point3` as these can be quite large and can benefit from
|
|
116
|
-
* directly using the Float32Array representation for both the Point3 values and
|
|
117
|
-
* the internal storage of the Point3[] data.
|
|
118
|
-
*
|
|
119
|
-
* For example, a 64k length array of `PointsArray3` data is just a bit over 256k of data as
|
|
120
|
-
* stored with this class, but when stored as a Point3[], is at least 1 meg in size
|
|
121
|
-
* because each number is 64 bits, and each Point3[] requires a list of values, adding
|
|
122
|
-
* at least another 8 bytes per value, and at least another 64 bytes per array.
|
|
123
|
-
*/
|
|
124
|
-
export class PointsArray3 extends PointsArray<Types.Point3> {
|
|
125
|
-
constructor(configuration = {}) {
|
|
126
|
-
super({ ...configuration, dimensions: 3 });
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
public forEach(
|
|
130
|
-
func: (value: Types.Point3, index: number) => void,
|
|
131
|
-
point = vec3.create() as Types.Point3
|
|
132
|
-
) {
|
|
133
|
-
super.forEach(func, point);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
public getPoint(index: number, point = vec3.create() as Types.Point3) {
|
|
137
|
-
if (index >= this.length) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
const index2 = index * 3;
|
|
141
|
-
point[0] = this.data[index2];
|
|
142
|
-
point[1] = this.data[index2 + 1];
|
|
143
|
-
point[2] = this.data[index2 + 2];
|
|
144
|
-
return point;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
public get points() {
|
|
148
|
-
return this.map(
|
|
149
|
-
(point) => point,
|
|
150
|
-
() => vec3.create() as Types.Point3
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
public getXYZ(): Types.PointsXYZ {
|
|
155
|
-
const x = [];
|
|
156
|
-
const y = [];
|
|
157
|
-
const z = [];
|
|
158
|
-
this.forEach((point) => {
|
|
159
|
-
x.push(point[0]);
|
|
160
|
-
y.push(point[1]);
|
|
161
|
-
z.push(point[2]);
|
|
162
|
-
});
|
|
163
|
-
return { x, y, z };
|
|
164
|
-
}
|
|
165
|
-
}
|