@kitware/vtk.js 28.10.1 → 28.11.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/Common/Core/Base64.js +53 -82
- package/Common/Core/CellArray.js +52 -60
- package/Common/Core/ClassHierarchy.js +8 -36
- package/Common/Core/DataArray/Constants.js +6 -6
- package/Common/Core/DataArray.js +185 -270
- package/Common/Core/Endian.js +14 -17
- package/Common/Core/HalfFloat.js +17 -34
- package/Common/Core/ImageHelper.js +17 -25
- package/Common/Core/LookupTable.js +131 -144
- package/Common/Core/Math/Constants.js +8 -8
- package/Common/Core/Math/index.js +778 -903
- package/Common/Core/Math.d.ts +14 -0
- package/Common/Core/Math.js +2 -4
- package/Common/Core/MatrixBuilder.js +99 -151
- package/Common/Core/Points.js +43 -43
- package/Common/Core/PriorityQueue.js +30 -28
- package/Common/Core/ProgressHandler.js +31 -32
- package/Common/Core/ScalarsToColors/Constants.js +4 -4
- package/Common/Core/ScalarsToColors.js +196 -253
- package/Common/Core/StringArray.js +48 -73
- package/Common/Core/URLExtract.js +10 -29
- package/Common/Core/VariantArray.js +48 -73
- package/Common/Core.js +11 -11
- package/Common/DataModel/AbstractPointLocator.js +19 -17
- package/Common/DataModel/BoundingBox.js +322 -490
- package/Common/DataModel/Box.js +46 -63
- package/Common/DataModel/CardinalSpline1D.js +92 -102
- package/Common/DataModel/Cell.js +41 -61
- package/Common/DataModel/CellLinks.js +91 -127
- package/Common/DataModel/CellTypes/Constants.js +7 -6
- package/Common/DataModel/CellTypes.js +55 -74
- package/Common/DataModel/Collection.js +45 -61
- package/Common/DataModel/Cone.js +28 -20
- package/Common/DataModel/Cylinder.js +41 -35
- package/Common/DataModel/DataSet/Constants.js +11 -5
- package/Common/DataModel/DataSet.js +37 -25
- package/Common/DataModel/DataSetAttributes/Constants.js +18 -18
- package/Common/DataModel/DataSetAttributes/FieldData.js +103 -194
- package/Common/DataModel/DataSetAttributes.js +96 -138
- package/Common/DataModel/EdgeLocator.js +45 -70
- package/Common/DataModel/ITKHelper.js +67 -137
- package/Common/DataModel/ImageData.js +115 -172
- package/Common/DataModel/ImplicitBoolean/Constants.js +2 -2
- package/Common/DataModel/ImplicitBoolean.js +66 -96
- package/Common/DataModel/IncrementalOctreeNode.js +201 -231
- package/Common/DataModel/IncrementalOctreePointLocator.js +160 -198
- package/Common/DataModel/KochanekSpline1D.js +78 -81
- package/Common/DataModel/Line/Constants.js +2 -2
- package/Common/DataModel/Line.js +82 -105
- package/Common/DataModel/Locator.js +17 -10
- package/Common/DataModel/Molecule.js +26 -17
- package/Common/DataModel/PiecewiseFunction.js +218 -239
- package/Common/DataModel/Plane.js +90 -113
- package/Common/DataModel/PointSet.js +30 -26
- package/Common/DataModel/PolyData/Constants.js +2 -2
- package/Common/DataModel/PolyData.js +95 -120
- package/Common/DataModel/PolyLine.js +44 -61
- package/Common/DataModel/Polygon/Constants.js +4 -4
- package/Common/DataModel/Polygon.js +128 -169
- package/Common/DataModel/Quad/Constants.js +2 -2
- package/Common/DataModel/Quad.js +61 -100
- package/Common/DataModel/SelectionNode/Constants.js +5 -4
- package/Common/DataModel/SelectionNode.js +25 -21
- package/Common/DataModel/Sphere.js +40 -35
- package/Common/DataModel/Spline1D/Constants.js +3 -2
- package/Common/DataModel/Spline1D.js +34 -18
- package/Common/DataModel/Spline3D/Constants.js +2 -2
- package/Common/DataModel/Spline3D.js +46 -41
- package/Common/DataModel/StructuredData/Constants.js +2 -2
- package/Common/DataModel/StructuredData.js +9 -20
- package/Common/DataModel/Triangle.js +207 -250
- package/Common/DataModel.js +19 -19
- package/Common/System/MobileVR.js +56 -61
- package/Common/System/TimerLog.js +1 -1
- package/Common/System.js +2 -2
- package/Common/Transform/LandmarkTransform/Constants.js +2 -2
- package/Common/Transform/LandmarkTransform.js +133 -117
- package/Common/Transform/Transform.js +42 -57
- package/Common/Transform.js +2 -2
- package/Common/index.js +4 -4
- package/Filters/Core/Cutter.js +134 -146
- package/Filters/Core/PolyDataNormals.js +44 -50
- package/Filters/Core.js +2 -2
- package/Filters/Cornerstone/ImageDataToCornerstoneImage.js +45 -33
- package/Filters/Cornerstone.js +1 -1
- package/Filters/General/AppendPolyData.js +84 -100
- package/Filters/General/Calculator.js +95 -163
- package/Filters/General/ClipClosedSurface/Constants.js +2 -2
- package/Filters/General/ClipClosedSurface.js +341 -416
- package/Filters/General/ClosedPolyLineToSurfaceFilter.js +141 -156
- package/Filters/General/ContourTriangulator/Constants.js +2 -2
- package/Filters/General/ContourTriangulator/helper.js +684 -812
- package/Filters/General/ContourTriangulator.js +92 -89
- package/Filters/General/ImageCropFilter.js +77 -78
- package/Filters/General/ImageDataOutlineFilter.js +42 -36
- package/Filters/General/ImageMarchingCubes/caseTable.js +9 -521
- package/Filters/General/ImageMarchingCubes.js +99 -112
- package/Filters/General/ImageMarchingSquares/caseTable.js +9 -41
- package/Filters/General/ImageMarchingSquares.js +93 -118
- package/Filters/General/ImageOutlineFilter.js +53 -54
- package/Filters/General/ImageSliceFilter.js +39 -30
- package/Filters/General/ImageStreamline.js +107 -124
- package/Filters/General/LineFilter.js +26 -15
- package/Filters/General/MoleculeToRepresentation.js +136 -149
- package/Filters/General/OBBTree/OBBNode.js +36 -34
- package/Filters/General/OBBTree/helper.js +19 -24
- package/Filters/General/OBBTree.js +396 -488
- package/Filters/General/OutlineFilter.js +52 -34
- package/Filters/General/PaintFilter/PaintFilter.worker.js +93 -130
- package/Filters/General/PaintFilter.js +150 -162
- package/Filters/General/ScalarToRGBA.js +38 -33
- package/Filters/General/TriangleFilter.js +65 -62
- package/Filters/General/TubeFilter/Constants.js +4 -4
- package/Filters/General/TubeFilter.js +376 -496
- package/Filters/General/WarpScalar.js +58 -60
- package/Filters/General/WindowedSincPolyDataFilter.js +258 -330
- package/Filters/General.js +21 -21
- package/Filters/Sources/Arrow2DSource/Constants.js +2 -2
- package/Filters/Sources/Arrow2DSource.js +56 -56
- package/Filters/Sources/ArrowSource.js +39 -29
- package/Filters/Sources/CircleSource.js +43 -43
- package/Filters/Sources/ConcentricCylinderSource.js +151 -174
- package/Filters/Sources/ConeSource.js +51 -42
- package/Filters/Sources/CubeSource.js +75 -96
- package/Filters/Sources/Cursor3D.js +94 -109
- package/Filters/Sources/CylinderSource.js +90 -90
- package/Filters/Sources/ImageGridSource.js +43 -43
- package/Filters/Sources/LineSource.js +49 -39
- package/Filters/Sources/PlaneSource.js +97 -104
- package/Filters/Sources/PointSource.js +46 -37
- package/Filters/Sources/RTAnalyticSource.js +50 -48
- package/Filters/Sources/SLICSource.js +63 -73
- package/Filters/Sources/SphereSource.js +88 -78
- package/Filters/Sources/ViewFinderSource.js +26 -23
- package/Filters/Sources.js +14 -14
- package/Filters/Texture/TextureMapToPlane.js +95 -97
- package/Filters/Texture/TextureMapToSphere.js +46 -54
- package/Filters/Texture.js +2 -2
- package/Filters/index.js +5 -5
- package/IO/Core/BinaryHelper.js +12 -18
- package/IO/Core/DataAccessHelper/HtmlDataAccessHelper.js +43 -59
- package/IO/Core/DataAccessHelper/HttpDataAccessHelper.js +76 -113
- package/IO/Core/DataAccessHelper/JSZipDataAccessHelper.js +62 -112
- package/IO/Core/DataAccessHelper/LiteHttpDataAccessHelper.js +76 -113
- package/IO/Core/DataAccessHelper.js +6 -6
- package/IO/Core/HttpDataSetReader.js +136 -139
- package/IO/Core/HttpDataSetSeriesReader.js +64 -75
- package/IO/Core/HttpSceneLoader.js +130 -179
- package/IO/Core/ImageStream/DefaultProtocol.js +29 -43
- package/IO/Core/ImageStream/ViewStream.js +100 -103
- package/IO/Core/ImageStream.js +62 -54
- package/IO/Core/ResourceLoader.js +10 -9
- package/IO/Core/Serializer/ArraySerializer.js +40 -40
- package/IO/Core/Serializer/FieldDataSerializer.js +18 -28
- package/IO/Core/Serializer/ImageDataSerializer.js +22 -23
- package/IO/Core/Serializer/PolyDataSerializer.js +17 -21
- package/IO/Core/Serializer.js +6 -13
- package/IO/Core/WSLinkClient.js +90 -76
- package/IO/Core/ZipMultiDataSetReader.js +46 -44
- package/IO/Core/ZipMultiDataSetWriter.js +43 -34
- package/IO/Core.js +7 -7
- package/IO/Geometry/DracoReader.js +118 -121
- package/IO/Geometry/PLYReader.js +163 -223
- package/IO/Geometry/PLYWriter/Constants.js +5 -5
- package/IO/Geometry/PLYWriter.js +139 -154
- package/IO/Geometry/STLReader.js +123 -146
- package/IO/Geometry/STLWriter/Constants.js +2 -2
- package/IO/Geometry/STLWriter.js +83 -82
- package/IO/Geometry.js +5 -5
- package/IO/Legacy/LegacyAsciiParser.js +78 -139
- package/IO/Legacy/PolyDataReader.js +48 -36
- package/IO/Legacy.js +2 -2
- package/IO/Misc/ElevationReader.js +67 -60
- package/IO/Misc/HttpDataSetLODsLoader.js +41 -38
- package/IO/Misc/ITKImageReader.js +58 -45
- package/IO/Misc/ITKPolyDataReader.js +50 -38
- package/IO/Misc/JSONNucleoReader.js +49 -42
- package/IO/Misc/JSONReader.js +38 -33
- package/IO/Misc/MTLReader.js +74 -119
- package/IO/Misc/OBJReader.js +153 -206
- package/IO/Misc/PDBReader.js +70 -68
- package/IO/Misc/SkyboxReader.js +77 -82
- package/IO/Misc.js +9 -9
- package/IO/XML/XMLImageDataReader.js +36 -38
- package/IO/XML/XMLImageDataWriter.js +28 -21
- package/IO/XML/XMLPolyDataReader.js +49 -46
- package/IO/XML/XMLPolyDataWriter.js +43 -42
- package/IO/XML/XMLReader.js +262 -304
- package/IO/XML/XMLWriter/Constants.js +3 -3
- package/IO/XML/XMLWriter.js +70 -84
- package/IO/XML.js +6 -6
- package/IO/index.js +5 -5
- package/Imaging/Core/AbstractImageInterpolator/Constants.js +4 -4
- package/Imaging/Core/AbstractImageInterpolator/InterpolationInfo.js +30 -27
- package/Imaging/Core/AbstractImageInterpolator.js +74 -87
- package/Imaging/Core/ImageInterpolator.js +201 -252
- package/Imaging/Core/ImagePointDataIterator.js +96 -122
- package/Imaging/Core/ImageReslice/Constants.js +2 -2
- package/Imaging/Core/ImageReslice.js +327 -464
- package/Imaging/Core.js +4 -4
- package/Imaging/Hybrid/SampleFunction.js +58 -51
- package/Imaging/Hybrid.js +1 -1
- package/Imaging/index.js +2 -2
- package/Interaction/Animations/TimeStepBasedAnimationHandler.js +39 -54
- package/Interaction/Manipulators/CompositeCameraManipulator.js +22 -13
- package/Interaction/Manipulators/CompositeGestureManipulator.js +31 -43
- package/Interaction/Manipulators/CompositeKeyboardManipulator.js +15 -11
- package/Interaction/Manipulators/CompositeMouseManipulator.js +27 -33
- package/Interaction/Manipulators/CompositeVRManipulator.js +22 -15
- package/Interaction/Manipulators/GestureCameraManipulator.js +54 -36
- package/Interaction/Manipulators/KeyboardCameraManipulator.js +95 -97
- package/Interaction/Manipulators/MouseBoxSelectorManipulator.js +70 -89
- package/Interaction/Manipulators/MouseCameraAxisRotateManipulator.js +67 -54
- package/Interaction/Manipulators/MouseCameraSliceManipulator.js +40 -38
- package/Interaction/Manipulators/MouseCameraTrackballFirstPersonManipulator.js +83 -68
- package/Interaction/Manipulators/MouseCameraTrackballMultiRotateManipulator.js +32 -28
- package/Interaction/Manipulators/MouseCameraTrackballPanManipulator.js +47 -40
- package/Interaction/Manipulators/MouseCameraTrackballRollManipulator.js +55 -43
- package/Interaction/Manipulators/MouseCameraTrackballRotateManipulator.js +56 -46
- package/Interaction/Manipulators/MouseCameraTrackballZoomManipulator.js +41 -46
- package/Interaction/Manipulators/MouseCameraTrackballZoomToMouseManipulator.js +29 -27
- package/Interaction/Manipulators/MouseCameraUnicamManipulator.js +123 -146
- package/Interaction/Manipulators/MouseCameraUnicamRotateManipulator.js +144 -166
- package/Interaction/Manipulators/MouseRangeManipulator.js +127 -132
- package/Interaction/Manipulators/VRButtonPanManipulator.js +33 -23
- package/Interaction/Manipulators.js +21 -21
- package/Interaction/Misc/DeviceOrientationToCamera.js +25 -47
- package/Interaction/Misc.js +1 -1
- package/Interaction/Style/InteractorStyleImage.js +101 -121
- package/Interaction/Style/InteractorStyleMPRSlice.js +111 -128
- package/Interaction/Style/InteractorStyleManipulator/Presets.js +9 -17
- package/Interaction/Style/InteractorStyleManipulator.js +254 -329
- package/Interaction/Style/InteractorStyleRemoteMouse.js +195 -180
- package/Interaction/Style/InteractorStyleTrackballCamera.js +154 -157
- package/Interaction/Style/InteractorStyleUnicam.js +30 -38
- package/Interaction/Style.js +5 -5
- package/Interaction/UI/CornerAnnotation/CornerAnnotation.module.css.js +1 -1
- package/Interaction/UI/CornerAnnotation.js +65 -48
- package/Interaction/UI/FPSMonitor.js +104 -105
- package/Interaction/UI/Icons.js +1 -1
- package/Interaction/UI/Slider/Constants.js +2 -2
- package/Interaction/UI/Slider.js +78 -95
- package/Interaction/UI/VolumeController.js +104 -97
- package/Interaction/UI.js +5 -5
- package/Interaction/Widgets/OrientationMarkerWidget/Constants.js +2 -2
- package/Interaction/Widgets/OrientationMarkerWidget.js +90 -135
- package/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
- package/Interaction/Widgets/PiecewiseGaussianWidget.js +381 -498
- package/Interaction/Widgets.js +2 -2
- package/Interaction/index.js +5 -5
- package/Proxy/Animation/AbstractAnimationProxy.js +22 -15
- package/Proxy/Animation/AnimationProxyManager.js +43 -51
- package/Proxy/Animation/TimeStepBasedAnimationHandlerProxy.js +26 -19
- package/Proxy/Core/AbstractRepresentationProxy.js +97 -151
- package/Proxy/Core/LookupTableProxy/Constants.js +4 -4
- package/Proxy/Core/LookupTableProxy.js +49 -52
- package/Proxy/Core/PiecewiseFunctionProxy/Constants.js +4 -4
- package/Proxy/Core/PiecewiseFunctionProxy.js +63 -72
- package/Proxy/Core/ProxyManager/core.js +83 -106
- package/Proxy/Core/ProxyManager/properties.js +53 -76
- package/Proxy/Core/ProxyManager/state.js +100 -110
- package/Proxy/Core/ProxyManager/view.js +45 -55
- package/Proxy/Core/ProxyManager.js +16 -8
- package/Proxy/Core/SourceProxy.js +41 -38
- package/Proxy/Core/View2DProxy.js +143 -199
- package/Proxy/Core/ViewProxy.js +223 -269
- package/Proxy/Core.js +7 -7
- package/Proxy/Representations/GeometryRepresentationProxy.js +34 -20
- package/Proxy/Representations/GlyphRepresentationProxy.js +42 -41
- package/Proxy/Representations/MoleculeRepresentationProxy.js +32 -22
- package/Proxy/Representations/ResliceRepresentationProxy.js +48 -32
- package/Proxy/Representations/SkyboxRepresentationProxy.js +30 -29
- package/Proxy/Representations/SliceRepresentationProxy.js +93 -112
- package/Proxy/Representations/SlicedGeometryRepresentationProxy.js +46 -42
- package/Proxy/Representations/VolumeRepresentationProxy.js +108 -133
- package/Proxy/Representations.js +7 -7
- package/Proxy/index.js +2 -2
- package/Rendering/Core/AbstractImageMapper/helper.js +44 -49
- package/Rendering/Core/AbstractImageMapper.js +18 -19
- package/Rendering/Core/AbstractMapper.js +39 -55
- package/Rendering/Core/AbstractMapper3D.js +26 -31
- package/Rendering/Core/AbstractPicker.js +25 -21
- package/Rendering/Core/Actor.js +71 -93
- package/Rendering/Core/Actor2D.js +64 -78
- package/Rendering/Core/AnnotatedCubeActor/Presets.js +5 -11
- package/Rendering/Core/AnnotatedCubeActor.js +94 -79
- package/Rendering/Core/AxesActor.js +65 -87
- package/Rendering/Core/Camera.js +246 -271
- package/Rendering/Core/CellPicker.js +125 -148
- package/Rendering/Core/ColorTransferFunction/ColorMaps.js +20 -21
- package/Rendering/Core/ColorTransferFunction/ColorMapsLite.js +20 -21
- package/Rendering/Core/ColorTransferFunction/Constants.js +4 -4
- package/Rendering/Core/ColorTransferFunction.js +460 -546
- package/Rendering/Core/Coordinate/Constants.js +2 -2
- package/Rendering/Core/Coordinate.js +119 -198
- package/Rendering/Core/CubeAxesActor.js +294 -320
- package/Rendering/Core/Follower.js +46 -45
- package/Rendering/Core/Glyph3DMapper/Constants.js +4 -4
- package/Rendering/Core/Glyph3DMapper.js +96 -148
- package/Rendering/Core/HardwareSelector.js +36 -69
- package/Rendering/Core/ImageArrayMapper.js +87 -126
- package/Rendering/Core/ImageCPRMapper.js +134 -209
- package/Rendering/Core/ImageMapper/Constants.js +2 -2
- package/Rendering/Core/ImageMapper.js +92 -170
- package/Rendering/Core/ImageProperty/Constants.js +2 -2
- package/Rendering/Core/ImageProperty.js +66 -81
- package/Rendering/Core/ImageResliceMapper/Constants.js +2 -2
- package/Rendering/Core/ImageResliceMapper.js +36 -29
- package/Rendering/Core/ImageSlice.js +85 -127
- package/Rendering/Core/InteractorObserver.js +82 -73
- package/Rendering/Core/InteractorStyle/Constants.js +2 -2
- package/Rendering/Core/InteractorStyle.js +56 -58
- package/Rendering/Core/Light.js +43 -49
- package/Rendering/Core/Mapper/CoincidentTopologyHelper.js +37 -48
- package/Rendering/Core/Mapper/Constants.js +6 -6
- package/Rendering/Core/Mapper/Static.js +15 -12
- package/Rendering/Core/Mapper.js +194 -259
- package/Rendering/Core/Mapper2D.js +61 -100
- package/Rendering/Core/Picker.js +124 -143
- package/Rendering/Core/PixelSpaceCallbackMapper.js +40 -37
- package/Rendering/Core/PointPicker.js +68 -79
- package/Rendering/Core/Prop/Constants.js +2 -2
- package/Rendering/Core/Prop.js +58 -106
- package/Rendering/Core/Prop3D.js +54 -83
- package/Rendering/Core/Property/Constants.js +6 -6
- package/Rendering/Core/Property.js +45 -74
- package/Rendering/Core/Property2D/Constants.js +2 -2
- package/Rendering/Core/Property2D.js +33 -42
- package/Rendering/Core/RenderWindow.js +70 -82
- package/Rendering/Core/RenderWindowInteractor/Constants.js +7 -7
- package/Rendering/Core/RenderWindowInteractor.js +324 -439
- package/Rendering/Core/Renderer.js +193 -257
- package/Rendering/Core/ScalarBarActor.js +267 -272
- package/Rendering/Core/Skybox.js +26 -24
- package/Rendering/Core/SphereMapper.js +22 -12
- package/Rendering/Core/StickMapper.js +22 -12
- package/Rendering/Core/SurfaceLICInterface/Constants.js +6 -6
- package/Rendering/Core/SurfaceLICInterface.js +13 -9
- package/Rendering/Core/SurfaceLICMapper.js +23 -15
- package/Rendering/Core/Texture.js +99 -141
- package/Rendering/Core/Viewport.js +60 -88
- package/Rendering/Core/Volume.js +55 -77
- package/Rendering/Core/VolumeMapper/Constants.js +4 -4
- package/Rendering/Core/VolumeMapper.js +59 -91
- package/Rendering/Core/VolumeProperty/Constants.js +4 -4
- package/Rendering/Core/VolumeProperty.js +78 -115
- package/Rendering/Core.js +47 -49
- package/Rendering/Misc/CanvasView.js +62 -61
- package/Rendering/Misc/FullScreenRenderWindow.js +60 -62
- package/Rendering/Misc/GenericRenderWindow.js +48 -37
- package/Rendering/Misc/RemoteView.js +86 -80
- package/Rendering/Misc/RenderWindowWithControlBar.js +54 -48
- package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager/CameraSynchronizer.js +43 -51
- package/Rendering/Misc/SynchronizableRenderWindow/BehaviorManager.js +52 -82
- package/Rendering/Misc/SynchronizableRenderWindow/ObjectManager.js +258 -308
- package/Rendering/Misc/SynchronizableRenderWindow.js +133 -163
- package/Rendering/Misc/TextureLODsDownloader.js +72 -74
- package/Rendering/Misc.js +7 -7
- package/Rendering/OpenGL/Actor.js +57 -68
- package/Rendering/OpenGL/Actor2D.js +56 -56
- package/Rendering/OpenGL/BufferObject/Constants.js +2 -2
- package/Rendering/OpenGL/BufferObject.js +50 -65
- package/Rendering/OpenGL/Camera.js +35 -29
- package/Rendering/OpenGL/CellArrayBufferObject.js +119 -149
- package/Rendering/OpenGL/Convolution2DPass.js +87 -81
- package/Rendering/OpenGL/CubeAxesActor.js +28 -21
- package/Rendering/OpenGL/ForwardPass.js +53 -64
- package/Rendering/OpenGL/Framebuffer.js +61 -101
- package/Rendering/OpenGL/Glyph3DMapper.js +165 -196
- package/Rendering/OpenGL/HardwareSelector/Constants.js +2 -2
- package/Rendering/OpenGL/HardwareSelector.js +272 -397
- package/Rendering/OpenGL/Helper.js +58 -73
- package/Rendering/OpenGL/ImageCPRMapper.js +339 -421
- package/Rendering/OpenGL/ImageMapper.js +268 -361
- package/Rendering/OpenGL/ImageResliceMapper.js +306 -438
- package/Rendering/OpenGL/ImageSlice.js +48 -54
- package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +102 -84
- package/Rendering/OpenGL/PixelSpaceCallbackMapper.js +43 -42
- package/Rendering/OpenGL/PolyDataMapper.js +358 -492
- package/Rendering/OpenGL/PolyDataMapper2D.js +153 -205
- package/Rendering/OpenGL/RadialDistortionPass.js +86 -89
- package/Rendering/OpenGL/RenderWindow/Constants.js +2 -2
- package/Rendering/OpenGL/RenderWindow/ContextProxy.js +20 -29
- package/Rendering/OpenGL/RenderWindow.js +356 -510
- package/Rendering/OpenGL/Renderer.js +77 -89
- package/Rendering/OpenGL/ReplacementShaderMapper.js +28 -46
- package/Rendering/OpenGL/ScalarBarActor.js +28 -21
- package/Rendering/OpenGL/Shader.js +37 -31
- package/Rendering/OpenGL/ShaderCache.js +67 -74
- package/Rendering/OpenGL/ShaderProgram.js +136 -248
- package/Rendering/OpenGL/Skybox.js +99 -60
- package/Rendering/OpenGL/SphereMapper.js +94 -108
- package/Rendering/OpenGL/StickMapper.js +110 -114
- package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +91 -157
- package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D.js +142 -151
- package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +142 -216
- package/Rendering/OpenGL/SurfaceLIC/SurfaceLICMapper.js +79 -100
- package/Rendering/OpenGL/SurfaceLIC.js +2 -2
- package/Rendering/OpenGL/Texture/Constants.js +4 -4
- package/Rendering/OpenGL/Texture.js +444 -609
- package/Rendering/OpenGL/TextureUnitManager.js +47 -43
- package/Rendering/OpenGL/VertexArrayObject.js +92 -131
- package/Rendering/OpenGL/ViewNodeFactory.js +25 -13
- package/Rendering/OpenGL/Volume.js +38 -34
- package/Rendering/OpenGL/VolumeMapper.js +437 -547
- package/Rendering/OpenGL.js +28 -28
- package/Rendering/SceneGraph/RenderPass.js +34 -31
- package/Rendering/SceneGraph/RenderWindowViewNode.js +68 -94
- package/Rendering/SceneGraph/ViewNode.js +82 -111
- package/Rendering/SceneGraph/ViewNodeFactory.js +31 -26
- package/Rendering/SceneGraph.js +4 -4
- package/Rendering/WebGPU/Actor.js +49 -49
- package/Rendering/WebGPU/Actor2D.js +45 -44
- package/Rendering/WebGPU/BindGroup.js +43 -50
- package/Rendering/WebGPU/Buffer.js +41 -50
- package/Rendering/WebGPU/BufferManager/Constants.js +4 -4
- package/Rendering/WebGPU/BufferManager.js +111 -141
- package/Rendering/WebGPU/Camera.js +65 -67
- package/Rendering/WebGPU/CellArrayMapper.js +621 -388
- package/Rendering/WebGPU/CubeAxesActor.js +28 -19
- package/Rendering/WebGPU/Device.js +78 -133
- package/Rendering/WebGPU/ForwardPass.js +75 -72
- package/Rendering/WebGPU/FullScreenQuad.js +25 -18
- package/Rendering/WebGPU/Glyph3DMapper.js +62 -74
- package/Rendering/WebGPU/HardwareSelectionPass.js +45 -38
- package/Rendering/WebGPU/HardwareSelector.js +200 -276
- package/Rendering/WebGPU/ImageMapper.js +180 -171
- package/Rendering/WebGPU/ImageSlice.js +45 -44
- package/Rendering/WebGPU/IndexBuffer.js +166 -200
- package/Rendering/WebGPU/OpaquePass.js +37 -36
- package/Rendering/WebGPU/OrderIndependentTranslucentPass.js +72 -45
- package/Rendering/WebGPU/Pipeline.js +37 -51
- package/Rendering/WebGPU/PixelSpaceCallbackMapper.js +27 -19
- package/Rendering/WebGPU/PolyDataMapper.js +50 -53
- package/Rendering/WebGPU/PolyDataMapper2D.js +39 -39
- package/Rendering/WebGPU/RenderEncoder.js +68 -88
- package/Rendering/WebGPU/RenderWindow.js +262 -376
- package/Rendering/WebGPU/Renderer.js +224 -208
- package/Rendering/WebGPU/Sampler.js +27 -21
- package/Rendering/WebGPU/ScalarBarActor.js +28 -19
- package/Rendering/WebGPU/ShaderCache.js +43 -41
- package/Rendering/WebGPU/ShaderDescription.js +52 -59
- package/Rendering/WebGPU/ShaderModule.js +26 -17
- package/Rendering/WebGPU/SimpleMapper.js +185 -121
- package/Rendering/WebGPU/SphereMapper.js +200 -130
- package/Rendering/WebGPU/StickMapper.js +289 -152
- package/Rendering/WebGPU/StorageBuffer.js +100 -115
- package/Rendering/WebGPU/Texture.js +79 -99
- package/Rendering/WebGPU/TextureManager.js +52 -54
- package/Rendering/WebGPU/TextureView.js +40 -43
- package/Rendering/WebGPU/Types.js +53 -70
- package/Rendering/WebGPU/UniformBuffer.js +158 -184
- package/Rendering/WebGPU/VertexInput.js +64 -90
- package/Rendering/WebGPU/ViewNodeFactory.js +25 -13
- package/Rendering/WebGPU/Volume.js +52 -51
- package/Rendering/WebGPU/VolumePass.js +218 -239
- package/Rendering/WebGPU/VolumePassFSQ.js +625 -306
- package/Rendering/WebGPU.js +1 -1
- package/Rendering/index.js +5 -5
- package/Widgets/Core/AbstractWidget/Constants.js +2 -2
- package/Widgets/Core/AbstractWidget.js +49 -58
- package/Widgets/Core/AbstractWidgetFactory.js +101 -122
- package/Widgets/Core/StateBuilder/boundsMixin.js +23 -28
- package/Widgets/Core/StateBuilder/color3Mixin.js +10 -7
- package/Widgets/Core/StateBuilder/colorMixin.js +10 -6
- package/Widgets/Core/StateBuilder/cornerMixin.js +16 -15
- package/Widgets/Core/StateBuilder/directionMixin.js +20 -18
- package/Widgets/Core/StateBuilder/manipulatorMixin.js +26 -18
- package/Widgets/Core/StateBuilder/nameMixin.js +10 -6
- package/Widgets/Core/StateBuilder/orientationMixin.js +19 -16
- package/Widgets/Core/StateBuilder/originMixin.js +25 -32
- package/Widgets/Core/StateBuilder/scale1Mixin.js +10 -6
- package/Widgets/Core/StateBuilder/scale3Mixin.js +10 -6
- package/Widgets/Core/StateBuilder/shapeMixin.js +12 -6
- package/Widgets/Core/StateBuilder/textMixin.js +10 -6
- package/Widgets/Core/StateBuilder/visibleMixin.js +10 -6
- package/Widgets/Core/StateBuilder.js +120 -149
- package/Widgets/Core/WidgetManager/Constants.js +7 -7
- package/Widgets/Core/WidgetManager.js +249 -421
- package/Widgets/Core/WidgetState.js +48 -57
- package/Widgets/Core.js +5 -5
- package/Widgets/Manipulators/AbstractManipulator.js +20 -14
- package/Widgets/Manipulators/CPRManipulator.js +55 -71
- package/Widgets/Manipulators/LineManipulator.js +31 -28
- package/Widgets/Manipulators/PickerManipulator.d.ts +48 -0
- package/Widgets/Manipulators/PickerManipulator.js +65 -0
- package/Widgets/Manipulators/PlaneManipulator.js +26 -23
- package/Widgets/Manipulators/TrackballManipulator.js +39 -35
- package/Widgets/Manipulators.js +4 -2
- package/Widgets/Representations/ArrowHandleRepresentation.js +148 -162
- package/Widgets/Representations/CircleContextRepresentation.js +44 -38
- package/Widgets/Representations/ContextRepresentation.js +17 -14
- package/Widgets/Representations/ConvexFaceContextRepresentation.js +50 -47
- package/Widgets/Representations/CroppingOutlineRepresentation.js +38 -27
- package/Widgets/Representations/CubeHandleRepresentation.js +21 -18
- package/Widgets/Representations/GlyphRepresentation.js +107 -152
- package/Widgets/Representations/HandleRepresentation.js +17 -14
- package/Widgets/Representations/ImplicitPlaneRepresentation.js +97 -91
- package/Widgets/Representations/LineHandleRepresentation.js +44 -41
- package/Widgets/Representations/OutlineContextRepresentation.js +42 -36
- package/Widgets/Representations/PolyLineRepresentation.js +60 -75
- package/Widgets/Representations/RectangleContextRepresentation.js +42 -37
- package/Widgets/Representations/SphereContextRepresentation.js +19 -27
- package/Widgets/Representations/SphereHandleRepresentation.js +31 -27
- package/Widgets/Representations/SplineContextRepresentation.js +46 -70
- package/Widgets/Representations/WidgetRepresentation/Constants.js +2 -2
- package/Widgets/Representations/WidgetRepresentation.js +99 -134
- package/Widgets/Representations.js +13 -13
- package/Widgets/Widgets3D/AngleWidget/behavior.js +41 -63
- package/Widgets/Widgets3D/AngleWidget.js +41 -39
- package/Widgets/Widgets3D/DistanceWidget/behavior.js +40 -61
- package/Widgets/Widgets3D/DistanceWidget.js +38 -36
- package/Widgets/Widgets3D/EllipseWidget/behavior.js +14 -19
- package/Widgets/Widgets3D/EllipseWidget/state.js +4 -2
- package/Widgets/Widgets3D/EllipseWidget.js +37 -26
- package/Widgets/Widgets3D/ImageCroppingWidget/behavior.js +26 -56
- package/Widgets/Widgets3D/ImageCroppingWidget/helpers.js +14 -17
- package/Widgets/Widgets3D/ImageCroppingWidget/state.js +20 -16
- package/Widgets/Widgets3D/ImageCroppingWidget.js +80 -98
- package/Widgets/Widgets3D/ImplicitPlaneWidget.js +55 -77
- package/Widgets/Widgets3D/InteractiveOrientationWidget/behavior.js +17 -18
- package/Widgets/Widgets3D/InteractiveOrientationWidget/state.js +15 -7
- package/Widgets/Widgets3D/InteractiveOrientationWidget.js +30 -29
- package/Widgets/Widgets3D/LabelWidget/behavior.js +37 -62
- package/Widgets/Widgets3D/LabelWidget.js +31 -25
- package/Widgets/Widgets3D/LineWidget/Constants.js +8 -8
- package/Widgets/Widgets3D/LineWidget/behavior.js +77 -114
- package/Widgets/Widgets3D/LineWidget/helpers.js +13 -20
- package/Widgets/Widgets3D/LineWidget/state.js +2 -1
- package/Widgets/Widgets3D/LineWidget.js +39 -35
- package/Widgets/Widgets3D/PaintWidget/behavior.js +24 -59
- package/Widgets/Widgets3D/PaintWidget.js +39 -37
- package/Widgets/Widgets3D/PolyLineWidget/behavior.js +44 -68
- package/Widgets/Widgets3D/PolyLineWidget.js +36 -31
- package/Widgets/Widgets3D/RectangleWidget/behavior.js +6 -11
- package/Widgets/Widgets3D/RectangleWidget/state.js +4 -2
- package/Widgets/Widgets3D/RectangleWidget.js +37 -25
- package/Widgets/Widgets3D/ResliceCursorWidget/Constants.js +35 -21
- package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +134 -210
- package/Widgets/Widgets3D/ResliceCursorWidget/cprBehavior.js +26 -41
- package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +90 -117
- package/Widgets/Widgets3D/ResliceCursorWidget/state.js +33 -40
- package/Widgets/Widgets3D/ResliceCursorWidget.js +186 -227
- package/Widgets/Widgets3D/SeedWidget/behavior.js +82 -0
- package/Widgets/Widgets3D/SeedWidget/state.js +18 -0
- package/Widgets/Widgets3D/SeedWidget.d.ts +44 -0
- package/Widgets/Widgets3D/SeedWidget.js +43 -0
- package/Widgets/Widgets3D/ShapeWidget/Constants.js +19 -19
- package/Widgets/Widgets3D/ShapeWidget/behavior.js +150 -252
- package/Widgets/Widgets3D/ShapeWidget.js +24 -27
- package/Widgets/Widgets3D/SphereWidget/behavior.js +35 -69
- package/Widgets/Widgets3D/SphereWidget/state.js +9 -5
- package/Widgets/Widgets3D/SphereWidget.js +34 -44
- package/Widgets/Widgets3D/SplineWidget/behavior.js +85 -120
- package/Widgets/Widgets3D/SplineWidget.js +43 -39
- package/Widgets/Widgets3D.js +15 -15
- package/Widgets/index.js +4 -4
- package/_virtual/rollup-plugin-worker-loader__module_Sources/Filters/General/PaintFilter/PaintFilter.worker.js +95 -207
- package/_virtual/rollup-plugin-worker-loader__module_Sources/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +0 -3
- package/favicon.js +5 -6
- package/index.d.ts +4 -2
- package/index.js +4 -3
- package/macros.js +4 -1931
- package/macros2.js +1684 -0
- package/package.json +6 -6
- package/vtk.js +18 -31
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import macro from '../../
|
|
1
|
+
import { m as macro } from '../../macros2.js';
|
|
2
2
|
import { e as distance2BetweenPoints } from '../Core/Math/index.js';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const {
|
|
5
|
+
vtkErrorMacro
|
|
6
|
+
} = macro;
|
|
7
|
+
const OCTREENODE_INSERTPOINT = [(points, pointIdx, coords) => pointIdx, (points, pointIdx, coords) => {
|
|
8
8
|
points.setTuple(pointIdx, coords);
|
|
9
9
|
return pointIdx;
|
|
10
|
-
},
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
}, (points, pointIdx, coords) => points.insertNextTuple(coords)];
|
|
11
|
+
|
|
12
|
+
// Given the index (0 ~ 7) of a child node, the spatial bounding axis (0 ~ 2
|
|
13
13
|
// for x, y, and z), and the value (0 ~ 1 for min and max) to access, this LUT
|
|
14
14
|
// allows for rapid assignment of its spatial bounding box --- MinBounds[3]
|
|
15
15
|
// and MaxBounds[3], with each specific value or entry of this LUT pointing to
|
|
16
16
|
// MinBounds[3] for 0, center point for 1, or MaxBounds[3] for 2.
|
|
17
|
-
|
|
18
|
-
var OCTREE_CHILD_BOUNDS_LUT = [[[0, 1], [0, 1], [0, 1]], [[1, 2], [0, 1], [0, 1]], [[0, 1], [1, 2], [0, 1]], [[1, 2], [1, 2], [0, 1]], [[0, 1], [0, 1], [1, 2]], [[1, 2], [0, 1], [1, 2]], [[0, 1], [1, 2], [1, 2]], [[1, 2], [1, 2], [1, 2]]];
|
|
19
|
-
|
|
17
|
+
const OCTREE_CHILD_BOUNDS_LUT = [[[0, 1], [0, 1], [0, 1]], [[1, 2], [0, 1], [0, 1]], [[0, 1], [1, 2], [0, 1]], [[1, 2], [1, 2], [0, 1]], [[0, 1], [0, 1], [1, 2]], [[1, 2], [0, 1], [1, 2]], [[0, 1], [1, 2], [1, 2]], [[1, 2], [1, 2], [1, 2]]];
|
|
20
18
|
function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
21
19
|
// Set our className
|
|
22
|
-
model.classHierarchy.push('vtkIncrementalOctreeNode');
|
|
20
|
+
model.classHierarchy.push('vtkIncrementalOctreeNode');
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
//------------------------------------------------------------------------------
|
|
23
|
+
publicAPI.createPointIdSet = (initSize, growSize) => {
|
|
25
24
|
if (model.pointIdSet == null) {
|
|
26
|
-
model.pointIdSet = [];
|
|
25
|
+
model.pointIdSet = [];
|
|
26
|
+
// TODO: use initSize and growSize.
|
|
27
27
|
// model.pointIdSet.allocate(initSize, growSize);
|
|
28
28
|
}
|
|
29
|
-
};
|
|
30
|
-
|
|
29
|
+
};
|
|
31
30
|
|
|
32
|
-
|
|
31
|
+
//------------------------------------------------------------------------------
|
|
32
|
+
publicAPI.setBounds = (x1, x2, y1, y2, z1, z2) => {
|
|
33
33
|
if (model.minBounds == null) model.minBounds = [];
|
|
34
34
|
if (model.maxBounds == null) model.maxBounds = [];
|
|
35
35
|
if (model.minDataBounds == null) model.minDataBounds = [];
|
|
@@ -46,10 +46,10 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
46
46
|
model.maxDataBounds[1] = y1;
|
|
47
47
|
model.minDataBounds[2] = z2;
|
|
48
48
|
model.maxDataBounds[2] = z1;
|
|
49
|
-
};
|
|
50
|
-
|
|
49
|
+
};
|
|
51
50
|
|
|
52
|
-
|
|
51
|
+
//------------------------------------------------------------------------------
|
|
52
|
+
publicAPI.getBounds = bounds => {
|
|
53
53
|
bounds[0] = model.minBounds[0];
|
|
54
54
|
bounds[1] = model.maxBounds[0];
|
|
55
55
|
bounds[2] = model.minBounds[1];
|
|
@@ -57,101 +57,80 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
57
57
|
bounds[4] = model.minBounds[2];
|
|
58
58
|
bounds[5] = model.maxBounds[2];
|
|
59
59
|
};
|
|
60
|
+
publicAPI.getChildIndex = point => Number(point[0] > model.children[0].getMaxBoundsByReference()[0]) + (
|
|
61
|
+
// eslint-disable-next-line no-bitwise
|
|
62
|
+
Number(point[1] > model.children[0].getMaxBoundsByReference()[1]) << 1) + (
|
|
63
|
+
// eslint-disable-next-line no-bitwise
|
|
64
|
+
Number(point[2] > model.children[0].getMaxBoundsByReference()[2]) << 2);
|
|
65
|
+
publicAPI.containsPoint = pnt => model.minBounds[0] < pnt[0] && pnt[0] <= model.maxBounds[0] && model.minBounds[1] < pnt[1] && pnt[1] <= model.maxBounds[1] && model.minBounds[2] < pnt[2] && pnt[2] <= model.maxBounds[2] ? 1 : 0;
|
|
66
|
+
publicAPI.containsPointByData = pnt => model.minDataBounds[0] <= pnt[0] && pnt[0] <= model.maxDataBounds[0] && model.minDataBounds[1] <= pnt[1] && pnt[1] <= model.maxDataBounds[1] && model.minDataBounds[2] <= pnt[2] && pnt[2] <= model.maxDataBounds[2] ? 1 : 0;
|
|
60
67
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
Number(point[1] > model.children[0].getMaxBoundsByReference()[1]) << 1) + ( // eslint-disable-next-line no-bitwise
|
|
64
|
-
Number(point[2] > model.children[0].getMaxBoundsByReference()[2]) << 2);
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
publicAPI.containsPoint = function (pnt) {
|
|
68
|
-
return model.minBounds[0] < pnt[0] && pnt[0] <= model.maxBounds[0] && model.minBounds[1] < pnt[1] && pnt[1] <= model.maxBounds[1] && model.minBounds[2] < pnt[2] && pnt[2] <= model.maxBounds[2] ? 1 : 0;
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
publicAPI.containsPointByData = function (pnt) {
|
|
72
|
-
return model.minDataBounds[0] <= pnt[0] && pnt[0] <= model.maxDataBounds[0] && model.minDataBounds[1] <= pnt[1] && pnt[1] <= model.maxDataBounds[1] && model.minDataBounds[2] <= pnt[2] && pnt[2] <= model.maxDataBounds[2] ? 1 : 0;
|
|
73
|
-
}; //------------------------------------------------------------------------------
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
publicAPI.updateCounterAndDataBounds = function (point, nHits, updateData) {
|
|
68
|
+
//------------------------------------------------------------------------------
|
|
69
|
+
publicAPI.updateCounterAndDataBounds = (point, nHits, updateData) => {
|
|
77
70
|
model.numberOfPoints += nHits;
|
|
78
71
|
if (!updateData) return false;
|
|
79
|
-
|
|
80
|
-
|
|
72
|
+
let updated = false;
|
|
81
73
|
if (point[0] < model.minDataBounds[0]) {
|
|
82
74
|
updated = true;
|
|
83
75
|
model.minDataBounds[0] = point[0];
|
|
84
76
|
}
|
|
85
|
-
|
|
86
77
|
if (point[0] > model.maxDataBounds[0]) {
|
|
87
78
|
updated = true;
|
|
88
79
|
model.maxDataBounds[0] = point[0];
|
|
89
80
|
}
|
|
90
|
-
|
|
91
81
|
if (point[1] < model.minDataBounds[1]) {
|
|
92
82
|
updated = true;
|
|
93
83
|
model.minDataBounds[1] = point[1];
|
|
94
84
|
}
|
|
95
|
-
|
|
96
85
|
if (point[1] > model.maxDataBounds[1]) {
|
|
97
86
|
updated = true;
|
|
98
87
|
model.maxDataBounds[1] = point[1];
|
|
99
88
|
}
|
|
100
|
-
|
|
101
89
|
if (point[2] < model.minDataBounds[2]) {
|
|
102
90
|
updated = true;
|
|
103
91
|
model.minDataBounds[2] = point[2];
|
|
104
92
|
}
|
|
105
|
-
|
|
106
93
|
if (point[2] > model.maxDataBounds[2]) {
|
|
107
94
|
updated = true;
|
|
108
95
|
model.maxDataBounds[2] = point[2];
|
|
109
96
|
}
|
|
110
|
-
|
|
111
97
|
return updated;
|
|
112
|
-
};
|
|
113
|
-
|
|
98
|
+
};
|
|
114
99
|
|
|
115
|
-
|
|
116
|
-
|
|
100
|
+
//------------------------------------------------------------------------------
|
|
101
|
+
publicAPI.updateCounterAndDataBoundsRecursively = (point, nHits, updateData, endNode) => {
|
|
102
|
+
const updated = publicAPI.updateCounterAndDataBounds(point, nHits, updateData);
|
|
117
103
|
return model.parent === endNode ? updated : model.parent.updateCounterAndDataBoundsRecursively(point, nHits, updated, endNode);
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
publicAPI.containsDuplicatePointsOnly = function (point) {
|
|
122
|
-
return model.minDataBounds[0] === point[0] && point[0] === model.maxDataBounds[0] && model.minDataBounds[1] === point[1] && point[1] === model.maxDataBounds[1] && model.minDataBounds[2] === point[2] && point[2] === model.maxDataBounds[2];
|
|
123
|
-
}; //------------------------------------------------------------------------------
|
|
124
|
-
|
|
104
|
+
};
|
|
125
105
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}; //------------------------------------------------------------------------------
|
|
106
|
+
//------------------------------------------------------------------------------
|
|
107
|
+
publicAPI.containsDuplicatePointsOnly = point => model.minDataBounds[0] === point[0] && point[0] === model.maxDataBounds[0] && model.minDataBounds[1] === point[1] && point[1] === model.maxDataBounds[1] && model.minDataBounds[2] === point[2] && point[2] === model.maxDataBounds[2];
|
|
129
108
|
|
|
109
|
+
//------------------------------------------------------------------------------
|
|
110
|
+
publicAPI.isLeaf = () => model.children == null;
|
|
130
111
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}; //------------------------------------------------------------------------------
|
|
112
|
+
//------------------------------------------------------------------------------
|
|
113
|
+
publicAPI.getChild = i => model.children[i];
|
|
134
114
|
|
|
115
|
+
//------------------------------------------------------------------------------
|
|
135
116
|
/* eslint-disable no-use-before-define */
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
publicAPI.separateExactlyDuplicatePointsFromNewInsertion = function (points, pntIds, newPnt, pntIdx, maxPts, ptMode) {
|
|
117
|
+
publicAPI.separateExactlyDuplicatePointsFromNewInsertion = (points, pntIds, newPnt, pntIdx, maxPts, ptMode) => {
|
|
139
118
|
// the number of points already maintained in this leaf node
|
|
140
119
|
// >= maxPts AND all of them are exactly duplicate with one another
|
|
141
120
|
// BUT the new point is not a duplicate of them any more
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
121
|
+
let pointIdx = pntIdx;
|
|
122
|
+
let i;
|
|
123
|
+
const dupPnt = [0.0, 0.0, 0.0];
|
|
124
|
+
const octMin = [0.0, 0.0, 0.0];
|
|
125
|
+
const octMid = [0.0, 0.0, 0.0];
|
|
126
|
+
const octMax = [0.0, 0.0, 0.0];
|
|
127
|
+
const boxPtr = [null, null, null];
|
|
128
|
+
let ocNode = null;
|
|
129
|
+
let duplic = publicAPI;
|
|
130
|
+
let single = publicAPI;
|
|
131
|
+
|
|
132
|
+
// the coordinate of the duplicate points: note pntIds == model.pointIdSet
|
|
153
133
|
points.getPoint(pntIds[0], dupPnt);
|
|
154
|
-
|
|
155
134
|
while (duplic === single) {
|
|
156
135
|
// as long as separation has not been achieved
|
|
157
136
|
// update the current (in recursion) node and access the bounding box info
|
|
@@ -161,53 +140,55 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
161
140
|
octMid[2] = (ocNode.minBounds[2] + ocNode.maxBounds[2]) * 0.5;
|
|
162
141
|
boxPtr[0] = ocNode.minBounds;
|
|
163
142
|
boxPtr[1] = octMid;
|
|
164
|
-
boxPtr[2] = ocNode.maxBounds;
|
|
165
|
-
// FIXME: May be too slow to use vtk newInstance()
|
|
143
|
+
boxPtr[2] = ocNode.maxBounds;
|
|
166
144
|
|
|
145
|
+
// create eight child nodes
|
|
146
|
+
// FIXME: May be too slow to use vtk newInstance()
|
|
167
147
|
ocNode.children = [newInstance(), newInstance(), newInstance(), newInstance(), newInstance(), newInstance(), newInstance(), newInstance()];
|
|
168
|
-
|
|
169
148
|
for (i = 0; i < 8; i++) {
|
|
170
149
|
// x-bound: axis 0
|
|
171
150
|
octMin[0] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][0][0]][0];
|
|
172
|
-
octMax[0] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][0][1]][0];
|
|
151
|
+
octMax[0] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][0][1]][0];
|
|
173
152
|
|
|
153
|
+
// y-bound: axis 1
|
|
174
154
|
octMin[1] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][1][0]][1];
|
|
175
|
-
octMax[1] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][1][1]][1];
|
|
155
|
+
octMax[1] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][1][1]][1];
|
|
176
156
|
|
|
157
|
+
// z-bound: axis 2
|
|
177
158
|
octMin[2] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][2][0]][2];
|
|
178
159
|
octMax[2] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][2][1]][2];
|
|
179
160
|
ocNode.children[i] = newInstance();
|
|
180
161
|
ocNode.children[i].setParent(ocNode);
|
|
181
162
|
ocNode.children[i].setBounds(octMin[0], octMax[0], octMin[1], octMax[1], octMin[2], octMax[2]);
|
|
182
|
-
}
|
|
183
|
-
|
|
163
|
+
}
|
|
184
164
|
|
|
165
|
+
// determine the leaf node of the duplicate points & that of the new point
|
|
185
166
|
duplic = ocNode.children[ocNode.getChildIndex(dupPnt)];
|
|
186
167
|
single = ocNode.children[ocNode.getChildIndex(newPnt)];
|
|
187
|
-
}
|
|
168
|
+
}
|
|
169
|
+
// Now the duplicate points have been separated from the new point //
|
|
170
|
+
|
|
188
171
|
// create a vtkIdList object for the new point
|
|
189
172
|
// update the counter and the data bounding box until the root node
|
|
190
173
|
// (including the root node)
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
pointIdx = OCTREENODE_INSERTPOINT[ptMode](points, pointIdx, newPnt); // eslint-disable-next-line no-bitwise
|
|
194
|
-
|
|
174
|
+
pointIdx = OCTREENODE_INSERTPOINT[ptMode](points, pointIdx, newPnt);
|
|
175
|
+
// eslint-disable-next-line no-bitwise
|
|
195
176
|
single.createPointIdSet(maxPts >> 2, maxPts >> 1);
|
|
196
177
|
single.getPointIdSet().push(pointIdx);
|
|
197
|
-
single.updateCounterAndDataBoundsRecursively(newPnt, 1, 1, null);
|
|
178
|
+
single.updateCounterAndDataBoundsRecursively(newPnt, 1, 1, null);
|
|
179
|
+
|
|
180
|
+
// We just need to reference pntIds while un-registering it from 'this'.
|
|
198
181
|
// This avoids deep-copying point ids from pntIds to duplic's PointIdSet.
|
|
199
182
|
// update the counter and the data bounding box, but until 'this' node
|
|
200
183
|
// (excluding 'this' node)
|
|
201
|
-
|
|
202
184
|
duplic.setPointIdSet(pntIds);
|
|
203
185
|
duplic.updateCounterAndDataBoundsRecursively(dupPnt, pntIds.length, 1, publicAPI);
|
|
204
186
|
return pointIdx;
|
|
205
187
|
};
|
|
206
188
|
/* eslint-enable no-use-before-define */
|
|
207
|
-
//------------------------------------------------------------------------------
|
|
208
|
-
|
|
209
189
|
|
|
210
|
-
|
|
190
|
+
//------------------------------------------------------------------------------
|
|
191
|
+
publicAPI.createChildNodes = (points, pntIds, newPnt, pntIdx, maxPts, ptMode, numberOfNodes) => {
|
|
211
192
|
// There are two scenarios for which this function is invoked.
|
|
212
193
|
//
|
|
213
194
|
// (1) the number of points already maintained in this leaf node
|
|
@@ -216,63 +197,65 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
216
197
|
// (2) the number of points already maintained in this leaf node
|
|
217
198
|
// >= maxPts AND all of them are exactly duplicate with one another
|
|
218
199
|
// BUT the new point is not a duplicate of them any more
|
|
200
|
+
|
|
219
201
|
// address case (2) first if necessary
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
202
|
+
let nbNodes = numberOfNodes;
|
|
203
|
+
let pointIdx = pntIdx;
|
|
204
|
+
const sample = [];
|
|
223
205
|
points.getPoint(pntIds[0], sample);
|
|
224
|
-
|
|
225
206
|
if (publicAPI.containsDuplicatePointsOnly(sample)) {
|
|
226
207
|
pointIdx = publicAPI.separateExactlyDuplicatePointsFromNewInsertion(points, pntIds, newPnt, pointIdx, maxPts, ptMode);
|
|
227
208
|
return {
|
|
228
209
|
success: false,
|
|
229
|
-
nbNodes
|
|
230
|
-
pointIdx
|
|
210
|
+
nbNodes,
|
|
211
|
+
pointIdx
|
|
231
212
|
};
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
var i;
|
|
236
|
-
var target;
|
|
237
|
-
var dvidId = -1; // index of the sub-dividing octant, if any
|
|
238
|
-
|
|
239
|
-
var fullId = -1; // index of the full octant, if any
|
|
240
|
-
|
|
241
|
-
var numIds = [0, 0, 0, 0, 0, 0, 0, 0];
|
|
242
|
-
var octMin = [];
|
|
243
|
-
var octMax = [];
|
|
244
|
-
var tempPt = [];
|
|
245
|
-
var tempId;
|
|
246
|
-
var octMid = [(model.minBounds[0] + model.maxBounds[0]) * 0.5, (model.minBounds[1] + model.maxBounds[1]) * 0.5, (model.minBounds[2] + model.maxBounds[2]) * 0.5];
|
|
247
|
-
var boxPtr = [model.minBounds, octMid, model.maxBounds]; // create eight child nodes
|
|
213
|
+
}
|
|
248
214
|
|
|
215
|
+
// then address case (1) below
|
|
216
|
+
let i;
|
|
217
|
+
let target;
|
|
218
|
+
let dvidId = -1; // index of the sub-dividing octant, if any
|
|
219
|
+
let fullId = -1; // index of the full octant, if any
|
|
220
|
+
const numIds = [0, 0, 0, 0, 0, 0, 0, 0];
|
|
221
|
+
const octMin = [];
|
|
222
|
+
const octMax = [];
|
|
223
|
+
const tempPt = [];
|
|
224
|
+
let tempId;
|
|
225
|
+
const octMid = [(model.minBounds[0] + model.maxBounds[0]) * 0.5, (model.minBounds[1] + model.maxBounds[1]) * 0.5, (model.minBounds[2] + model.maxBounds[2]) * 0.5];
|
|
226
|
+
const boxPtr = [model.minBounds, octMid, model.maxBounds];
|
|
227
|
+
|
|
228
|
+
// create eight child nodes
|
|
249
229
|
model.children = [];
|
|
250
|
-
|
|
251
230
|
for (i = 0; i < 8; i++) {
|
|
252
231
|
// x-bound: axis 0
|
|
253
232
|
octMin[0] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][0][0]][0];
|
|
254
|
-
octMax[0] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][0][1]][0];
|
|
233
|
+
octMax[0] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][0][1]][0];
|
|
255
234
|
|
|
235
|
+
// y-bound: axis 1
|
|
256
236
|
octMin[1] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][1][0]][1];
|
|
257
|
-
octMax[1] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][1][1]][1];
|
|
237
|
+
octMax[1] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][1][1]][1];
|
|
258
238
|
|
|
239
|
+
// z-bound: axis 2
|
|
259
240
|
octMin[2] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][2][0]][2];
|
|
260
|
-
octMax[2] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][2][1]][2];
|
|
261
|
-
// eslint-disable-next-line no-use-before-define
|
|
262
|
-
|
|
263
|
-
model.children[i] = newInstance(); // model.children[i].iD = nbNodes++;
|
|
241
|
+
octMax[2] = boxPtr[OCTREE_CHILD_BOUNDS_LUT[i][2][1]][2];
|
|
264
242
|
|
|
243
|
+
// This call internally sets the cener and default data bounding box, too.
|
|
244
|
+
// eslint-disable-next-line no-use-before-define
|
|
245
|
+
model.children[i] = newInstance();
|
|
246
|
+
// model.children[i].iD = nbNodes++;
|
|
265
247
|
model.children[i].setParent(publicAPI);
|
|
266
|
-
model.children[i].setBounds(octMin[0], octMax[0], octMin[1], octMax[1], octMin[2], octMax[2]);
|
|
267
|
-
// eslint-disable-next-line no-bitwise
|
|
248
|
+
model.children[i].setBounds(octMin[0], octMax[0], octMin[1], octMax[1], octMin[2], octMax[2]);
|
|
268
249
|
|
|
250
|
+
// allocate a list of point-indices (size = 2^n) for index registration
|
|
251
|
+
// eslint-disable-next-line no-bitwise
|
|
269
252
|
model.children[i].createPointIdSet(maxPts >> 2, maxPts >> 1);
|
|
270
253
|
}
|
|
271
|
-
|
|
272
254
|
boxPtr[0] = null;
|
|
273
255
|
boxPtr[1] = null;
|
|
274
|
-
boxPtr[2] = null;
|
|
256
|
+
boxPtr[2] = null;
|
|
275
257
|
|
|
258
|
+
// distribute the available point-indices to the eight child nodes
|
|
276
259
|
for (i = 0; i < maxPts; i++) {
|
|
277
260
|
tempId = pntIds[i];
|
|
278
261
|
points.getPoint(tempId, tempPt);
|
|
@@ -280,63 +263,61 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
280
263
|
model.children[target].getPointIdSet().push(tempId);
|
|
281
264
|
model.children[target].updateCounterAndDataBounds(tempPt);
|
|
282
265
|
numIds[target]++;
|
|
283
|
-
}
|
|
284
|
-
|
|
266
|
+
}
|
|
285
267
|
|
|
268
|
+
// locate the full child, just if any
|
|
286
269
|
for (i = 0; i < 8; i++) {
|
|
287
270
|
if (numIds[i] === maxPts) {
|
|
288
271
|
fullId = i;
|
|
289
272
|
break;
|
|
290
273
|
}
|
|
291
274
|
}
|
|
292
|
-
|
|
293
275
|
target = publicAPI.getChildIndex(newPnt);
|
|
294
|
-
|
|
295
276
|
if (fullId === target) {
|
|
296
277
|
// The fact is that we are going to insert the new point to an already
|
|
297
278
|
// full octant (child node). Thus we need to further divide this child
|
|
298
279
|
// to avoid the overflow problem.
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
280
|
+
({
|
|
281
|
+
numberOfNodes: nbNodes,
|
|
282
|
+
pointIdx
|
|
283
|
+
} = model.children[target].createChildNodes(points, pntIds, newPnt, pointIdx, maxPts, ptMode, nbNodes));
|
|
303
284
|
dvidId = fullId;
|
|
304
285
|
} else {
|
|
305
286
|
// the initial division is a success
|
|
306
287
|
pointIdx = OCTREENODE_INSERTPOINT[ptMode](points, pointIdx, newPnt);
|
|
307
288
|
model.children[target].getPointIdSet().push(pointIdx);
|
|
308
|
-
model.children[target].updateCounterAndDataBoundsRecursively(newPnt, 1, 1, null);
|
|
309
|
-
// sub-division of this child node until the next point insertion occurs.
|
|
289
|
+
model.children[target].updateCounterAndDataBoundsRecursively(newPnt, 1, 1, null);
|
|
310
290
|
|
|
291
|
+
// NOTE: The counter below might reach the threshold, though we delay the
|
|
292
|
+
// sub-division of this child node until the next point insertion occurs.
|
|
311
293
|
numIds[target]++;
|
|
312
|
-
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Now it is time to reclaim those un-used vtkIdList objects, of which each
|
|
313
297
|
// either is empty or still needs to be deleted due to further division of
|
|
314
298
|
// the child node. This post-deallocation of the un-used vtkIdList objects
|
|
315
299
|
// (of some child nodes) is based on the assumption that retrieving the
|
|
316
300
|
// 'maxPts' points from vtkPoints and the associated 'maxPts' point-indices
|
|
317
301
|
// from vtkIdList is more expensive than reclaiming at most 8 vtkIdList
|
|
318
302
|
// objects at hand.
|
|
319
|
-
|
|
320
|
-
|
|
321
303
|
for (i = 0; i < 8; i++) {
|
|
322
304
|
if (numIds[i] === 0 || i === dvidId) {
|
|
323
305
|
model.children[i].getPointIdSet().length = 0;
|
|
324
306
|
}
|
|
325
|
-
}
|
|
326
|
-
|
|
307
|
+
}
|
|
327
308
|
|
|
309
|
+
// notify vtkIncrementalOctreeNode::InsertPoint() to destroy pntIds
|
|
328
310
|
return {
|
|
329
311
|
success: true,
|
|
330
312
|
numberOfNodes: nbNodes,
|
|
331
|
-
pointIdx
|
|
313
|
+
pointIdx
|
|
332
314
|
};
|
|
333
|
-
};
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
publicAPI.insertPoint = function (points, newPnt, maxPts, pntId, ptMode, numberOfNodes) {
|
|
337
|
-
var nbNodes = 0;
|
|
338
|
-
var pointIdx = pntId;
|
|
315
|
+
};
|
|
339
316
|
|
|
317
|
+
//------------------------------------------------------------------------------
|
|
318
|
+
publicAPI.insertPoint = (points, newPnt, maxPts, pntId, ptMode, numberOfNodes) => {
|
|
319
|
+
let nbNodes = 0;
|
|
320
|
+
let pointIdx = pntId;
|
|
340
321
|
if (model.pointIdSet) {
|
|
341
322
|
// there has been at least one point index
|
|
342
323
|
if (model.pointIdSet.length < maxPts || publicAPI.containsDuplicatePointsOnly(newPnt)) {
|
|
@@ -350,10 +331,10 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
350
331
|
// overflow: divide this node and delete the list of point-indices.
|
|
351
332
|
// Note that the number of exactly duplicate points might be greater
|
|
352
333
|
// than or equal to maxPts.
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
334
|
+
({
|
|
335
|
+
numberOfNodes: nbNodes,
|
|
336
|
+
pointIdx
|
|
337
|
+
} = publicAPI.createChildNodes(points, model.pointIdSet, newPnt, pointIdx, maxPts, ptMode, numberOfNodes));
|
|
357
338
|
model.pointIdSet = null;
|
|
358
339
|
}
|
|
359
340
|
} else {
|
|
@@ -363,25 +344,23 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
363
344
|
model.pointIdSet.push(pointIdx);
|
|
364
345
|
publicAPI.updateCounterAndDataBoundsRecursively(newPnt, 1, 1, null);
|
|
365
346
|
}
|
|
366
|
-
|
|
367
347
|
return {
|
|
368
348
|
numberOfNodes: numberOfNodes + nbNodes,
|
|
369
|
-
pointIdx
|
|
349
|
+
pointIdx
|
|
370
350
|
};
|
|
371
|
-
};
|
|
372
|
-
|
|
351
|
+
};
|
|
373
352
|
|
|
374
|
-
|
|
353
|
+
//------------------------------------------------------------------------------
|
|
354
|
+
publicAPI.getDistance2ToBoundary = (point, closest, innerOnly, rootNode, checkData) => {
|
|
375
355
|
// It is mandatory that GetMinDataBounds() and GetMaxDataBounds() be used.
|
|
376
356
|
// Direct access to MinDataBounds and MaxDataBounds might incur problems.
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
357
|
+
let thisMin = null;
|
|
358
|
+
let thisMax = null;
|
|
359
|
+
let rootMin = null;
|
|
360
|
+
let rootMax = null;
|
|
361
|
+
// TODO: Check
|
|
381
362
|
// let minDist = VTK_DOUBLE_MAX;
|
|
382
|
-
|
|
383
|
-
var minDist = Number.MAX_VALUE; // minimum distance to the boundaries
|
|
384
|
-
|
|
363
|
+
let minDist = Number.MAX_VALUE; // minimum distance to the boundaries
|
|
385
364
|
if (checkData) {
|
|
386
365
|
thisMin = publicAPI.getMinDataBounds();
|
|
387
366
|
thisMax = publicAPI.getMaxDataBounds();
|
|
@@ -393,59 +372,57 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
393
372
|
rootMin = rootNode.getMinBounds();
|
|
394
373
|
rootMax = rootNode.getMaxBounds();
|
|
395
374
|
}
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
var xyzFlag = (withinZ << 2) + (withinY << 1) + withinX;
|
|
410
|
-
|
|
375
|
+
let minFace = 0; // index of the face with min distance to the point
|
|
376
|
+
const beXless = Number(point[0] < thisMin[0]);
|
|
377
|
+
const beXmore = Number(point[0] > thisMax[0]);
|
|
378
|
+
const beYless = Number(point[1] < thisMin[1]);
|
|
379
|
+
const beYmore = Number(point[1] > thisMax[1]);
|
|
380
|
+
const beZless = Number(point[2] < thisMin[2]);
|
|
381
|
+
const beZmore = Number(point[2] > thisMax[2]);
|
|
382
|
+
const withinX = Number(!beXless && !beXmore);
|
|
383
|
+
const withinY = Number(!beYless && !beYmore);
|
|
384
|
+
const withinZ = Number(!beZless && !beZmore);
|
|
385
|
+
// eslint-disable-next-line no-bitwise
|
|
386
|
+
const xyzFlag = (withinZ << 2) + (withinY << 1) + withinX;
|
|
411
387
|
switch (xyzFlag) {
|
|
412
388
|
case 0:
|
|
413
389
|
{
|
|
414
390
|
// withinZ = 0; withinY = 0; withinX = 0
|
|
415
391
|
// closest to a corner
|
|
392
|
+
|
|
416
393
|
closest[0] = beXless ? thisMin[0] : thisMax[0];
|
|
417
394
|
closest[1] = beYless ? thisMin[1] : thisMax[1];
|
|
418
395
|
closest[2] = beZless ? thisMin[2] : thisMax[2];
|
|
419
396
|
minDist = distance2BetweenPoints(point, closest);
|
|
420
397
|
break;
|
|
421
398
|
}
|
|
422
|
-
|
|
423
399
|
case 1:
|
|
424
400
|
{
|
|
425
401
|
// withinZ = 0; withinY = 0; withinX = 1
|
|
426
402
|
// closest to an x-aligned edge
|
|
403
|
+
|
|
427
404
|
closest[0] = point[0];
|
|
428
405
|
closest[1] = beYless ? thisMin[1] : thisMax[1];
|
|
429
406
|
closest[2] = beZless ? thisMin[2] : thisMax[2];
|
|
430
407
|
minDist = distance2BetweenPoints(point, closest);
|
|
431
408
|
break;
|
|
432
409
|
}
|
|
433
|
-
|
|
434
410
|
case 2:
|
|
435
411
|
{
|
|
436
412
|
// withinZ = 0; withinY = 1; withinX = 0
|
|
437
413
|
// closest to a y-aligned edge
|
|
414
|
+
|
|
438
415
|
closest[0] = beXless ? thisMin[0] : thisMax[0];
|
|
439
416
|
closest[1] = point[1];
|
|
440
417
|
closest[2] = beZless ? thisMin[2] : thisMax[2];
|
|
441
418
|
minDist = distance2BetweenPoints(point, closest);
|
|
442
419
|
break;
|
|
443
420
|
}
|
|
444
|
-
|
|
445
421
|
case 3:
|
|
446
422
|
{
|
|
447
423
|
// withinZ = 0; withinY = 1; withinX = 1
|
|
448
424
|
// closest to a z-face
|
|
425
|
+
|
|
449
426
|
if (beZless) {
|
|
450
427
|
minDist = thisMin[2] - point[2];
|
|
451
428
|
closest[2] = thisMin[2];
|
|
@@ -453,28 +430,27 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
453
430
|
minDist = point[2] - thisMax[2];
|
|
454
431
|
closest[2] = thisMax[2];
|
|
455
432
|
}
|
|
456
|
-
|
|
457
433
|
minDist *= minDist;
|
|
458
434
|
closest[0] = point[0];
|
|
459
435
|
closest[1] = point[1];
|
|
460
436
|
break;
|
|
461
437
|
}
|
|
462
|
-
|
|
463
438
|
case 4:
|
|
464
439
|
{
|
|
465
440
|
// withinZ = 1; withinY = 0; withinX = 0
|
|
466
441
|
// cloest to a z-aligned edge
|
|
442
|
+
|
|
467
443
|
closest[0] = beXless ? thisMin[0] : thisMax[0];
|
|
468
444
|
closest[1] = beYless ? thisMin[1] : thisMax[1];
|
|
469
445
|
closest[2] = point[2];
|
|
470
446
|
minDist = distance2BetweenPoints(point, closest);
|
|
471
447
|
break;
|
|
472
448
|
}
|
|
473
|
-
|
|
474
449
|
case 5:
|
|
475
450
|
{
|
|
476
451
|
// withinZ = 1; withinY = 0; withinX = 1
|
|
477
452
|
// closest to a y-face
|
|
453
|
+
|
|
478
454
|
if (beYless) {
|
|
479
455
|
minDist = thisMin[1] - point[1];
|
|
480
456
|
closest[1] = thisMin[1];
|
|
@@ -482,17 +458,16 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
482
458
|
minDist = point[1] - thisMax[1];
|
|
483
459
|
closest[1] = thisMax[1];
|
|
484
460
|
}
|
|
485
|
-
|
|
486
461
|
minDist *= minDist;
|
|
487
462
|
closest[0] = point[0];
|
|
488
463
|
closest[2] = point[2];
|
|
489
464
|
break;
|
|
490
465
|
}
|
|
491
|
-
|
|
492
466
|
case 6:
|
|
493
467
|
{
|
|
494
468
|
// withinZ = 1; withinY = 1; withinX = 0
|
|
495
469
|
// closest to an x-face
|
|
470
|
+
|
|
496
471
|
if (beXless) {
|
|
497
472
|
minDist = thisMin[0] - point[0];
|
|
498
473
|
closest[0] = thisMin[0];
|
|
@@ -500,114 +475,100 @@ function vtkIncrementalOctreeNode(publicAPI, model) {
|
|
|
500
475
|
minDist = point[0] - thisMax[0];
|
|
501
476
|
closest[0] = thisMax[0];
|
|
502
477
|
}
|
|
503
|
-
|
|
504
478
|
minDist *= minDist;
|
|
505
479
|
closest[1] = point[1];
|
|
506
480
|
closest[2] = point[2];
|
|
507
481
|
break;
|
|
508
482
|
}
|
|
509
|
-
|
|
510
483
|
case 7:
|
|
511
484
|
{
|
|
512
485
|
// withinZ = 1; withinY = 1; withinZ = 1
|
|
513
486
|
// point is inside the box
|
|
487
|
+
|
|
514
488
|
if (innerOnly) {
|
|
515
489
|
// check only inner boundaries
|
|
516
|
-
|
|
490
|
+
let faceDst;
|
|
517
491
|
faceDst = point[0] - thisMin[0]; // x-min face
|
|
518
|
-
|
|
519
492
|
if (thisMin[0] !== rootMin[0] && faceDst < minDist) {
|
|
520
493
|
minFace = 0;
|
|
521
494
|
minDist = faceDst;
|
|
522
495
|
}
|
|
523
|
-
|
|
524
496
|
faceDst = thisMax[0] - point[0]; // x-max face
|
|
525
|
-
|
|
526
497
|
if (thisMax[0] !== rootMax[0] && faceDst < minDist) {
|
|
527
498
|
minFace = 1;
|
|
528
499
|
minDist = faceDst;
|
|
529
500
|
}
|
|
530
|
-
|
|
531
501
|
faceDst = point[1] - thisMin[1]; // y-min face
|
|
532
|
-
|
|
533
502
|
if (thisMin[1] !== rootMin[1] && faceDst < minDist) {
|
|
534
503
|
minFace = 2;
|
|
535
504
|
minDist = faceDst;
|
|
536
505
|
}
|
|
537
|
-
|
|
538
506
|
faceDst = thisMax[1] - point[1]; // y-max face
|
|
539
|
-
|
|
540
507
|
if (thisMax[1] !== rootMax[1] && faceDst < minDist) {
|
|
541
508
|
minFace = 3;
|
|
542
509
|
minDist = faceDst;
|
|
543
510
|
}
|
|
544
|
-
|
|
545
511
|
faceDst = point[2] - thisMin[2]; // z-min face
|
|
546
|
-
|
|
547
512
|
if (thisMin[2] !== rootMin[2] && faceDst < minDist) {
|
|
548
513
|
minFace = 4;
|
|
549
514
|
minDist = faceDst;
|
|
550
515
|
}
|
|
551
|
-
|
|
552
516
|
faceDst = thisMax[2] - point[2]; // z-max face
|
|
553
|
-
|
|
554
517
|
if (thisMax[2] !== rootMax[2] && faceDst < minDist) {
|
|
555
518
|
minFace = 5;
|
|
556
519
|
minDist = faceDst;
|
|
557
520
|
}
|
|
558
521
|
} else {
|
|
559
522
|
// check all boundaries
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
for (var i = 0; i < 6; i++) {
|
|
523
|
+
const tmpDist = [point[0] - thisMin[0], thisMax[0] - point[0], point[1] - thisMin[1], thisMax[1] - point[1], point[2] - thisMin[2], thisMax[2] - point[2]];
|
|
524
|
+
for (let i = 0; i < 6; i++) {
|
|
563
525
|
if (tmpDist[i] < minDist) {
|
|
564
526
|
minFace = i;
|
|
565
527
|
minDist = tmpDist[i];
|
|
566
528
|
}
|
|
567
529
|
}
|
|
568
|
-
}
|
|
569
|
-
|
|
530
|
+
}
|
|
570
531
|
|
|
532
|
+
// no square operation if no any inner boundary
|
|
571
533
|
if (minDist !== Number.MAX_VALUE) {
|
|
572
534
|
minDist *= minDist;
|
|
573
535
|
}
|
|
574
|
-
|
|
575
536
|
closest[0] = point[0];
|
|
576
537
|
closest[1] = point[1];
|
|
577
|
-
closest[2] = point[2];
|
|
538
|
+
closest[2] = point[2];
|
|
539
|
+
|
|
540
|
+
// minFace: the quad with the min distance to the point
|
|
578
541
|
// 0: x-min face ===> xyzIndx = 0: x and minFace & 1 = 0: thisMin
|
|
579
542
|
// 1: x-max face ===> xyzIndx = 0: x and minFace & 1 = 1: thisMax
|
|
580
543
|
// 2: y-min face ===> xyzIndx = 1: y and minFace & 1 = 0: thisMin
|
|
581
544
|
// 3: y-max face ===> xyzIndx = 1: y and minFace & 1 = 1: thisMax
|
|
582
545
|
// 4: z-min face ===> xyzIndx = 2: z and minFace & 1 = 0: thisMin
|
|
583
546
|
// 5: z-max face ===> xyzIndx = 2: z and minFace & 1 = 1: thisMax
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
547
|
+
const pMinMax = [thisMin, thisMax];
|
|
548
|
+
// eslint-disable-next-line no-bitwise
|
|
549
|
+
const xyzIndx = minFace >> 1;
|
|
550
|
+
// eslint-disable-next-line no-bitwise
|
|
589
551
|
closest[xyzIndx] = pMinMax[minFace & 1][xyzIndx];
|
|
590
552
|
break;
|
|
591
553
|
}
|
|
592
|
-
|
|
593
554
|
default:
|
|
594
555
|
vtkErrorMacro('unexpected case in getDistance2ToBoundary');
|
|
595
556
|
}
|
|
596
|
-
|
|
597
557
|
return minDist;
|
|
598
|
-
};
|
|
599
|
-
|
|
558
|
+
};
|
|
600
559
|
|
|
601
|
-
|
|
602
|
-
|
|
560
|
+
//------------------------------------------------------------------------------
|
|
561
|
+
publicAPI.getDistance2ToInnerBoundary = (point, rootNode) => {
|
|
562
|
+
const dummy = [];
|
|
603
563
|
return publicAPI.getDistance2ToBoundary(point, dummy, 0, rootNode, 0);
|
|
604
564
|
};
|
|
605
|
-
}
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
// ----------------------------------------------------------------------------
|
|
606
568
|
// Object factory
|
|
607
569
|
// ----------------------------------------------------------------------------
|
|
608
570
|
|
|
609
|
-
|
|
610
|
-
var DEFAULT_VALUES = {
|
|
571
|
+
const DEFAULT_VALUES = {
|
|
611
572
|
pointIdSet: null,
|
|
612
573
|
minBounds: null,
|
|
613
574
|
maxBounds: null,
|
|
@@ -615,26 +576,35 @@ var DEFAULT_VALUES = {
|
|
|
615
576
|
maxDataBounds: null,
|
|
616
577
|
parent: null,
|
|
617
578
|
children: null
|
|
618
|
-
};
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
// ----------------------------------------------------------------------------
|
|
619
582
|
|
|
620
583
|
function extend(publicAPI, model) {
|
|
621
|
-
|
|
622
|
-
Object.assign(model, DEFAULT_VALUES, initialValues);
|
|
584
|
+
let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
585
|
+
Object.assign(model, DEFAULT_VALUES, initialValues);
|
|
623
586
|
|
|
587
|
+
// Make this a VTK object
|
|
624
588
|
macro.obj(publicAPI, model);
|
|
625
589
|
macro.setGetArray(publicAPI, model, ['minBounds', 'maxBounds', 'minDataBounds', 'maxDataBounds'], 6);
|
|
626
|
-
macro.get(publicAPI, model, ['pointIdSet', 'numberOfPoints']);
|
|
590
|
+
macro.get(publicAPI, model, ['pointIdSet', 'numberOfPoints']);
|
|
627
591
|
|
|
628
|
-
|
|
592
|
+
// TODO: No get?
|
|
593
|
+
macro.set(publicAPI, model, ['parent']);
|
|
629
594
|
|
|
595
|
+
// Object specific methods
|
|
630
596
|
vtkIncrementalOctreeNode(publicAPI, model);
|
|
631
|
-
}
|
|
597
|
+
}
|
|
632
598
|
|
|
633
|
-
|
|
599
|
+
// ----------------------------------------------------------------------------
|
|
600
|
+
|
|
601
|
+
const newInstance = macro.newInstance(extend, 'vtkIncrementalOctreeNode');
|
|
602
|
+
|
|
603
|
+
// ----------------------------------------------------------------------------
|
|
634
604
|
|
|
635
605
|
var vtkIncrementalOctreeNode$1 = {
|
|
636
|
-
newInstance
|
|
637
|
-
extend
|
|
606
|
+
newInstance,
|
|
607
|
+
extend
|
|
638
608
|
};
|
|
639
609
|
|
|
640
610
|
export { vtkIncrementalOctreeNode$1 as default, extend, newInstance };
|