@cornerstonejs/tools 1.51.4 → 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.
Files changed (128) hide show
  1. package/dist/cjs/drawingSvg/drawPolyline.js +1 -1
  2. package/dist/cjs/drawingSvg/drawPolyline.js.map +1 -1
  3. package/dist/cjs/enums/ChangeTypes.d.ts +2 -1
  4. package/dist/cjs/enums/ChangeTypes.js +1 -0
  5. package/dist/cjs/enums/ChangeTypes.js.map +1 -1
  6. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js +1 -1
  7. package/dist/cjs/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
  8. package/dist/cjs/stateManagement/annotation/helpers/state.d.ts +2 -1
  9. package/dist/cjs/stateManagement/annotation/helpers/state.js +2 -1
  10. package/dist/cjs/stateManagement/annotation/helpers/state.js.map +1 -1
  11. package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.d.ts +4 -0
  12. package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js +82 -0
  13. package/dist/cjs/tools/annotation/LivewireContourSegmentationTool.js.map +1 -1
  14. package/dist/cjs/tools/annotation/LivewireContourTool.d.ts +10 -9
  15. package/dist/cjs/tools/annotation/LivewireContourTool.js +56 -43
  16. package/dist/cjs/tools/annotation/LivewireContourTool.js.map +1 -1
  17. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +2 -1
  18. package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  19. package/dist/cjs/tools/annotation/SplineROITool.js +3 -3
  20. package/dist/cjs/tools/annotation/SplineROITool.js.map +1 -1
  21. package/dist/cjs/types/ContourSegmentationAnnotation.d.ts +8 -0
  22. package/dist/cjs/types/InterpolationTypes.d.ts +2 -0
  23. package/dist/cjs/types/ToolSpecificAnnotationTypes.d.ts +2 -5
  24. package/dist/cjs/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js.map +1 -1
  25. package/dist/cjs/utilities/contours/interpolation/createPolylineToolData.js +2 -1
  26. package/dist/cjs/utilities/contours/interpolation/createPolylineToolData.js.map +1 -1
  27. package/dist/cjs/utilities/contours/interpolation/findAnnotationForInterpolation.js +2 -1
  28. package/dist/cjs/utilities/contours/interpolation/findAnnotationForInterpolation.js.map +1 -1
  29. package/dist/cjs/utilities/contours/interpolation/getInterpolationData.js +3 -1
  30. package/dist/cjs/utilities/contours/interpolation/getInterpolationData.js.map +1 -1
  31. package/dist/cjs/utilities/contours/interpolation/interpolate.d.ts +8 -0
  32. package/dist/cjs/utilities/contours/interpolation/interpolate.js +56 -42
  33. package/dist/cjs/utilities/contours/interpolation/interpolate.js.map +1 -1
  34. package/dist/cjs/utilities/contours/interpolation/selectHandles.d.ts +4 -0
  35. package/dist/cjs/utilities/contours/interpolation/selectHandles.js +170 -0
  36. package/dist/cjs/utilities/contours/interpolation/selectHandles.js.map +1 -0
  37. package/dist/cjs/utilities/livewire/LivewireScissors.d.ts +2 -1
  38. package/dist/cjs/utilities/livewire/LivewireScissors.js +46 -24
  39. package/dist/cjs/utilities/livewire/LivewireScissors.js.map +1 -1
  40. package/dist/cjs/utilities/segmentation/InterpolationManager/InterpolationManager.js +13 -3
  41. package/dist/cjs/utilities/segmentation/InterpolationManager/InterpolationManager.js.map +1 -1
  42. package/dist/esm/drawingSvg/drawPolyline.js +1 -1
  43. package/dist/esm/drawingSvg/drawPolyline.js.map +1 -1
  44. package/dist/esm/enums/ChangeTypes.js +1 -0
  45. package/dist/esm/enums/ChangeTypes.js.map +1 -1
  46. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js +1 -1
  47. package/dist/esm/eventDispatchers/keyboardEventHandlers/keyDown.js.map +1 -1
  48. package/dist/esm/stateManagement/annotation/helpers/state.js +3 -2
  49. package/dist/esm/stateManagement/annotation/helpers/state.js.map +1 -1
  50. package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js +81 -0
  51. package/dist/esm/tools/annotation/LivewireContourSegmentationTool.js.map +1 -1
  52. package/dist/esm/tools/annotation/LivewireContourTool.js +57 -44
  53. package/dist/esm/tools/annotation/LivewireContourTool.js.map +1 -1
  54. package/dist/esm/tools/annotation/PlanarFreehandROITool.js +2 -1
  55. package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
  56. package/dist/esm/tools/annotation/SplineROITool.js +3 -3
  57. package/dist/esm/tools/annotation/SplineROITool.js.map +1 -1
  58. package/dist/esm/utilities/contours/interpolation/acceptAutogeneratedInterpolations.js.map +1 -1
  59. package/dist/esm/utilities/contours/interpolation/createPolylineToolData.js +2 -1
  60. package/dist/esm/utilities/contours/interpolation/createPolylineToolData.js.map +1 -1
  61. package/dist/esm/utilities/contours/interpolation/findAnnotationForInterpolation.js +2 -1
  62. package/dist/esm/utilities/contours/interpolation/findAnnotationForInterpolation.js.map +1 -1
  63. package/dist/esm/utilities/contours/interpolation/getInterpolationData.js +3 -1
  64. package/dist/esm/utilities/contours/interpolation/getInterpolationData.js.map +1 -1
  65. package/dist/esm/utilities/contours/interpolation/interpolate.js +57 -43
  66. package/dist/esm/utilities/contours/interpolation/interpolate.js.map +1 -1
  67. package/dist/esm/utilities/contours/interpolation/selectHandles.js +164 -0
  68. package/dist/esm/utilities/contours/interpolation/selectHandles.js.map +1 -0
  69. package/dist/esm/utilities/livewire/LivewireScissors.js +46 -24
  70. package/dist/esm/utilities/livewire/LivewireScissors.js.map +1 -1
  71. package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.js +13 -3
  72. package/dist/esm/utilities/segmentation/InterpolationManager/InterpolationManager.js.map +1 -1
  73. package/dist/types/enums/ChangeTypes.d.ts +2 -1
  74. package/dist/types/enums/ChangeTypes.d.ts.map +1 -1
  75. package/dist/types/stateManagement/annotation/helpers/state.d.ts +2 -1
  76. package/dist/types/stateManagement/annotation/helpers/state.d.ts.map +1 -1
  77. package/dist/types/tools/annotation/LivewireContourSegmentationTool.d.ts +4 -0
  78. package/dist/types/tools/annotation/LivewireContourSegmentationTool.d.ts.map +1 -1
  79. package/dist/types/tools/annotation/LivewireContourTool.d.ts +10 -9
  80. package/dist/types/tools/annotation/LivewireContourTool.d.ts.map +1 -1
  81. package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts.map +1 -1
  82. package/dist/types/types/ContourSegmentationAnnotation.d.ts +8 -0
  83. package/dist/types/types/ContourSegmentationAnnotation.d.ts.map +1 -1
  84. package/dist/types/types/InterpolationTypes.d.ts +2 -0
  85. package/dist/types/types/InterpolationTypes.d.ts.map +1 -1
  86. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts +2 -5
  87. package/dist/types/types/ToolSpecificAnnotationTypes.d.ts.map +1 -1
  88. package/dist/types/utilities/contours/interpolation/acceptAutogeneratedInterpolations.d.ts.map +1 -1
  89. package/dist/types/utilities/contours/interpolation/createPolylineToolData.d.ts.map +1 -1
  90. package/dist/types/utilities/contours/interpolation/findAnnotationForInterpolation.d.ts.map +1 -1
  91. package/dist/types/utilities/contours/interpolation/getInterpolationData.d.ts.map +1 -1
  92. package/dist/types/utilities/contours/interpolation/interpolate.d.ts +8 -0
  93. package/dist/types/utilities/contours/interpolation/interpolate.d.ts.map +1 -1
  94. package/dist/types/utilities/contours/interpolation/selectHandles.d.ts +5 -0
  95. package/dist/types/utilities/contours/interpolation/selectHandles.d.ts.map +1 -0
  96. package/dist/types/utilities/livewire/LivewireScissors.d.ts +2 -1
  97. package/dist/types/utilities/livewire/LivewireScissors.d.ts.map +1 -1
  98. package/dist/types/utilities/segmentation/InterpolationManager/InterpolationManager.d.ts.map +1 -1
  99. package/dist/umd/index.js +1 -1
  100. package/dist/umd/index.js.map +1 -1
  101. package/package.json +3 -3
  102. package/src/drawingSvg/drawPolyline.ts +1 -1
  103. package/src/enums/ChangeTypes.ts +4 -0
  104. package/src/eventDispatchers/keyboardEventHandlers/keyDown.ts +1 -1
  105. package/src/stateManagement/annotation/helpers/state.ts +4 -2
  106. package/src/tools/annotation/LivewireContourSegmentationTool.ts +151 -0
  107. package/src/tools/annotation/LivewireContourTool.ts +113 -82
  108. package/src/tools/annotation/PlanarFreehandROITool.ts +8 -3
  109. package/src/tools/annotation/SplineROITool.ts +3 -3
  110. package/src/types/ContourSegmentationAnnotation.ts +38 -0
  111. package/src/types/InterpolationTypes.ts +6 -0
  112. package/src/types/ToolSpecificAnnotationTypes.ts +7 -5
  113. package/src/utilities/contours/interpolation/acceptAutogeneratedInterpolations.ts +3 -1
  114. package/src/utilities/contours/interpolation/createPolylineToolData.ts +7 -1
  115. package/src/utilities/contours/interpolation/findAnnotationForInterpolation.ts +2 -1
  116. package/src/utilities/contours/interpolation/getInterpolationData.ts +3 -1
  117. package/src/utilities/contours/interpolation/interpolate.ts +94 -75
  118. package/src/utilities/contours/interpolation/selectHandles.ts +240 -0
  119. package/src/utilities/livewire/LivewireScissors.ts +65 -53
  120. package/src/utilities/segmentation/InterpolationManager/InterpolationManager.ts +39 -4
  121. package/dist/cjs/utilities/contours/PointsArray.d.ts +0 -29
  122. package/dist/cjs/utilities/contours/PointsArray.js +0 -104
  123. package/dist/cjs/utilities/contours/PointsArray.js.map +0 -1
  124. package/dist/esm/utilities/contours/PointsArray.js +0 -98
  125. package/dist/esm/utilities/contours/PointsArray.js.map +0 -1
  126. package/dist/types/utilities/contours/PointsArray.d.ts +0 -30
  127. package/dist/types/utilities/contours/PointsArray.d.ts.map +0 -1
  128. 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
- }