@cornerstonejs/tools 1.50.3 → 1.51.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/eventListeners/annotations/annotationCompletedListener.d.ts +2 -0
- package/dist/cjs/eventListeners/annotations/annotationCompletedListener.js +35 -0
- package/dist/cjs/eventListeners/annotations/annotationCompletedListener.js.map +1 -0
- package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts +2 -0
- package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +174 -0
- package/dist/cjs/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map +1 -0
- package/dist/cjs/eventListeners/annotations/contourSegmentation/index.d.ts +1 -0
- package/dist/cjs/eventListeners/annotations/contourSegmentation/index.js +9 -0
- package/dist/cjs/eventListeners/annotations/contourSegmentation/index.js.map +1 -0
- package/dist/cjs/eventListeners/annotations/index.d.ts +2 -1
- package/dist/cjs/eventListeners/annotations/index.js +3 -1
- package/dist/cjs/eventListeners/annotations/index.js.map +1 -1
- package/dist/cjs/eventListeners/index.d.ts +2 -2
- package/dist/cjs/eventListeners/index.js +2 -1
- package/dist/cjs/eventListeners/index.js.map +1 -1
- package/dist/cjs/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.d.ts +3 -0
- package/dist/cjs/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +89 -0
- package/dist/cjs/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js.map +1 -0
- package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js +5 -53
- package/dist/cjs/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +1 -1
- package/dist/cjs/init.js +2 -0
- package/dist/cjs/init.js.map +1 -1
- package/dist/cjs/stateManagement/annotation/helpers/state.d.ts +3 -1
- package/dist/cjs/stateManagement/annotation/helpers/state.js +21 -1
- package/dist/cjs/stateManagement/annotation/helpers/state.js.map +1 -1
- package/dist/cjs/store/ToolGroupManager/ToolGroup.d.ts +1 -0
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js +3 -0
- package/dist/cjs/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/cjs/store/addTool.d.ts +1 -0
- package/dist/cjs/store/addTool.js +6 -1
- package/dist/cjs/store/addTool.js.map +1 -1
- package/dist/cjs/store/index.d.ts +2 -2
- package/dist/cjs/store/index.js +2 -1
- package/dist/cjs/store/index.js.map +1 -1
- package/dist/cjs/store/removeEnabledElement.js +1 -2
- package/dist/cjs/store/removeEnabledElement.js.map +1 -1
- package/dist/cjs/tools/AdvancedMagnifyTool.js +3 -10
- package/dist/cjs/tools/AdvancedMagnifyTool.js.map +1 -1
- package/dist/cjs/tools/annotation/AngleTool.js +5 -18
- package/dist/cjs/tools/annotation/AngleTool.js.map +1 -1
- package/dist/cjs/tools/annotation/ArrowAnnotateTool.js +9 -28
- package/dist/cjs/tools/annotation/ArrowAnnotateTool.js.map +1 -1
- package/dist/cjs/tools/annotation/BidirectionalTool.js +7 -22
- package/dist/cjs/tools/annotation/BidirectionalTool.js.map +1 -1
- package/dist/cjs/tools/annotation/CircleROITool.js +7 -22
- package/dist/cjs/tools/annotation/CircleROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/CobbAngleTool.js +5 -18
- package/dist/cjs/tools/annotation/CobbAngleTool.js.map +1 -1
- package/dist/cjs/tools/annotation/EllipticalROITool.js +7 -22
- package/dist/cjs/tools/annotation/EllipticalROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/KeyImageTool.js +5 -12
- package/dist/cjs/tools/annotation/KeyImageTool.js.map +1 -1
- package/dist/cjs/tools/annotation/LengthTool.js +5 -18
- package/dist/cjs/tools/annotation/LengthTool.js.map +1 -1
- package/dist/cjs/tools/annotation/LivewireContourTool.d.ts +4 -1
- package/dist/cjs/tools/annotation/LivewireContourTool.js +30 -22
- package/dist/cjs/tools/annotation/LivewireContourTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +2 -1
- package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js +11 -0
- package/dist/cjs/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -1
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.d.ts +2 -10
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js +6 -22
- package/dist/cjs/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/ProbeTool.js +8 -23
- package/dist/cjs/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/cjs/tools/annotation/RectangleROITool.js +8 -22
- package/dist/cjs/tools/annotation/RectangleROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/SplineROITool.d.ts +8 -9
- package/dist/cjs/tools/annotation/SplineROITool.js +27 -10
- package/dist/cjs/tools/annotation/SplineROITool.js.map +1 -1
- package/dist/cjs/tools/annotation/UltrasoundDirectionalTool.js +5 -18
- package/dist/cjs/tools/annotation/UltrasoundDirectionalTool.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +7 -6
- package/dist/cjs/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js +8 -5
- package/dist/cjs/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/editLoopCommon.js +8 -8
- package/dist/cjs/tools/annotation/planarFreehandROITool/editLoopCommon.js.map +1 -1
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js +6 -5
- package/dist/cjs/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
- package/dist/cjs/tools/base/ContourBaseTool.d.ts +2 -8
- package/dist/cjs/tools/base/ContourBaseTool.js.map +1 -1
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.d.ts +3 -2
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.js +13 -1
- package/dist/cjs/tools/base/ContourSegmentationBaseTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.js +3 -9
- package/dist/cjs/tools/segmentation/RectangleROIStartEndThresholdTool.js.map +1 -1
- package/dist/cjs/tools/segmentation/RectangleROIThresholdTool.js +3 -9
- package/dist/cjs/tools/segmentation/RectangleROIThresholdTool.js.map +1 -1
- package/dist/cjs/types/AnnotationRenderContext.d.ts +11 -0
- package/dist/cjs/types/AnnotationRenderContext.js +3 -0
- package/dist/cjs/types/AnnotationRenderContext.js.map +1 -0
- package/dist/cjs/types/IToolGroup.d.ts +2 -1
- package/dist/cjs/types/index.d.ts +2 -1
- package/dist/cjs/utilities/contourSegmentation/areSameSegment.d.ts +2 -0
- package/dist/cjs/utilities/contourSegmentation/areSameSegment.js +12 -0
- package/dist/cjs/utilities/contourSegmentation/areSameSegment.js.map +1 -0
- package/dist/cjs/utilities/contourSegmentation/index.d.ts +2 -0
- package/dist/cjs/utilities/contourSegmentation/index.js +11 -0
- package/dist/cjs/utilities/contourSegmentation/index.js.map +1 -0
- package/dist/cjs/utilities/contourSegmentation/isContourSegmentationAnnotation.d.ts +3 -0
- package/dist/cjs/utilities/contourSegmentation/isContourSegmentationAnnotation.js +8 -0
- package/dist/cjs/utilities/contourSegmentation/isContourSegmentationAnnotation.js.map +1 -0
- package/dist/cjs/utilities/contours/areCoplanarContours.d.ts +2 -0
- package/dist/cjs/utilities/contours/areCoplanarContours.js +19 -0
- package/dist/cjs/utilities/contours/areCoplanarContours.js.map +1 -0
- package/dist/cjs/utilities/contours/index.d.ts +2 -1
- package/dist/cjs/utilities/contours/index.js +3 -1
- package/dist/cjs/utilities/contours/index.js.map +1 -1
- package/dist/cjs/utilities/contours/reverseIfAntiClockwise.js +3 -22
- package/dist/cjs/utilities/contours/reverseIfAntiClockwise.js.map +1 -1
- package/dist/cjs/utilities/math/aabb/index.d.ts +1 -0
- package/dist/cjs/utilities/math/aabb/index.js +3 -1
- package/dist/cjs/utilities/math/aabb/index.js.map +1 -1
- package/dist/cjs/utilities/math/aabb/intersectAABB.d.ts +2 -0
- package/dist/cjs/utilities/math/aabb/intersectAABB.js +10 -0
- package/dist/cjs/utilities/math/aabb/intersectAABB.js.map +1 -0
- package/dist/cjs/utilities/math/point/distanceToPointSquared.js +4 -1
- package/dist/cjs/utilities/math/point/distanceToPointSquared.js.map +1 -1
- package/dist/cjs/utilities/math/polyline/areLineSegmentsIntersecting.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/areLineSegmentsIntersecting.js +59 -0
- package/dist/cjs/utilities/math/polyline/areLineSegmentsIntersecting.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/combinePolyline.d.ts +4 -0
- package/dist/cjs/utilities/math/polyline/combinePolyline.js +213 -0
- package/dist/cjs/utilities/math/polyline/combinePolyline.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/containsPoint.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/containsPoint.js +36 -0
- package/dist/cjs/utilities/math/polyline/containsPoint.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getAABB.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/getAABB.js +18 -0
- package/dist/cjs/utilities/math/polyline/getAABB.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getArea.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/{calculateAreaOfPoints.js → getArea.js} +3 -3
- package/dist/cjs/utilities/math/polyline/getArea.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getClosestLineSegmentIntersection.d.ts +5 -0
- package/dist/cjs/utilities/math/polyline/getClosestLineSegmentIntersection.js +51 -0
- package/dist/cjs/utilities/math/polyline/getClosestLineSegmentIntersection.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.js +28 -0
- package/dist/cjs/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.js +20 -0
- package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsIndexes.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsIndexes.js +22 -0
- package/dist/cjs/utilities/math/polyline/getLineSegmentIntersectionsIndexes.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getLineSegmentsIntersection.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/getLineSegmentsIntersection.js +21 -0
- package/dist/cjs/utilities/math/polyline/getLineSegmentsIntersection.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getNormal2.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/getNormal2.js +12 -0
- package/dist/cjs/utilities/math/polyline/getNormal2.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getNormal3.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/getNormal3.js +29 -0
- package/dist/cjs/utilities/math/polyline/getNormal3.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/getSignedArea.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/getSignedArea.js +20 -0
- package/dist/cjs/utilities/math/polyline/getSignedArea.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/index.d.ts +14 -3
- package/dist/cjs/utilities/math/polyline/index.js +28 -6
- package/dist/cjs/utilities/math/polyline/index.js.map +1 -1
- package/dist/cjs/utilities/math/polyline/intersectPolyline.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/intersectPolyline.js +20 -0
- package/dist/cjs/utilities/math/polyline/intersectPolyline.js.map +1 -0
- package/dist/cjs/utilities/math/polyline/isClosed.d.ts +2 -0
- package/dist/cjs/utilities/math/polyline/isClosed.js +39 -0
- package/dist/cjs/utilities/math/polyline/isClosed.js.map +1 -0
- package/dist/esm/eventListeners/annotations/annotationCompletedListener.js +9 -0
- package/dist/esm/eventListeners/annotations/annotationCompletedListener.js.map +1 -0
- package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js +153 -0
- package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map +1 -0
- package/dist/esm/eventListeners/annotations/contourSegmentation/index.js +2 -0
- package/dist/esm/eventListeners/annotations/contourSegmentation/index.js.map +1 -0
- package/dist/esm/eventListeners/annotations/index.js +2 -1
- package/dist/esm/eventListeners/annotations/index.js.map +1 -1
- package/dist/esm/eventListeners/index.js +2 -2
- package/dist/esm/eventListeners/index.js.map +1 -1
- package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js +61 -0
- package/dist/esm/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.js.map +1 -0
- package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js +5 -53
- package/dist/esm/eventListeners/segmentation/segmentationDataModifiedEventListener.js.map +1 -1
- package/dist/esm/init.js +3 -1
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/stateManagement/annotation/helpers/state.js +19 -1
- package/dist/esm/stateManagement/annotation/helpers/state.js.map +1 -1
- package/dist/esm/store/ToolGroupManager/ToolGroup.js +3 -0
- package/dist/esm/store/ToolGroupManager/ToolGroup.js.map +1 -1
- package/dist/esm/store/addTool.js +4 -0
- package/dist/esm/store/addTool.js.map +1 -1
- package/dist/esm/store/index.js +2 -2
- package/dist/esm/store/index.js.map +1 -1
- package/dist/esm/store/removeEnabledElement.js +1 -2
- package/dist/esm/store/removeEnabledElement.js.map +1 -1
- package/dist/esm/tools/AdvancedMagnifyTool.js +4 -11
- package/dist/esm/tools/AdvancedMagnifyTool.js.map +1 -1
- package/dist/esm/tools/annotation/AngleTool.js +6 -19
- package/dist/esm/tools/annotation/AngleTool.js.map +1 -1
- package/dist/esm/tools/annotation/ArrowAnnotateTool.js +10 -29
- package/dist/esm/tools/annotation/ArrowAnnotateTool.js.map +1 -1
- package/dist/esm/tools/annotation/BidirectionalTool.js +8 -23
- package/dist/esm/tools/annotation/BidirectionalTool.js.map +1 -1
- package/dist/esm/tools/annotation/CircleROITool.js +8 -23
- package/dist/esm/tools/annotation/CircleROITool.js.map +1 -1
- package/dist/esm/tools/annotation/CobbAngleTool.js +6 -19
- package/dist/esm/tools/annotation/CobbAngleTool.js.map +1 -1
- package/dist/esm/tools/annotation/EllipticalROITool.js +8 -23
- package/dist/esm/tools/annotation/EllipticalROITool.js.map +1 -1
- package/dist/esm/tools/annotation/KeyImageTool.js +6 -13
- package/dist/esm/tools/annotation/KeyImageTool.js.map +1 -1
- package/dist/esm/tools/annotation/LengthTool.js +6 -19
- package/dist/esm/tools/annotation/LengthTool.js.map +1 -1
- package/dist/esm/tools/annotation/LivewireContourTool.js +31 -23
- package/dist/esm/tools/annotation/LivewireContourTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js +11 -0
- package/dist/esm/tools/annotation/PlanarFreehandContourSegmentationTool.js.map +1 -1
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js +7 -23
- package/dist/esm/tools/annotation/PlanarFreehandROITool.js.map +1 -1
- package/dist/esm/tools/annotation/ProbeTool.js +9 -24
- package/dist/esm/tools/annotation/ProbeTool.js.map +1 -1
- package/dist/esm/tools/annotation/RectangleROITool.js +9 -23
- package/dist/esm/tools/annotation/RectangleROITool.js.map +1 -1
- package/dist/esm/tools/annotation/SplineROITool.js +26 -9
- package/dist/esm/tools/annotation/SplineROITool.js.map +1 -1
- package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js +6 -19
- package/dist/esm/tools/annotation/UltrasoundDirectionalTool.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js +7 -6
- package/dist/esm/tools/annotation/planarFreehandROITool/closedContourEditLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js +8 -5
- package/dist/esm/tools/annotation/planarFreehandROITool/drawLoop.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/editLoopCommon.js +8 -8
- package/dist/esm/tools/annotation/planarFreehandROITool/editLoopCommon.js.map +1 -1
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js +6 -5
- package/dist/esm/tools/annotation/planarFreehandROITool/openContourEditLoop.js.map +1 -1
- package/dist/esm/tools/base/ContourBaseTool.js.map +1 -1
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js +13 -1
- package/dist/esm/tools/base/ContourSegmentationBaseTool.js.map +1 -1
- package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js +4 -10
- package/dist/esm/tools/segmentation/RectangleROIStartEndThresholdTool.js.map +1 -1
- package/dist/esm/tools/segmentation/RectangleROIThresholdTool.js +4 -10
- package/dist/esm/tools/segmentation/RectangleROIThresholdTool.js.map +1 -1
- package/dist/esm/types/AnnotationRenderContext.js +2 -0
- package/dist/esm/types/AnnotationRenderContext.js.map +1 -0
- package/dist/esm/utilities/contourSegmentation/areSameSegment.js +9 -0
- package/dist/esm/utilities/contourSegmentation/areSameSegment.js.map +1 -0
- package/dist/esm/utilities/contourSegmentation/index.js +3 -0
- package/dist/esm/utilities/contourSegmentation/index.js.map +1 -0
- package/dist/esm/utilities/contourSegmentation/isContourSegmentationAnnotation.js +4 -0
- package/dist/esm/utilities/contourSegmentation/isContourSegmentationAnnotation.js.map +1 -0
- package/dist/esm/utilities/contours/areCoplanarContours.js +16 -0
- package/dist/esm/utilities/contours/areCoplanarContours.js.map +1 -0
- package/dist/esm/utilities/contours/index.js +2 -1
- package/dist/esm/utilities/contours/index.js.map +1 -1
- package/dist/esm/utilities/contours/reverseIfAntiClockwise.js +3 -22
- package/dist/esm/utilities/contours/reverseIfAntiClockwise.js.map +1 -1
- package/dist/esm/utilities/math/aabb/index.js +1 -0
- package/dist/esm/utilities/math/aabb/index.js.map +1 -1
- package/dist/esm/utilities/math/aabb/intersectAABB.js +7 -0
- package/dist/esm/utilities/math/aabb/intersectAABB.js.map +1 -0
- package/dist/esm/utilities/math/point/distanceToPointSquared.js +4 -1
- package/dist/esm/utilities/math/point/distanceToPointSquared.js.map +1 -1
- package/dist/esm/utilities/math/polyline/areLineSegmentsIntersecting.js +56 -0
- package/dist/esm/utilities/math/polyline/areLineSegmentsIntersecting.js.map +1 -0
- package/dist/esm/utilities/math/polyline/combinePolyline.js +187 -0
- package/dist/esm/utilities/math/polyline/combinePolyline.js.map +1 -0
- package/dist/esm/utilities/math/polyline/containsPoint.js +30 -0
- package/dist/esm/utilities/math/polyline/containsPoint.js.map +1 -0
- package/dist/esm/utilities/math/polyline/getAABB.js +15 -0
- package/dist/esm/utilities/math/polyline/getAABB.js.map +1 -0
- package/dist/esm/utilities/math/polyline/{calculateAreaOfPoints.js → getArea.js} +2 -2
- package/dist/esm/utilities/math/polyline/getArea.js.map +1 -0
- package/dist/esm/utilities/math/polyline/getClosestLineSegmentIntersection.js +45 -0
- package/dist/esm/utilities/math/polyline/getClosestLineSegmentIntersection.js.map +1 -0
- package/dist/esm/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.js +22 -0
- package/dist/esm/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.js.map +1 -0
- package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.js +14 -0
- package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.js.map +1 -0
- package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsIndexes.js +16 -0
- package/dist/esm/utilities/math/polyline/getLineSegmentIntersectionsIndexes.js.map +1 -0
- package/dist/esm/utilities/math/polyline/getLineSegmentsIntersection.js +18 -0
- package/dist/esm/utilities/math/polyline/getLineSegmentsIntersection.js.map +1 -0
- package/dist/esm/utilities/math/polyline/getNormal2.js +6 -0
- package/dist/esm/utilities/math/polyline/getNormal2.js.map +1 -0
- package/dist/esm/utilities/math/polyline/getNormal3.js +26 -0
- package/dist/esm/utilities/math/polyline/getNormal3.js.map +1 -0
- package/dist/esm/utilities/math/polyline/getSignedArea.js +17 -0
- package/dist/esm/utilities/math/polyline/getSignedArea.js.map +1 -0
- package/dist/esm/utilities/math/polyline/index.js +14 -3
- package/dist/esm/utilities/math/polyline/index.js.map +1 -1
- package/dist/esm/utilities/math/polyline/intersectPolyline.js +14 -0
- package/dist/esm/utilities/math/polyline/intersectPolyline.js.map +1 -0
- package/dist/esm/utilities/math/polyline/isClosed.js +13 -0
- package/dist/esm/utilities/math/polyline/isClosed.js.map +1 -0
- package/dist/types/eventListeners/annotations/annotationCompletedListener.d.ts +3 -0
- package/dist/types/eventListeners/annotations/annotationCompletedListener.d.ts.map +1 -0
- package/dist/types/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts +3 -0
- package/dist/types/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.d.ts.map +1 -0
- package/dist/types/eventListeners/annotations/contourSegmentation/index.d.ts +2 -0
- package/dist/types/eventListeners/annotations/contourSegmentation/index.d.ts.map +1 -0
- package/dist/types/eventListeners/annotations/index.d.ts +2 -1
- package/dist/types/eventListeners/annotations/index.d.ts.map +1 -1
- package/dist/types/eventListeners/index.d.ts +2 -2
- package/dist/types/eventListeners/index.d.ts.map +1 -1
- package/dist/types/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.d.ts +4 -0
- package/dist/types/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.d.ts.map +1 -0
- package/dist/types/eventListeners/segmentation/segmentationDataModifiedEventListener.d.ts.map +1 -1
- package/dist/types/init.d.ts.map +1 -1
- package/dist/types/stateManagement/annotation/helpers/state.d.ts +3 -1
- package/dist/types/stateManagement/annotation/helpers/state.d.ts.map +1 -1
- package/dist/types/store/ToolGroupManager/ToolGroup.d.ts +1 -0
- package/dist/types/store/ToolGroupManager/ToolGroup.d.ts.map +1 -1
- package/dist/types/store/addTool.d.ts +1 -0
- package/dist/types/store/addTool.d.ts.map +1 -1
- package/dist/types/store/index.d.ts +2 -2
- package/dist/types/store/index.d.ts.map +1 -1
- package/dist/types/store/removeEnabledElement.d.ts.map +1 -1
- package/dist/types/tools/AdvancedMagnifyTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/AngleTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/ArrowAnnotateTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/BidirectionalTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/CircleROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/CobbAngleTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/EllipticalROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/KeyImageTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/LengthTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/LivewireContourTool.d.ts +4 -1
- package/dist/types/tools/annotation/LivewireContourTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts +2 -1
- package/dist/types/tools/annotation/PlanarFreehandContourSegmentationTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts +2 -10
- package/dist/types/tools/annotation/PlanarFreehandROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/ProbeTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/RectangleROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/SplineROITool.d.ts +8 -9
- package/dist/types/tools/annotation/SplineROITool.d.ts.map +1 -1
- package/dist/types/tools/annotation/UltrasoundDirectionalTool.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/closedContourEditLoop.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/drawLoop.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/editLoopCommon.d.ts.map +1 -1
- package/dist/types/tools/annotation/planarFreehandROITool/openContourEditLoop.d.ts.map +1 -1
- package/dist/types/tools/base/ContourBaseTool.d.ts +2 -8
- package/dist/types/tools/base/ContourBaseTool.d.ts.map +1 -1
- package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts +3 -2
- package/dist/types/tools/base/ContourSegmentationBaseTool.d.ts.map +1 -1
- package/dist/types/tools/segmentation/RectangleROIStartEndThresholdTool.d.ts.map +1 -1
- package/dist/types/tools/segmentation/RectangleROIThresholdTool.d.ts.map +1 -1
- package/dist/types/types/AnnotationRenderContext.d.ts +12 -0
- package/dist/types/types/AnnotationRenderContext.d.ts.map +1 -0
- package/dist/types/types/IToolGroup.d.ts +2 -1
- package/dist/types/types/IToolGroup.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +2 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utilities/contourSegmentation/areSameSegment.d.ts +3 -0
- package/dist/types/utilities/contourSegmentation/areSameSegment.d.ts.map +1 -0
- package/dist/types/utilities/contourSegmentation/index.d.ts +3 -0
- package/dist/types/utilities/contourSegmentation/index.d.ts.map +1 -0
- package/dist/types/utilities/contourSegmentation/isContourSegmentationAnnotation.d.ts +4 -0
- package/dist/types/utilities/contourSegmentation/isContourSegmentationAnnotation.d.ts.map +1 -0
- package/dist/types/utilities/contours/areCoplanarContours.d.ts +3 -0
- package/dist/types/utilities/contours/areCoplanarContours.d.ts.map +1 -0
- package/dist/types/utilities/contours/index.d.ts +2 -1
- package/dist/types/utilities/contours/index.d.ts.map +1 -1
- package/dist/types/utilities/contours/reverseIfAntiClockwise.d.ts.map +1 -1
- package/dist/types/utilities/math/aabb/index.d.ts +1 -0
- package/dist/types/utilities/math/aabb/index.d.ts.map +1 -1
- package/dist/types/utilities/math/aabb/intersectAABB.d.ts +3 -0
- package/dist/types/utilities/math/aabb/intersectAABB.d.ts.map +1 -0
- package/dist/types/utilities/math/point/distanceToPointSquared.d.ts.map +1 -1
- package/dist/types/utilities/math/polyline/areLineSegmentsIntersecting.d.ts +3 -0
- package/dist/types/utilities/math/polyline/areLineSegmentsIntersecting.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/combinePolyline.d.ts +5 -0
- package/dist/types/utilities/math/polyline/combinePolyline.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/containsPoint.d.ts +3 -0
- package/dist/types/utilities/math/polyline/containsPoint.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getAABB.d.ts +3 -0
- package/dist/types/utilities/math/polyline/getAABB.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getArea.d.ts +3 -0
- package/dist/types/utilities/math/polyline/getArea.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getClosestLineSegmentIntersection.d.ts +6 -0
- package/dist/types/utilities/math/polyline/getClosestLineSegmentIntersection.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.d.ts +3 -0
- package/dist/types/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.d.ts +3 -0
- package/dist/types/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getLineSegmentIntersectionsIndexes.d.ts +3 -0
- package/dist/types/utilities/math/polyline/getLineSegmentIntersectionsIndexes.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getLineSegmentsIntersection.d.ts +3 -0
- package/dist/types/utilities/math/polyline/getLineSegmentsIntersection.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getNormal2.d.ts +3 -0
- package/dist/types/utilities/math/polyline/getNormal2.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getNormal3.d.ts +3 -0
- package/dist/types/utilities/math/polyline/getNormal3.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/getSignedArea.d.ts +3 -0
- package/dist/types/utilities/math/polyline/getSignedArea.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/index.d.ts +14 -3
- package/dist/types/utilities/math/polyline/index.d.ts.map +1 -1
- package/dist/types/utilities/math/polyline/intersectPolyline.d.ts +3 -0
- package/dist/types/utilities/math/polyline/intersectPolyline.d.ts.map +1 -0
- package/dist/types/utilities/math/polyline/isClosed.d.ts +3 -0
- package/dist/types/utilities/math/polyline/isClosed.d.ts.map +1 -0
- package/dist/umd/index.js +1 -2
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/src/eventListeners/annotations/annotationCompletedListener.ts +13 -0
- package/src/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.ts +273 -0
- package/src/eventListeners/annotations/contourSegmentation/index.ts +1 -0
- package/src/eventListeners/annotations/index.ts +6 -1
- package/src/eventListeners/index.ts +2 -0
- package/src/eventListeners/segmentation/labelmap/onLabelmapSegmentationDataModified.ts +117 -0
- package/src/eventListeners/segmentation/segmentationDataModifiedEventListener.ts +5 -99
- package/src/init.ts +12 -1
- package/src/stateManagement/annotation/helpers/state.ts +42 -2
- package/src/store/ToolGroupManager/ToolGroup.ts +10 -0
- package/src/store/addTool.ts +11 -0
- package/src/store/index.ts +2 -1
- package/src/store/removeEnabledElement.ts +2 -1
- package/src/tools/AdvancedMagnifyTool.ts +4 -21
- package/src/tools/annotation/AngleTool.ts +8 -32
- package/src/tools/annotation/ArrowAnnotateTool.ts +12 -45
- package/src/tools/annotation/BidirectionalTool.ts +11 -39
- package/src/tools/annotation/CircleROITool.ts +10 -34
- package/src/tools/annotation/CobbAngleTool.ts +9 -32
- package/src/tools/annotation/EllipticalROITool.ts +10 -34
- package/src/tools/annotation/KeyImageTool.ts +9 -23
- package/src/tools/annotation/LengthTool.ts +9 -33
- package/src/tools/annotation/LivewireContourTool.ts +58 -33
- package/src/tools/annotation/PlanarFreehandContourSegmentationTool.ts +22 -1
- package/src/tools/annotation/PlanarFreehandROITool.ts +10 -53
- package/src/tools/annotation/ProbeTool.ts +11 -36
- package/src/tools/annotation/RectangleROITool.ts +11 -33
- package/src/tools/annotation/SplineROITool.ts +53 -24
- package/src/tools/annotation/UltrasoundDirectionalTool.ts +8 -29
- package/src/tools/annotation/planarFreehandROITool/closedContourEditLoop.ts +9 -11
- package/src/tools/annotation/planarFreehandROITool/drawLoop.ts +8 -5
- package/src/tools/annotation/planarFreehandROITool/editLoopCommon.ts +9 -8
- package/src/tools/annotation/planarFreehandROITool/openContourEditLoop.ts +7 -6
- package/src/tools/base/ContourBaseTool.ts +5 -8
- package/src/tools/base/ContourSegmentationBaseTool.ts +29 -6
- package/src/tools/segmentation/RectangleROIStartEndThresholdTool.ts +3 -13
- package/src/tools/segmentation/RectangleROIThresholdTool.ts +3 -14
- package/src/types/AnnotationRenderContext.ts +13 -0
- package/src/types/IToolGroup.ts +3 -1
- package/src/types/index.ts +3 -0
- package/src/utilities/contourSegmentation/areSameSegment.ts +24 -0
- package/src/utilities/contourSegmentation/index.ts +2 -0
- package/src/utilities/contourSegmentation/isContourSegmentationAnnotation.ts +8 -0
- package/src/utilities/contours/areCoplanarContours.ts +39 -0
- package/src/utilities/contours/index.ts +2 -0
- package/src/utilities/contours/reverseIfAntiClockwise.ts +6 -25
- package/src/utilities/math/aabb/index.ts +1 -0
- package/src/utilities/math/aabb/intersectAABB.ts +19 -0
- package/src/utilities/math/point/distanceToPointSquared.ts +6 -1
- package/src/utilities/math/polyline/areLineSegmentsIntersecting.ts +118 -0
- package/src/utilities/math/polyline/combinePolyline.ts +350 -0
- package/src/utilities/math/polyline/containsPoint.ts +63 -0
- package/src/utilities/math/polyline/getAABB.ts +20 -0
- package/src/utilities/math/polyline/{calculateAreaOfPoints.ts → getArea.ts} +1 -1
- package/src/utilities/math/polyline/getClosestLineSegmentIntersection.ts +72 -0
- package/src/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.ts +42 -0
- package/src/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.ts +30 -0
- package/src/utilities/math/polyline/getLineSegmentIntersectionsIndexes.ts +35 -0
- package/src/utilities/math/polyline/getLineSegmentsIntersection.ts +47 -0
- package/src/utilities/math/polyline/getNormal2.ts +17 -0
- package/src/utilities/math/polyline/getNormal3.ts +53 -0
- package/src/utilities/math/polyline/getSignedArea.ts +47 -0
- package/src/utilities/math/polyline/index.ts +27 -8
- package/src/utilities/math/polyline/intersectPolyline.ts +34 -0
- package/src/utilities/math/polyline/isClosed.ts +26 -0
- package/dist/cjs/utilities/math/polyline/calculateAreaOfPoints.d.ts +0 -2
- package/dist/cjs/utilities/math/polyline/calculateAreaOfPoints.js.map +0 -1
- package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.d.ts +0 -9
- package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.js +0 -160
- package/dist/cjs/utilities/math/polyline/getIntersectionWithPolyline.js.map +0 -1
- package/dist/cjs/utilities/math/polyline/pointInPolyline.d.ts +0 -2
- package/dist/cjs/utilities/math/polyline/pointInPolyline.js +0 -15
- package/dist/cjs/utilities/math/polyline/pointInPolyline.js.map +0 -1
- package/dist/esm/utilities/math/polyline/calculateAreaOfPoints.js.map +0 -1
- package/dist/esm/utilities/math/polyline/getIntersectionWithPolyline.js +0 -154
- package/dist/esm/utilities/math/polyline/getIntersectionWithPolyline.js.map +0 -1
- package/dist/esm/utilities/math/polyline/pointInPolyline.js +0 -12
- package/dist/esm/utilities/math/polyline/pointInPolyline.js.map +0 -1
- package/dist/types/utilities/math/polyline/calculateAreaOfPoints.d.ts +0 -3
- package/dist/types/utilities/math/polyline/calculateAreaOfPoints.d.ts.map +0 -1
- package/dist/types/utilities/math/polyline/getIntersectionWithPolyline.d.ts +0 -10
- package/dist/types/utilities/math/polyline/getIntersectionWithPolyline.d.ts.map +0 -1
- package/dist/types/utilities/math/polyline/pointInPolyline.d.ts +0 -3
- package/dist/types/utilities/math/polyline/pointInPolyline.d.ts.map +0 -1
- package/dist/umd/index.js.LICENSE.txt +0 -6
- package/src/utilities/math/polyline/getIntersectionWithPolyline.ts +0 -275
- package/src/utilities/math/polyline/pointInPolyline.ts +0 -19
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const gl_matrix_1 = require("gl-matrix");
|
|
7
|
+
const areLineSegmentsIntersecting_1 = __importDefault(require("./areLineSegmentsIntersecting"));
|
|
8
|
+
function getClosestLineSegmentIntersection(points, p1, q1, closed = true) {
|
|
9
|
+
let initialQ2Index;
|
|
10
|
+
let p2Index;
|
|
11
|
+
if (closed) {
|
|
12
|
+
p2Index = points.length - 1;
|
|
13
|
+
initialQ2Index = 0;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
p2Index = 0;
|
|
17
|
+
initialQ2Index = 1;
|
|
18
|
+
}
|
|
19
|
+
const intersections = [];
|
|
20
|
+
for (let q2Index = initialQ2Index; q2Index < points.length; q2Index++) {
|
|
21
|
+
const p2 = points[p2Index];
|
|
22
|
+
const q2 = points[q2Index];
|
|
23
|
+
if ((0, areLineSegmentsIntersecting_1.default)(p1, q1, p2, q2)) {
|
|
24
|
+
intersections.push([p2Index, q2Index]);
|
|
25
|
+
}
|
|
26
|
+
p2Index = q2Index;
|
|
27
|
+
}
|
|
28
|
+
if (intersections.length === 0) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const distances = [];
|
|
32
|
+
intersections.forEach((intersection) => {
|
|
33
|
+
const intersectionPoints = [
|
|
34
|
+
points[intersection[0]],
|
|
35
|
+
points[intersection[1]],
|
|
36
|
+
];
|
|
37
|
+
const midpoint = [
|
|
38
|
+
(intersectionPoints[0][0] + intersectionPoints[1][0]) / 2,
|
|
39
|
+
(intersectionPoints[0][1] + intersectionPoints[1][1]) / 2,
|
|
40
|
+
];
|
|
41
|
+
distances.push(gl_matrix_1.vec2.distance(midpoint, p1));
|
|
42
|
+
});
|
|
43
|
+
const minDistance = Math.min(...distances);
|
|
44
|
+
const indexOfMinDistance = distances.indexOf(minDistance);
|
|
45
|
+
return {
|
|
46
|
+
segment: intersections[indexOfMinDistance],
|
|
47
|
+
distance: minDistance,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
exports.default = getClosestLineSegmentIntersection;
|
|
51
|
+
//# sourceMappingURL=getClosestLineSegmentIntersection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getClosestLineSegmentIntersection.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getClosestLineSegmentIntersection.ts"],"names":[],"mappings":";;;;;AAAA,yCAAiC;AAEjC,gGAAwE;AAWxE,SAAwB,iCAAiC,CACvD,MAAsB,EACtB,EAAgB,EAChB,EAAgB,EAChB,MAAM,GAAG,IAAI;IAEb,IAAI,cAAc,CAAC;IACnB,IAAI,OAAO,CAAC;IAEZ,IAAI,MAAM,EAAE;QACV,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,cAAc,GAAG,CAAC,CAAC;KACpB;SAAM;QACL,OAAO,GAAG,CAAC,CAAC;QACZ,cAAc,GAAG,CAAC,CAAC;KACpB;IAED,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,KAAK,IAAI,OAAO,GAAG,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QACrE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,IAAA,qCAA2B,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;YAC/C,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;SACxC;QAED,OAAO,GAAG,OAAO,CAAC;KACnB;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,OAAO;KACR;IAGD,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QACrC,MAAM,kBAAkB,GAAG;YACzB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;SACxB,CAAC;QAEF,MAAM,QAAQ,GAAG;YACf,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACzD,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;SAC1D,CAAC;QAEF,SAAS,CAAC,IAAI,CAAC,gBAAI,CAAC,QAAQ,CAAO,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAC3C,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE1D,OAAO;QACL,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC;QAC1C,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC;AA1DD,oDA0DC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const areLineSegmentsIntersecting_1 = __importDefault(require("./areLineSegmentsIntersecting"));
|
|
7
|
+
function getFirstLineSegmentIntersectionIndexes(points, p1, q1, closed = true) {
|
|
8
|
+
let initialI;
|
|
9
|
+
let j;
|
|
10
|
+
if (closed) {
|
|
11
|
+
j = points.length - 1;
|
|
12
|
+
initialI = 0;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
j = 0;
|
|
16
|
+
initialI = 1;
|
|
17
|
+
}
|
|
18
|
+
for (let i = initialI; i < points.length; i++) {
|
|
19
|
+
const p2 = points[j];
|
|
20
|
+
const q2 = points[i];
|
|
21
|
+
if ((0, areLineSegmentsIntersecting_1.default)(p1, q1, p2, q2)) {
|
|
22
|
+
return [j, i];
|
|
23
|
+
}
|
|
24
|
+
j = i;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.default = getFirstLineSegmentIntersectionIndexes;
|
|
28
|
+
//# sourceMappingURL=getFirstLineSegmentIntersectionIndexes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFirstLineSegmentIntersectionIndexes.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getFirstLineSegmentIntersectionIndexes.ts"],"names":[],"mappings":";;;;;AACA,gGAAwE;AAaxE,SAAwB,sCAAsC,CAC5D,MAAsB,EACtB,EAAgB,EAChB,EAAgB,EAChB,MAAM,GAAG,IAAI;IAEb,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC,CAAC;IAEN,IAAI,MAAM,EAAE;QACV,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,QAAQ,GAAG,CAAC,CAAC;KACd;SAAM;QACL,CAAC,GAAG,CAAC,CAAC;QACN,QAAQ,GAAG,CAAC,CAAC;KACd;IAED,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,IAAA,qCAA2B,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;YAC/C,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACf;QAED,CAAC,GAAG,CAAC,CAAC;KACP;AACH,CAAC;AA3BD,yDA2BC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const getLineSegmentIntersectionsIndexes_1 = __importDefault(require("./getLineSegmentIntersectionsIndexes"));
|
|
7
|
+
const getLineSegmentsIntersection_1 = __importDefault(require("./getLineSegmentsIntersection"));
|
|
8
|
+
function getLineSegmentIntersectionsCoordinates(points, p1, q1, closed = true) {
|
|
9
|
+
const result = [];
|
|
10
|
+
const polylineIndexes = (0, getLineSegmentIntersectionsIndexes_1.default)(points, p1, q1, closed);
|
|
11
|
+
for (let i = 0; i < polylineIndexes.length; i++) {
|
|
12
|
+
const p2 = points[polylineIndexes[i][0]];
|
|
13
|
+
const q2 = points[polylineIndexes[i][1]];
|
|
14
|
+
const intersection = (0, getLineSegmentsIntersection_1.default)(p1, q1, p2, q2);
|
|
15
|
+
result.push(intersection);
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
exports.default = getLineSegmentIntersectionsCoordinates;
|
|
20
|
+
//# sourceMappingURL=getLineSegmentIntersectionsCoordinates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLineSegmentIntersectionsCoordinates.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getLineSegmentIntersectionsCoordinates.ts"],"names":[],"mappings":";;;;;AACA,8GAAsF;AACtF,gGAAwE;AAKxE,SAAwB,sCAAsC,CAC5D,MAAsB,EACtB,EAAgB,EAChB,EAAgB,EAChB,MAAM,GAAG,IAAI;IAEb,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,eAAe,GAAG,IAAA,4CAAkC,EACxD,MAAM,EACN,EAAE,EACF,EAAE,EACF,MAAM,CACP,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,IAAA,qCAA2B,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC3B;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAtBD,yDAsBC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const areLineSegmentsIntersecting_1 = __importDefault(require("./areLineSegmentsIntersecting"));
|
|
7
|
+
function getLineSegmentIntersectionsIndexes(polyline, p1, q1, closed = true) {
|
|
8
|
+
const intersections = [];
|
|
9
|
+
const numPoints = polyline.length;
|
|
10
|
+
const maxI = numPoints - (closed ? 1 : 2);
|
|
11
|
+
for (let i = 0; i <= maxI; i++) {
|
|
12
|
+
const p2 = polyline[i];
|
|
13
|
+
const j = i === numPoints - 1 ? 0 : i + 1;
|
|
14
|
+
const q2 = polyline[j];
|
|
15
|
+
if ((0, areLineSegmentsIntersecting_1.default)(p1, q1, p2, q2)) {
|
|
16
|
+
intersections.push([i, j]);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return intersections;
|
|
20
|
+
}
|
|
21
|
+
exports.default = getLineSegmentIntersectionsIndexes;
|
|
22
|
+
//# sourceMappingURL=getLineSegmentIntersectionsIndexes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLineSegmentIntersectionsIndexes.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getLineSegmentIntersectionsIndexes.ts"],"names":[],"mappings":";;;;;AACA,gGAAwE;AAWxE,SAAwB,kCAAkC,CACxD,QAAwB,EACxB,EAAgB,EAChB,EAAgB,EAChB,MAAM,GAAG,IAAI;IAEb,MAAM,aAAa,GAAmB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;IAClC,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEvB,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,IAAA,qCAA2B,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;YAC/C,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC5B;KACF;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAtBD,qDAsBC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function getLineSegmentsIntersection(p1, q1, p2, q2) {
|
|
4
|
+
const diffQ1P1 = [q1[0] - p1[0], q1[1] - p1[1]];
|
|
5
|
+
const diffQ2P2 = [q2[0] - p2[0], q2[1] - p2[1]];
|
|
6
|
+
const denominator = diffQ2P2[1] * diffQ1P1[0] - diffQ2P2[0] * diffQ1P1[1];
|
|
7
|
+
if (denominator == 0) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
let a = p1[1] - p2[1];
|
|
11
|
+
let b = p1[0] - p2[0];
|
|
12
|
+
const numerator1 = diffQ2P2[0] * a - diffQ2P2[1] * b;
|
|
13
|
+
const numerator2 = diffQ1P1[0] * a - diffQ1P1[1] * b;
|
|
14
|
+
a = numerator1 / denominator;
|
|
15
|
+
b = numerator2 / denominator;
|
|
16
|
+
const resultX = p1[0] + a * diffQ1P1[0];
|
|
17
|
+
const resultY = p1[1] + a * diffQ1P1[1];
|
|
18
|
+
return [resultX, resultY];
|
|
19
|
+
}
|
|
20
|
+
exports.default = getLineSegmentsIntersection;
|
|
21
|
+
//# sourceMappingURL=getLineSegmentsIntersection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLineSegmentsIntersection.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getLineSegmentsIntersection.ts"],"names":[],"mappings":";;AAqBA,SAAwB,2BAA2B,CACjD,EAAgB,EAChB,EAAgB,EAChB,EAAgB,EAChB,EAAgB;IAEhB,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE1E,IAAI,WAAW,IAAI,CAAC,EAAE;QACpB,OAAO;KACR;IAED,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7B,CAAC,GAAG,UAAU,GAAG,WAAW,CAAC;IAE7B,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAzBD,8CAyBC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const getSignedArea_1 = __importDefault(require("./getSignedArea"));
|
|
7
|
+
function getNormal2(polyline) {
|
|
8
|
+
const area = (0, getSignedArea_1.default)(polyline);
|
|
9
|
+
return [0, 0, area / Math.abs(area)];
|
|
10
|
+
}
|
|
11
|
+
exports.default = getNormal2;
|
|
12
|
+
//# sourceMappingURL=getNormal2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getNormal2.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getNormal2.ts"],"names":[],"mappings":";;;;;AACA,oEAA4C;AAS5C,SAAwB,UAAU,CAAC,QAAwB;IACzD,MAAM,IAAI,GAAG,IAAA,uBAAa,EAAC,QAAQ,CAAC,CAAC;IAIrC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAiB,CAAC;AACvD,CAAC;AAND,6BAMC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const gl_matrix_1 = require("gl-matrix");
|
|
4
|
+
function _getAreaVector(polyline) {
|
|
5
|
+
const vecArea = gl_matrix_1.vec3.create();
|
|
6
|
+
const refPoint = polyline[0];
|
|
7
|
+
for (let i = 0, len = polyline.length; i < len; i++) {
|
|
8
|
+
const p1 = polyline[i];
|
|
9
|
+
const p2Index = i === len - 1 ? 0 : i + 1;
|
|
10
|
+
const p2 = polyline[p2Index];
|
|
11
|
+
const aX = p1[0] - refPoint[0];
|
|
12
|
+
const aY = p1[1] - refPoint[1];
|
|
13
|
+
const aZ = p1[2] - refPoint[2];
|
|
14
|
+
const bX = p2[0] - refPoint[0];
|
|
15
|
+
const bY = p2[1] - refPoint[1];
|
|
16
|
+
const bZ = p2[2] - refPoint[2];
|
|
17
|
+
vecArea[0] += aY * bZ - aZ * bY;
|
|
18
|
+
vecArea[1] += aZ * bX - aX * bZ;
|
|
19
|
+
vecArea[2] += aX * bY - aY * bX;
|
|
20
|
+
}
|
|
21
|
+
gl_matrix_1.vec3.scale(vecArea, vecArea, 0.5);
|
|
22
|
+
return vecArea;
|
|
23
|
+
}
|
|
24
|
+
function getNormal3(polyline) {
|
|
25
|
+
const vecArea = _getAreaVector(polyline);
|
|
26
|
+
return gl_matrix_1.vec3.normalize(vecArea, vecArea);
|
|
27
|
+
}
|
|
28
|
+
exports.default = getNormal3;
|
|
29
|
+
//# sourceMappingURL=getNormal3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getNormal3.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getNormal3.ts"],"names":[],"mappings":";;AAAA,yCAAiC;AAGjC,SAAS,cAAc,CAAC,QAAwB;IAC9C,MAAM,OAAO,GAAG,gBAAI,CAAC,MAAM,EAAE,CAAC;IAG9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAU7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QACnD,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEvB,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE7B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAG/B,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;KACjC;IAGD,gBAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAGlC,OAAqB,OAAO,CAAC;AAC/B,CAAC;AAOD,SAAwB,UAAU,CAAC,QAAwB;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO,gBAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAiB,CAAC;AAC1D,CAAC;AAJD,6BAIC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function getSignedArea(polyline) {
|
|
4
|
+
const refPoint = polyline[0];
|
|
5
|
+
let area = 0;
|
|
6
|
+
for (let i = 0, len = polyline.length; i < len; i++) {
|
|
7
|
+
const p1 = polyline[i];
|
|
8
|
+
const p2Index = i === len - 1 ? 0 : i + 1;
|
|
9
|
+
const p2 = polyline[p2Index];
|
|
10
|
+
const aX = p1[0] - refPoint[0];
|
|
11
|
+
const aY = p1[1] - refPoint[1];
|
|
12
|
+
const bX = p2[0] - refPoint[0];
|
|
13
|
+
const bY = p2[1] - refPoint[1];
|
|
14
|
+
area += aX * bY - aY * bX;
|
|
15
|
+
}
|
|
16
|
+
area *= 0.5;
|
|
17
|
+
return area;
|
|
18
|
+
}
|
|
19
|
+
exports.default = getSignedArea;
|
|
20
|
+
//# sourceMappingURL=getSignedArea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSignedArea.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/getSignedArea.ts"],"names":[],"mappings":";;AAcA,SAAwB,aAAa,CAAC,QAAwB;IAE5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,IAAI,GAAG,CAAC,CAAC;IAUb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QACnD,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEvB,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAI/B,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;KAC3B;IAGD,IAAI,IAAI,GAAG,CAAC;IAEZ,OAAO,IAAI,CAAC;AACd,CAAC;AAhCD,gCAgCC"}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import isClosed from './isClosed';
|
|
2
|
+
import containsPoint from './containsPoint';
|
|
3
|
+
import getAABB from './getAABB';
|
|
4
|
+
import getArea from './getArea';
|
|
5
|
+
import getSignedArea from './getSignedArea';
|
|
6
|
+
import getNormal3 from './getNormal3';
|
|
7
|
+
import getNormal2 from './getNormal2';
|
|
8
|
+
import { mergePolylines, subtractPolylines } from './combinePolyline';
|
|
9
|
+
import intersectPolyline from './intersectPolyline';
|
|
10
|
+
import getFirstLineSegmentIntersectionIndexes from './getFirstLineSegmentIntersectionIndexes';
|
|
11
|
+
import getLineSegmentIntersectionsIndexes from './getLineSegmentIntersectionsIndexes';
|
|
12
|
+
import getLineSegmentIntersectionsCoordinates from './getLineSegmentIntersectionsCoordinates';
|
|
13
|
+
import getClosestLineSegmentIntersection from './getClosestLineSegmentIntersection';
|
|
2
14
|
import getSubPixelSpacingAndXYDirections from './getSubPixelSpacingAndXYDirections';
|
|
3
15
|
import pointsAreWithinCloseContourProximity from './pointsAreWithinCloseContourProximity';
|
|
4
16
|
import addCanvasPointsToArray from './addCanvasPointsToArray';
|
|
5
17
|
import pointCanProjectOnLine from './pointCanProjectOnLine';
|
|
6
|
-
|
|
7
|
-
export { getFirstIntersectionWithPolyline, getClosestIntersectionWithPolyline, getSubPixelSpacingAndXYDirections, pointsAreWithinCloseContourProximity, addCanvasPointsToArray, pointCanProjectOnLine, calculateAreaOfPoints, };
|
|
18
|
+
export { isClosed, containsPoint, getAABB, getArea, getSignedArea, getNormal3, getNormal2, intersectPolyline, getFirstLineSegmentIntersectionIndexes, getLineSegmentIntersectionsIndexes, getLineSegmentIntersectionsCoordinates, getClosestLineSegmentIntersection, getSubPixelSpacingAndXYDirections, pointsAreWithinCloseContourProximity, addCanvasPointsToArray, pointCanProjectOnLine, mergePolylines, subtractPolylines, };
|
|
@@ -3,10 +3,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
exports.subtractPolylines = exports.mergePolylines = exports.pointCanProjectOnLine = exports.addCanvasPointsToArray = exports.pointsAreWithinCloseContourProximity = exports.getSubPixelSpacingAndXYDirections = exports.getClosestLineSegmentIntersection = exports.getLineSegmentIntersectionsCoordinates = exports.getLineSegmentIntersectionsIndexes = exports.getFirstLineSegmentIntersectionIndexes = exports.intersectPolyline = exports.getNormal2 = exports.getNormal3 = exports.getSignedArea = exports.getArea = exports.getAABB = exports.containsPoint = exports.isClosed = void 0;
|
|
7
|
+
const isClosed_1 = __importDefault(require("./isClosed"));
|
|
8
|
+
exports.isClosed = isClosed_1.default;
|
|
9
|
+
const containsPoint_1 = __importDefault(require("./containsPoint"));
|
|
10
|
+
exports.containsPoint = containsPoint_1.default;
|
|
11
|
+
const getAABB_1 = __importDefault(require("./getAABB"));
|
|
12
|
+
exports.getAABB = getAABB_1.default;
|
|
13
|
+
const getArea_1 = __importDefault(require("./getArea"));
|
|
14
|
+
exports.getArea = getArea_1.default;
|
|
15
|
+
const getSignedArea_1 = __importDefault(require("./getSignedArea"));
|
|
16
|
+
exports.getSignedArea = getSignedArea_1.default;
|
|
17
|
+
const getNormal3_1 = __importDefault(require("./getNormal3"));
|
|
18
|
+
exports.getNormal3 = getNormal3_1.default;
|
|
19
|
+
const getNormal2_1 = __importDefault(require("./getNormal2"));
|
|
20
|
+
exports.getNormal2 = getNormal2_1.default;
|
|
21
|
+
const combinePolyline_1 = require("./combinePolyline");
|
|
22
|
+
Object.defineProperty(exports, "mergePolylines", { enumerable: true, get: function () { return combinePolyline_1.mergePolylines; } });
|
|
23
|
+
Object.defineProperty(exports, "subtractPolylines", { enumerable: true, get: function () { return combinePolyline_1.subtractPolylines; } });
|
|
24
|
+
const intersectPolyline_1 = __importDefault(require("./intersectPolyline"));
|
|
25
|
+
exports.intersectPolyline = intersectPolyline_1.default;
|
|
26
|
+
const getFirstLineSegmentIntersectionIndexes_1 = __importDefault(require("./getFirstLineSegmentIntersectionIndexes"));
|
|
27
|
+
exports.getFirstLineSegmentIntersectionIndexes = getFirstLineSegmentIntersectionIndexes_1.default;
|
|
28
|
+
const getLineSegmentIntersectionsIndexes_1 = __importDefault(require("./getLineSegmentIntersectionsIndexes"));
|
|
29
|
+
exports.getLineSegmentIntersectionsIndexes = getLineSegmentIntersectionsIndexes_1.default;
|
|
30
|
+
const getLineSegmentIntersectionsCoordinates_1 = __importDefault(require("./getLineSegmentIntersectionsCoordinates"));
|
|
31
|
+
exports.getLineSegmentIntersectionsCoordinates = getLineSegmentIntersectionsCoordinates_1.default;
|
|
32
|
+
const getClosestLineSegmentIntersection_1 = __importDefault(require("./getClosestLineSegmentIntersection"));
|
|
33
|
+
exports.getClosestLineSegmentIntersection = getClosestLineSegmentIntersection_1.default;
|
|
10
34
|
const getSubPixelSpacingAndXYDirections_1 = __importDefault(require("./getSubPixelSpacingAndXYDirections"));
|
|
11
35
|
exports.getSubPixelSpacingAndXYDirections = getSubPixelSpacingAndXYDirections_1.default;
|
|
12
36
|
const pointsAreWithinCloseContourProximity_1 = __importDefault(require("./pointsAreWithinCloseContourProximity"));
|
|
@@ -15,6 +39,4 @@ const addCanvasPointsToArray_1 = __importDefault(require("./addCanvasPointsToArr
|
|
|
15
39
|
exports.addCanvasPointsToArray = addCanvasPointsToArray_1.default;
|
|
16
40
|
const pointCanProjectOnLine_1 = __importDefault(require("./pointCanProjectOnLine"));
|
|
17
41
|
exports.pointCanProjectOnLine = pointCanProjectOnLine_1.default;
|
|
18
|
-
const calculateAreaOfPoints_1 = __importDefault(require("./calculateAreaOfPoints"));
|
|
19
|
-
exports.calculateAreaOfPoints = calculateAreaOfPoints_1.default;
|
|
20
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/index.ts"],"names":[],"mappings":";;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/index.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;AAmBhC,mBAnBK,kBAAQ,CAmBL;AAlBV,oEAA4C;AAmB1C,wBAnBK,uBAAa,CAmBL;AAlBf,wDAAgC;AAmB9B,kBAnBK,iBAAO,CAmBL;AAlBT,wDAAgC;AAmB9B,kBAnBK,iBAAO,CAmBL;AAlBT,oEAA4C;AAmB1C,wBAnBK,uBAAa,CAmBL;AAlBf,8DAAsC;AAmBpC,qBAnBK,oBAAU,CAmBL;AAlBZ,8DAAsC;AAmBpC,qBAnBK,oBAAU,CAmBL;AAlBZ,uDAAsE;AA4BpE,+FA5BO,gCAAc,OA4BP;AACd,kGA7BuB,mCAAiB,OA6BvB;AA5BnB,4EAAoD;AAkBlD,4BAlBK,2BAAiB,CAkBL;AAjBnB,sHAA8F;AAkB5F,iDAlBK,gDAAsC,CAkBL;AAjBxC,8GAAsF;AAkBpF,6CAlBK,4CAAkC,CAkBL;AAjBpC,sHAA8F;AAkB5F,iDAlBK,gDAAsC,CAkBL;AAjBxC,4GAAoF;AAkBlF,4CAlBK,2CAAiC,CAkBL;AAjBnC,4GAAoF;AAkBlF,4CAlBK,2CAAiC,CAkBL;AAjBnC,kHAA0F;AAkBxF,+CAlBK,8CAAoC,CAkBL;AAjBtC,sFAA8D;AAkB5D,iCAlBK,gCAAsB,CAkBL;AAjBxB,oFAA4D;AAkB1D,gCAlBK,+BAAqB,CAkBL"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const getFirstLineSegmentIntersectionIndexes_1 = __importDefault(require("./getFirstLineSegmentIntersectionIndexes"));
|
|
7
|
+
function intersectPolyline(sourcePolyline, targetPolyline) {
|
|
8
|
+
for (let i = 0, sourceLen = sourcePolyline.length; i < sourceLen; i++) {
|
|
9
|
+
const sourceP1 = sourcePolyline[i];
|
|
10
|
+
const sourceP2Index = i === sourceLen - 1 ? 0 : i + 1;
|
|
11
|
+
const sourceP2 = sourcePolyline[sourceP2Index];
|
|
12
|
+
const intersectionPointIndexes = (0, getFirstLineSegmentIntersectionIndexes_1.default)(targetPolyline, sourceP1, sourceP2);
|
|
13
|
+
if ((intersectionPointIndexes === null || intersectionPointIndexes === void 0 ? void 0 : intersectionPointIndexes.length) === 2) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
exports.default = intersectPolyline;
|
|
20
|
+
//# sourceMappingURL=intersectPolyline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intersectPolyline.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/intersectPolyline.ts"],"names":[],"mappings":";;;;;AACA,sHAA8F;AAQ9F,SAAwB,iBAAiB,CACvC,cAA8B,EAC9B,cAA8B;IAK9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;QACrE,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,aAAa,GAAG,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QAE/C,MAAM,wBAAwB,GAAG,IAAA,gDAAsC,EACrE,cAAc,EACd,QAAQ,EACR,QAAQ,CACT,CAAC;QAEF,IAAI,CAAA,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAE,MAAM,MAAK,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC;SACb;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAxBD,oCAwBC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const gl_matrix_1 = require("gl-matrix");
|
|
27
|
+
const math = __importStar(require(".."));
|
|
28
|
+
function isClosed(polyline) {
|
|
29
|
+
if (polyline.length < 3) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
const numPolylinePoints = polyline.length;
|
|
33
|
+
const firstPoint = polyline[0];
|
|
34
|
+
const lastPoint = polyline[numPolylinePoints - 1];
|
|
35
|
+
const distFirstToLastPoints = math.point.distanceToPointSquared(firstPoint, lastPoint);
|
|
36
|
+
return gl_matrix_1.glMatrix.equals(0, distFirstToLastPoints);
|
|
37
|
+
}
|
|
38
|
+
exports.default = isClosed;
|
|
39
|
+
//# sourceMappingURL=isClosed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isClosed.js","sourceRoot":"","sources":["../../../../../src/utilities/math/polyline/isClosed.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAqC;AAErC,yCAA2B;AAQ3B,SAAwB,QAAQ,CAAC,QAAwB;IACvD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE1C,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAC7D,UAAU,EACV,SAAS,CACV,CAAC;IAEF,OAAO,oBAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;AACnD,CAAC;AAfD,2BAeC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as contourSegUtils from '../../utilities/contourSegmentation';
|
|
2
|
+
import { contourSegmentationCompleted } from './contourSegmentation';
|
|
3
|
+
export default function annotationCompletedListener(evt) {
|
|
4
|
+
const annotation = evt.detail.annotation;
|
|
5
|
+
if (contourSegUtils.isContourSegmentationAnnotation(annotation)) {
|
|
6
|
+
contourSegmentationCompleted(evt);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=annotationCompletedListener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotationCompletedListener.js","sourceRoot":"","sources":["../../../../src/eventListeners/annotations/annotationCompletedListener.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,eAAe,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAErE,MAAM,CAAC,OAAO,UAAU,2BAA2B,CACjD,GAAiC;IAEjC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;IAEzC,IAAI,eAAe,CAAC,+BAA+B,CAAC,UAAU,CAAC,EAAE;QAC/D,4BAA4B,CAAC,GAAG,CAAC,CAAC;KACnC;AACH,CAAC"}
|
package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { getEnabledElement, utilities as csUtils, } from '@cornerstonejs/core';
|
|
2
|
+
import { getViewportForAnnotation, math, triggerAnnotationRenderForViewportIds, } from '../../../utilities';
|
|
3
|
+
import { getViewportIdsWithToolToRender } from '../../../utilities/viewportFilters';
|
|
4
|
+
import { getAnnotations, addAnnotation, removeAnnotation, } from '../../../stateManagement/annotation/annotationState';
|
|
5
|
+
import * as contourUtils from '../../../utilities/contours';
|
|
6
|
+
import * as contourSegUtils from '../../../utilities/contourSegmentation';
|
|
7
|
+
import { ToolGroupManager, hasTool as cstHasTool } from '../../../store';
|
|
8
|
+
import { PlanarFreehandContourSegmentationTool } from '../../../tools';
|
|
9
|
+
const DEFAULT_CONTOUR_SEG_TOOLNAME = 'PlanarFreehandContourSegmentationTool';
|
|
10
|
+
export default function contourSegmentationCompletedListener(evt) {
|
|
11
|
+
const sourceAnnotation = evt.detail
|
|
12
|
+
.annotation;
|
|
13
|
+
if (!contourSegUtils.isContourSegmentationAnnotation(sourceAnnotation)) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const viewport = getViewportForAnnotation(sourceAnnotation);
|
|
17
|
+
const contourSegmentationAnnotations = getValidContourSegmentationAnnotations(sourceAnnotation);
|
|
18
|
+
if (!contourSegmentationAnnotations.length) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const sourcePolyline = convertContourPolylineToCanvasSpace(sourceAnnotation.data.contour.polyline, viewport);
|
|
22
|
+
const targetAnnotationInfo = findIntersectingContour(viewport, sourcePolyline, contourSegmentationAnnotations);
|
|
23
|
+
if (!targetAnnotationInfo) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (!isFreehandContourSegToolRegistered(viewport)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const { targetAnnotation, targetPolyline } = targetAnnotationInfo;
|
|
30
|
+
processContours(viewport, sourceAnnotation, sourcePolyline, targetAnnotation, targetPolyline);
|
|
31
|
+
}
|
|
32
|
+
function isFreehandContourSegToolRegistered(viewport) {
|
|
33
|
+
const { toolName } = PlanarFreehandContourSegmentationTool;
|
|
34
|
+
if (!cstHasTool(PlanarFreehandContourSegmentationTool)) {
|
|
35
|
+
console.warn(`${toolName} is not registered in cornerstone`);
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const toolGroup = ToolGroupManager.getToolGroupForViewport(viewport.id, viewport.renderingEngineId);
|
|
39
|
+
if (!toolGroup.hasTool(toolName)) {
|
|
40
|
+
console.warn(`Tool ${toolName} not added to ${toolGroup.id} toolGroup`);
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
if (!toolGroup.getToolOptions(toolName)) {
|
|
44
|
+
console.warn(`Tool ${toolName} must be in active/passive state`);
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
function convertContourPolylineToCanvasSpace(polyline, viewport) {
|
|
50
|
+
const numPoints = polyline.length;
|
|
51
|
+
const projectedPolyline = new Array(numPoints);
|
|
52
|
+
for (let i = 0; i < numPoints; i++) {
|
|
53
|
+
projectedPolyline[i] = viewport.worldToCanvas(polyline[i]);
|
|
54
|
+
}
|
|
55
|
+
return projectedPolyline;
|
|
56
|
+
}
|
|
57
|
+
function convertPolylineToWorldSpace(polyline, viewport) {
|
|
58
|
+
const numPoints = polyline.length;
|
|
59
|
+
const projectedPolyline = new Array(numPoints);
|
|
60
|
+
for (let i = 0; i < numPoints; i++) {
|
|
61
|
+
projectedPolyline[i] = viewport.canvasToWorld(polyline[i]);
|
|
62
|
+
}
|
|
63
|
+
return projectedPolyline;
|
|
64
|
+
}
|
|
65
|
+
function getValidContourSegmentationAnnotations(sourceAnnotation) {
|
|
66
|
+
const { annotationUID: sourceAnnotationUID } = sourceAnnotation;
|
|
67
|
+
const { FrameOfReferenceUID } = sourceAnnotation.metadata;
|
|
68
|
+
const toolName = undefined;
|
|
69
|
+
const annotationsGroups = getAnnotations(toolName, FrameOfReferenceUID);
|
|
70
|
+
const toolNames = Object.keys(annotationsGroups);
|
|
71
|
+
return toolNames.reduce((validAnnotations, toolName) => {
|
|
72
|
+
const toolAnnotations = annotationsGroups[toolName].filter((targetAnnotation) => targetAnnotation.annotationUID &&
|
|
73
|
+
targetAnnotation.annotationUID !== sourceAnnotationUID &&
|
|
74
|
+
contourSegUtils.isContourSegmentationAnnotation(targetAnnotation) &&
|
|
75
|
+
contourSegUtils.areSameSegment(targetAnnotation, sourceAnnotation) &&
|
|
76
|
+
contourUtils.areCoplanarContours(targetAnnotation, sourceAnnotation));
|
|
77
|
+
return validAnnotations.concat(toolAnnotations);
|
|
78
|
+
}, []);
|
|
79
|
+
}
|
|
80
|
+
function findIntersectingContour(viewport, sourcePolyline, contourSegmentationAnnotations) {
|
|
81
|
+
const sourceAABB = math.polyline.getAABB(sourcePolyline);
|
|
82
|
+
for (let i = 0; i < contourSegmentationAnnotations.length; i++) {
|
|
83
|
+
const targetAnnotation = contourSegmentationAnnotations[i];
|
|
84
|
+
const targetPolyline = convertContourPolylineToCanvasSpace(targetAnnotation.data.contour.polyline, viewport);
|
|
85
|
+
const targetAABB = math.polyline.getAABB(targetPolyline);
|
|
86
|
+
const polylinesIntersect = math.aabb.intersectAABB(sourceAABB, targetAABB) &&
|
|
87
|
+
math.polyline.intersectPolyline(sourcePolyline, targetPolyline);
|
|
88
|
+
if (polylinesIntersect) {
|
|
89
|
+
return { targetAnnotation, targetPolyline };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function processContours(viewport, sourceAnnotation, sourcePolyline, targetAnnotation, targetPolyline) {
|
|
94
|
+
const sourceStartPoint = sourcePolyline[0];
|
|
95
|
+
const mergePolylines = math.polyline.containsPoint(targetPolyline, sourceStartPoint);
|
|
96
|
+
const newPolylines = [];
|
|
97
|
+
if (mergePolylines) {
|
|
98
|
+
const mergedPolyline = math.polyline.mergePolylines(targetPolyline, sourcePolyline);
|
|
99
|
+
newPolylines.push(mergedPolyline);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const subtractedPolylines = math.polyline.subtractPolylines(targetPolyline, sourcePolyline);
|
|
103
|
+
subtractedPolylines.forEach((newPolyline) => newPolylines.push(newPolyline));
|
|
104
|
+
}
|
|
105
|
+
removeAnnotation(sourceAnnotation.annotationUID);
|
|
106
|
+
removeAnnotation(targetAnnotation.annotationUID);
|
|
107
|
+
const { element } = viewport;
|
|
108
|
+
const enabledElement = getEnabledElement(element);
|
|
109
|
+
const { renderingEngine } = enabledElement;
|
|
110
|
+
const { metadata, data } = targetAnnotation;
|
|
111
|
+
const { handles, segmentation } = data;
|
|
112
|
+
const { textBox } = handles;
|
|
113
|
+
for (let i = 0; i < newPolylines.length; i++) {
|
|
114
|
+
const polyline = convertPolylineToWorldSpace(newPolylines[i], viewport);
|
|
115
|
+
const startPoint = polyline[0];
|
|
116
|
+
const endPoint = polyline[polyline.length - 1];
|
|
117
|
+
const newAnnotation = {
|
|
118
|
+
metadata: {
|
|
119
|
+
...metadata,
|
|
120
|
+
toolName: DEFAULT_CONTOUR_SEG_TOOLNAME,
|
|
121
|
+
},
|
|
122
|
+
data: {
|
|
123
|
+
cachedStats: {},
|
|
124
|
+
handles: {
|
|
125
|
+
points: [startPoint, endPoint],
|
|
126
|
+
textBox: textBox ? { ...textBox } : undefined,
|
|
127
|
+
},
|
|
128
|
+
contour: {
|
|
129
|
+
polyline,
|
|
130
|
+
closed: true,
|
|
131
|
+
},
|
|
132
|
+
segmentation: {
|
|
133
|
+
...segmentation,
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
annotationUID: csUtils.uuidv4(),
|
|
137
|
+
highlighted: true,
|
|
138
|
+
invalidated: true,
|
|
139
|
+
isLocked: false,
|
|
140
|
+
isVisible: undefined,
|
|
141
|
+
};
|
|
142
|
+
addAnnotation(newAnnotation, element);
|
|
143
|
+
const updatedTtoolNames = new Set([
|
|
144
|
+
DEFAULT_CONTOUR_SEG_TOOLNAME,
|
|
145
|
+
targetAnnotation.metadata.toolName,
|
|
146
|
+
]);
|
|
147
|
+
for (const toolName of updatedTtoolNames.values()) {
|
|
148
|
+
const viewportIdsToRender = getViewportIdsWithToolToRender(element, toolName);
|
|
149
|
+
triggerAnnotationRenderForViewportIds(renderingEngine, viewportIdsToRender);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=contourSegmentationCompleted.js.map
|
package/dist/esm/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contourSegmentationCompleted.js","sourceRoot":"","sources":["../../../../../src/eventListeners/annotations/contourSegmentation/contourSegmentationCompleted.ts"],"names":[],"mappings":"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"}
|