@kitware/vtk.js 28.10.2 → 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 +754 -942
- 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 +85 -144
- 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 +192 -256
- 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 +443 -608
- 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 +40 -38
- 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 +133 -209
- package/Widgets/Widgets3D/ResliceCursorWidget/cprBehavior.js +26 -41
- package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +89 -116
- 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,4 +1,4 @@
|
|
|
1
|
-
import macro from '../../
|
|
1
|
+
import { m as macro } from '../../macros2.js';
|
|
2
2
|
import vtkCellArray from '../../Common/Core/CellArray.js';
|
|
3
3
|
import vtkDataArray from '../../Common/Core/DataArray.js';
|
|
4
4
|
import { l as normalize, j as cross, n as norm, d as dot, e as distance2BetweenPoints } from '../../Common/Core/Math/index.js';
|
|
@@ -8,482 +8,414 @@ import { DesiredOutputPrecision } from '../../Common/DataModel/DataSetAttributes
|
|
|
8
8
|
import { VtkDataTypes } from '../../Common/Core/DataArray/Constants.js';
|
|
9
9
|
import Constants from './TubeFilter/Constants.js';
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const {
|
|
12
|
+
VaryRadius,
|
|
13
|
+
GenerateTCoords
|
|
14
|
+
} = Constants;
|
|
15
|
+
const {
|
|
16
|
+
vtkDebugMacro,
|
|
17
|
+
vtkErrorMacro,
|
|
18
|
+
vtkWarningMacro
|
|
19
|
+
} = macro;
|
|
20
|
+
|
|
21
|
+
// ----------------------------------------------------------------------------
|
|
16
22
|
// vtkTubeFilter methods
|
|
17
23
|
// ----------------------------------------------------------------------------
|
|
18
24
|
|
|
19
25
|
function vtkTubeFilter(publicAPI, model) {
|
|
20
26
|
// Set our classname
|
|
21
27
|
model.classHierarchy.push('vtkTubeFilter');
|
|
22
|
-
|
|
23
28
|
function computeOffset(offset, npts) {
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
let newOffset = offset;
|
|
26
30
|
if (model.sidesShareVertices) {
|
|
27
31
|
newOffset += model.numberOfSides * npts;
|
|
28
32
|
} else {
|
|
29
33
|
// points are duplicated
|
|
30
34
|
newOffset += 2 * model.numberOfSides * npts;
|
|
31
35
|
}
|
|
32
|
-
|
|
33
36
|
if (model.capping) {
|
|
34
37
|
// cap points are duplicated
|
|
35
38
|
newOffset += 2 * model.numberOfSides;
|
|
36
39
|
}
|
|
37
|
-
|
|
38
40
|
return newOffset;
|
|
39
41
|
}
|
|
40
|
-
|
|
41
42
|
function findNextValidSegment(points, pointIds, start) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
const ptId = pointIds[start];
|
|
44
|
+
const ps = points.slice(3 * ptId, 3 * (ptId + 1));
|
|
45
|
+
let end = start + 1;
|
|
46
46
|
while (end < pointIds.length) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
const endPtId = pointIds[end];
|
|
48
|
+
const pe = points.slice(3 * endPtId, 3 * (endPtId + 1));
|
|
50
49
|
if (ps !== pe) {
|
|
51
50
|
return end - 1;
|
|
52
51
|
}
|
|
53
|
-
|
|
54
52
|
++end;
|
|
55
53
|
}
|
|
56
|
-
|
|
57
54
|
return pointIds.length;
|
|
58
55
|
}
|
|
59
|
-
|
|
60
56
|
function generateSlidingNormals(pts, lines, normals) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
for (var i = 0; i < lineData.length; i += npts + 1) {
|
|
57
|
+
let firstNormal = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
58
|
+
let normal = [0.0, 0.0, 1.0];
|
|
59
|
+
const lineData = lines;
|
|
60
|
+
// lid = 0;
|
|
61
|
+
let npts = lineData[0];
|
|
62
|
+
for (let i = 0; i < lineData.length; i += npts + 1) {
|
|
68
63
|
npts = lineData[i];
|
|
69
|
-
|
|
70
64
|
if (npts === 1) {
|
|
71
65
|
// return arbitrary
|
|
72
66
|
normals.setTuple(lineData[i + 1], normal);
|
|
73
67
|
} else if (npts > 1) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
68
|
+
let sNextId = 0;
|
|
69
|
+
let sPrev = [0, 0, 0];
|
|
70
|
+
const sNext = [0, 0, 0];
|
|
71
|
+
const linePts = lineData.slice(i + 1, i + 1 + npts);
|
|
78
72
|
sNextId = findNextValidSegment(pts, linePts, 0);
|
|
79
|
-
|
|
80
73
|
if (sNextId !== npts) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
pt2 = pts.slice(3 * pt2Id, 3 * (pt2Id + 1));
|
|
104
|
-
|
|
105
|
-
for (var j = 0; j < 3; ++j) {
|
|
106
|
-
sNext[j] = pt2[j] - pt1[j];
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
normalize(sNext); // now the starting normal should simply be the cross product.
|
|
110
|
-
// In the following if statement, we check for the case where
|
|
111
|
-
// the two segments are parallel, in which case, continue
|
|
112
|
-
// searching for the next valid segment
|
|
113
|
-
|
|
114
|
-
var n = [0.0, 0.0, 0.0];
|
|
115
|
-
cross(sPrev, sNext, n);
|
|
116
|
-
|
|
117
|
-
if (norm(n) > 1.0e-3) {
|
|
118
|
-
normal = n;
|
|
119
|
-
sPrev = sNext;
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
74
|
+
// at least one valid segment
|
|
75
|
+
let pt1Id = linePts[sNextId];
|
|
76
|
+
let pt1 = pts.slice(3 * pt1Id, 3 * (pt1Id + 1));
|
|
77
|
+
let pt2Id = linePts[sNextId + 1];
|
|
78
|
+
let pt2 = pts.slice(3 * pt2Id, 3 * (pt2Id + 1));
|
|
79
|
+
sPrev = pt2.map((elem, idx) => elem - pt1[idx]);
|
|
80
|
+
normalize(sPrev);
|
|
81
|
+
|
|
82
|
+
// compute first normal
|
|
83
|
+
if (firstNormal) {
|
|
84
|
+
normal = firstNormal;
|
|
85
|
+
} else {
|
|
86
|
+
// find the next valid, non-parallel segment
|
|
87
|
+
while (++sNextId < npts) {
|
|
88
|
+
sNextId = findNextValidSegment(pts, linePts, sNextId);
|
|
89
|
+
if (sNextId !== npts) {
|
|
90
|
+
pt1Id = linePts[sNextId];
|
|
91
|
+
pt1 = pts.slice(3 * pt1Id, 3 * (pt1Id + 1));
|
|
92
|
+
pt2Id = linePts[sNextId + 1];
|
|
93
|
+
pt2 = pts.slice(3 * pt2Id, 3 * (pt2Id + 1));
|
|
94
|
+
for (let j = 0; j < 3; ++j) {
|
|
95
|
+
sNext[j] = pt2[j] - pt1[j];
|
|
122
96
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
//
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
97
|
+
normalize(sNext);
|
|
98
|
+
|
|
99
|
+
// now the starting normal should simply be the cross product.
|
|
100
|
+
// In the following if statement, we check for the case where
|
|
101
|
+
// the two segments are parallel, in which case, continue
|
|
102
|
+
// searching for the next valid segment
|
|
103
|
+
const n = [0.0, 0.0, 0.0];
|
|
104
|
+
cross(sPrev, sNext, n);
|
|
105
|
+
if (norm(n) > 1.0e-3) {
|
|
106
|
+
normal = n;
|
|
107
|
+
sPrev = sNext;
|
|
108
|
+
break;
|
|
135
109
|
}
|
|
136
110
|
}
|
|
137
111
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
pt1Id = linePts[sNextId];
|
|
151
|
-
pt1 = pts.slice(3 * pt1Id, 3 * (pt1Id + 1));
|
|
152
|
-
pt2Id = linePts[sNextId + 1];
|
|
153
|
-
pt2 = pts.slice(3 * pt2Id, 3 * (pt2Id + 1));
|
|
154
|
-
|
|
155
|
-
for (var _j2 = 0; _j2 < 3; ++_j2) {
|
|
156
|
-
sNext[_j2] = pt2[_j2] - pt1[_j2];
|
|
112
|
+
if (sNextId >= npts) {
|
|
113
|
+
// only one valid segment
|
|
114
|
+
// a little trick to find orthogonal normal
|
|
115
|
+
for (let j = 0; j < 3; ++j) {
|
|
116
|
+
if (sPrev[j] !== 0.0) {
|
|
117
|
+
normal[(j + 2) % 3] = 0.0;
|
|
118
|
+
normal[(j + 1) % 3] = 1.0;
|
|
119
|
+
normal[j] = -sPrev[(j + 1) % 3] / sPrev[j];
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
157
122
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
normalize(normal);
|
|
126
|
+
|
|
127
|
+
// compute remaining normals
|
|
128
|
+
let lastNormalId = 0;
|
|
129
|
+
while (++sNextId < npts) {
|
|
130
|
+
sNextId = findNextValidSegment(pts, linePts, sNextId);
|
|
131
|
+
if (sNextId === npts) {
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
pt1Id = linePts[sNextId];
|
|
135
|
+
pt1 = pts.slice(3 * pt1Id, 3 * (pt1Id + 1));
|
|
136
|
+
pt2Id = linePts[sNextId + 1];
|
|
137
|
+
pt2 = pts.slice(3 * pt2Id, 3 * (pt2Id + 1));
|
|
138
|
+
for (let j = 0; j < 3; ++j) {
|
|
139
|
+
sNext[j] = pt2[j] - pt1[j];
|
|
140
|
+
}
|
|
141
|
+
normalize(sNext);
|
|
142
|
+
|
|
143
|
+
// compute rotation vector
|
|
144
|
+
const w = [0.0, 0.0, 0.0];
|
|
145
|
+
cross(sPrev, normal, w);
|
|
146
|
+
if (normalize(w) !== 0.0) {
|
|
147
|
+
// can't use this segment otherwise
|
|
148
|
+
const q = [0.0, 0.0, 0.0];
|
|
149
|
+
cross(sNext, sPrev, q);
|
|
150
|
+
if (normalize(q) !== 0.0) {
|
|
165
151
|
// can't use this segment otherwise
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
for (var _j3 = 0; _j3 < 3; ++_j3) {
|
|
183
|
-
c[_j3] = sNext[_j3] + sPrev[_j3];
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
normalize(c);
|
|
187
|
-
cross(c, q, w);
|
|
188
|
-
cross(sPrev, q, c);
|
|
189
|
-
|
|
190
|
-
if (dot(normal, c) * dot(w, c) < 0.0) {
|
|
191
|
-
f2 *= -1.0;
|
|
192
|
-
} // insert current normal before updating
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
for (var _j4 = lastNormalId; _j4 < sNextId; ++_j4) {
|
|
196
|
-
normals.setTuple(linePts[_j4], normal);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
lastNormalId = sNextId;
|
|
200
|
-
sPrev = sNext; // compute next normal
|
|
201
|
-
|
|
202
|
-
normal = f1 * q + f2 * w;
|
|
152
|
+
const f1 = dot(q, normal);
|
|
153
|
+
let f2 = 1.0 - f1 * f1;
|
|
154
|
+
if (f2 > 0.0) {
|
|
155
|
+
f2 = Math.sqrt(f2);
|
|
156
|
+
} else {
|
|
157
|
+
f2 = 0.0;
|
|
158
|
+
}
|
|
159
|
+
const c = [0, 0, 0];
|
|
160
|
+
for (let j = 0; j < 3; ++j) {
|
|
161
|
+
c[j] = sNext[j] + sPrev[j];
|
|
162
|
+
}
|
|
163
|
+
normalize(c);
|
|
164
|
+
cross(c, q, w);
|
|
165
|
+
cross(sPrev, q, c);
|
|
166
|
+
if (dot(normal, c) * dot(w, c) < 0.0) {
|
|
167
|
+
f2 *= -1.0;
|
|
203
168
|
}
|
|
204
|
-
}
|
|
205
|
-
} // insert last normal for the remaining points
|
|
206
169
|
|
|
170
|
+
// insert current normal before updating
|
|
171
|
+
for (let j = lastNormalId; j < sNextId; ++j) {
|
|
172
|
+
normals.setTuple(linePts[j], normal);
|
|
173
|
+
}
|
|
174
|
+
lastNormalId = sNextId;
|
|
175
|
+
sPrev = sNext;
|
|
207
176
|
|
|
208
|
-
|
|
209
|
-
|
|
177
|
+
// compute next normal
|
|
178
|
+
normal = f1 * q + f2 * w;
|
|
179
|
+
}
|
|
210
180
|
}
|
|
211
|
-
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// insert last normal for the remaining points
|
|
184
|
+
for (let j = lastNormalId; j < npts; ++j) {
|
|
185
|
+
normals.setTuple(linePts[j], normal);
|
|
186
|
+
}
|
|
212
187
|
} else {
|
|
213
188
|
// no valid segments
|
|
214
|
-
for (
|
|
189
|
+
for (let j = 0; j < npts; ++j) {
|
|
215
190
|
normals.setTuple(linePts[j], normal);
|
|
216
191
|
}
|
|
217
192
|
}
|
|
218
193
|
}
|
|
219
194
|
}
|
|
220
|
-
|
|
221
195
|
return 1;
|
|
222
196
|
}
|
|
223
|
-
|
|
224
197
|
function generatePoints(offset, npts, pts, inPts, newPts, pd, outPD, newNormals, inScalars, range, inVectors, maxSpeed, inNormals, theta) {
|
|
225
198
|
// Use averaged segment to create beveled effect.
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
for (var j = 0; j < npts; ++j) {
|
|
199
|
+
const sNext = [0.0, 0.0, 0.0];
|
|
200
|
+
const sPrev = [0.0, 0.0, 0.0];
|
|
201
|
+
const startCapNorm = [0.0, 0.0, 0.0];
|
|
202
|
+
const endCapNorm = [0.0, 0.0, 0.0];
|
|
203
|
+
let p = [0.0, 0.0, 0.0];
|
|
204
|
+
let pNext = [0.0, 0.0, 0.0];
|
|
205
|
+
let s = [0.0, 0.0, 0.0];
|
|
206
|
+
let n = [0.0, 0.0, 0.0];
|
|
207
|
+
const w = [0.0, 0.0, 0.0];
|
|
208
|
+
const nP = [0.0, 0.0, 0.0];
|
|
209
|
+
const normal = [0.0, 0.0, 0.0];
|
|
210
|
+
let sFactor = 1.0;
|
|
211
|
+
let ptId = offset;
|
|
212
|
+
const vector = [];
|
|
213
|
+
for (let j = 0; j < npts; ++j) {
|
|
242
214
|
// First point
|
|
243
215
|
if (j === 0) {
|
|
244
216
|
p = inPts.slice(3 * pts[0], 3 * (pts[0] + 1));
|
|
245
217
|
pNext = inPts.slice(3 * pts[1], 3 * (pts[1] + 1));
|
|
246
|
-
|
|
247
|
-
for (var i = 0; i < 3; ++i) {
|
|
218
|
+
for (let i = 0; i < 3; ++i) {
|
|
248
219
|
sNext[i] = pNext[i] - p[i];
|
|
249
220
|
sPrev[i] = sNext[i];
|
|
250
221
|
startCapNorm[i] = -sPrev[i];
|
|
251
222
|
}
|
|
252
|
-
|
|
253
223
|
normalize(startCapNorm);
|
|
254
224
|
} else if (j === npts - 1) {
|
|
255
|
-
for (
|
|
256
|
-
sPrev[
|
|
257
|
-
p[
|
|
258
|
-
endCapNorm[
|
|
225
|
+
for (let i = 0; i < 3; ++i) {
|
|
226
|
+
sPrev[i] = sNext[i];
|
|
227
|
+
p[i] = pNext[i];
|
|
228
|
+
endCapNorm[i] = sNext[i];
|
|
259
229
|
}
|
|
260
|
-
|
|
261
230
|
normalize(endCapNorm);
|
|
262
231
|
} else {
|
|
263
|
-
for (
|
|
264
|
-
p[
|
|
232
|
+
for (let i = 0; i < 3; ++i) {
|
|
233
|
+
p[i] = pNext[i];
|
|
265
234
|
}
|
|
266
|
-
|
|
267
235
|
pNext = inPts.slice(3 * pts[j + 1], 3 * (pts[j + 1] + 1));
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
sNext[_i3] = pNext[_i3] - p[_i3];
|
|
236
|
+
for (let i = 0; i < 3; ++i) {
|
|
237
|
+
sPrev[i] = sNext[i];
|
|
238
|
+
sNext[i] = pNext[i] - p[i];
|
|
272
239
|
}
|
|
273
240
|
}
|
|
274
|
-
|
|
275
241
|
if (normalize(sNext) === 0.0) {
|
|
276
242
|
vtkWarningMacro('Coincident points!');
|
|
277
243
|
return 0;
|
|
278
244
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
s[_i4] = (sPrev[_i4] + sNext[_i4]) / 2.0; // average vector
|
|
245
|
+
for (let i = 0; i < 3; ++i) {
|
|
246
|
+
s[i] = (sPrev[i] + sNext[i]) / 2.0; // average vector
|
|
282
247
|
}
|
|
283
248
|
|
|
284
|
-
n = inNormals.slice(3 * pts[j], 3 * (pts[j] + 1));
|
|
285
|
-
|
|
249
|
+
n = inNormals.slice(3 * pts[j], 3 * (pts[j] + 1));
|
|
250
|
+
// if s is zero then just use sPrev cross n
|
|
286
251
|
if (normalize(s) === 0.0) {
|
|
287
252
|
cross(sPrev, n, s);
|
|
288
|
-
|
|
289
253
|
if (normalize(s) === 0.0) {
|
|
290
254
|
vtkDebugMacro('Using alternate bevel vector');
|
|
291
255
|
}
|
|
292
256
|
}
|
|
293
|
-
|
|
294
257
|
cross(s, n, w);
|
|
295
|
-
|
|
296
258
|
if (normalize(w) === 0.0) {
|
|
297
|
-
|
|
298
|
-
msg +=
|
|
299
|
-
msg +=
|
|
259
|
+
let msg = 'Bad normal: s = ';
|
|
260
|
+
msg += `${s[0]}, ${s[1]}, ${s[2]}`;
|
|
261
|
+
msg += ` n = ${n[0]}, ${n[1]}, ${n[2]}`;
|
|
300
262
|
vtkWarningMacro(msg);
|
|
301
263
|
return 0;
|
|
302
264
|
}
|
|
303
|
-
|
|
304
265
|
cross(w, s, nP); // create orthogonal coordinate system
|
|
266
|
+
normalize(nP);
|
|
305
267
|
|
|
306
|
-
|
|
307
|
-
|
|
268
|
+
// Compute a scalar factor based on scalars or vectors
|
|
308
269
|
if (inScalars && model.varyRadius === VaryRadius.VARY_RADIUS_BY_SCALAR) {
|
|
309
270
|
sFactor = 1.0 + (model.radiusFactor - 1.0) * (inScalars.getComponent(pts[j], 0) - range[0]) / (range[1] - range[0]);
|
|
310
271
|
} else if (inVectors && model.varyRadius === VaryRadius.VARY_RADIUS_BY_VECTOR) {
|
|
311
272
|
sFactor = Math.sqrt(maxSpeed / norm(inVectors.getTuple(pts[j], vector)));
|
|
312
|
-
|
|
313
273
|
if (sFactor > model.radiusFactor) {
|
|
314
274
|
sFactor = model.radiusFactor;
|
|
315
275
|
}
|
|
316
276
|
} else if (inScalars && model.varyRadius === VaryRadius.VARY_RADIUS_BY_ABSOLUTE_SCALAR) {
|
|
317
277
|
sFactor = inScalars.getComponent(pts[j], 0);
|
|
318
|
-
|
|
319
278
|
if (sFactor < 0.0) {
|
|
320
279
|
vtkWarningMacro('Scalar value less than zero, skipping line');
|
|
321
280
|
return 0;
|
|
322
281
|
}
|
|
323
|
-
}
|
|
324
|
-
|
|
282
|
+
}
|
|
325
283
|
|
|
284
|
+
// create points around line
|
|
326
285
|
if (model.sidesShareVertices) {
|
|
327
|
-
for (
|
|
328
|
-
for (
|
|
329
|
-
normal[
|
|
330
|
-
s[
|
|
331
|
-
newPts[3 * ptId +
|
|
332
|
-
newNormals[3 * ptId +
|
|
286
|
+
for (let k = 0; k < model.numberOfSides; ++k) {
|
|
287
|
+
for (let i = 0; i < 3; ++i) {
|
|
288
|
+
normal[i] = w[i] * Math.cos(k * theta) + nP[i] * Math.sin(k * theta);
|
|
289
|
+
s[i] = p[i] + model.radius * sFactor * normal[i];
|
|
290
|
+
newPts[3 * ptId + i] = s[i];
|
|
291
|
+
newNormals[3 * ptId + i] = normal[i];
|
|
333
292
|
}
|
|
334
|
-
|
|
335
293
|
outPD.passData(pd, pts[j], ptId);
|
|
336
294
|
ptId++;
|
|
337
295
|
} // for each side
|
|
338
|
-
|
|
339
296
|
} else {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
for (var _i6 = 0; _i6 < 3; ++_i6) {
|
|
297
|
+
const nRight = [0, 0, 0];
|
|
298
|
+
const nLeft = [0, 0, 0];
|
|
299
|
+
for (let k = 0; k < model.numberOfSides; ++k) {
|
|
300
|
+
for (let i = 0; i < 3; ++i) {
|
|
345
301
|
// Create duplicate vertices at each point
|
|
346
302
|
// and adjust the associated normals so that they are
|
|
347
303
|
// oriented with the facets. This preserves the tube's
|
|
348
304
|
// polygonal appearance, as if by flat-shading around the tube,
|
|
349
305
|
// while still allowing smooth (gouraud) shading along the
|
|
350
306
|
// tube as it bends.
|
|
351
|
-
normal[
|
|
352
|
-
nRight[
|
|
353
|
-
nLeft[
|
|
354
|
-
s[
|
|
355
|
-
newPts[3 * ptId +
|
|
356
|
-
newNormals[3 * ptId +
|
|
357
|
-
newPts[3 * (ptId + 1) +
|
|
358
|
-
newNormals[3 * (ptId + 1) +
|
|
307
|
+
normal[i] = w[i] * Math.cos(k * theta) + nP[i] * Math.sin(k * theta);
|
|
308
|
+
nRight[i] = w[i] * Math.cos((k - 0.5) * theta) + nP[i] * Math.sin((k - 0.5) * theta);
|
|
309
|
+
nLeft[i] = w[i] * Math.cos((k + 0.5) * theta) + nP[i] * Math.sin((k + 0.5) * theta);
|
|
310
|
+
s[i] = p[i] + model.radius * sFactor * normal[i];
|
|
311
|
+
newPts[3 * ptId + i] = s[i];
|
|
312
|
+
newNormals[3 * ptId + i] = nRight[i];
|
|
313
|
+
newPts[3 * (ptId + 1) + i] = s[i];
|
|
314
|
+
newNormals[3 * (ptId + 1) + i] = nLeft[i];
|
|
359
315
|
}
|
|
360
|
-
|
|
361
316
|
outPD.passData(pd, pts[j], ptId + 1);
|
|
362
317
|
ptId += 2;
|
|
363
318
|
} // for each side
|
|
364
|
-
|
|
365
319
|
} // else separate vertices
|
|
366
|
-
|
|
367
320
|
} // for all points in the polyline
|
|
368
|
-
// Produce end points for cap. They are placed at tail end of points.
|
|
369
|
-
|
|
370
321
|
|
|
322
|
+
// Produce end points for cap. They are placed at tail end of points.
|
|
371
323
|
if (model.capping) {
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
324
|
+
let numCapSides = model.numberOfSides;
|
|
325
|
+
let capIncr = 1;
|
|
375
326
|
if (!model.sidesShareVertices) {
|
|
376
327
|
numCapSides = 2 * model.numberOfSides;
|
|
377
328
|
capIncr = 2;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
for (var _k2 = 0; _k2 < numCapSides; _k2 += capIncr) {
|
|
382
|
-
s = newPts.slice(3 * (offset + _k2), 3 * (offset + _k2 + 1));
|
|
329
|
+
}
|
|
383
330
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
331
|
+
// the start cap
|
|
332
|
+
for (let k = 0; k < numCapSides; k += capIncr) {
|
|
333
|
+
s = newPts.slice(3 * (offset + k), 3 * (offset + k + 1));
|
|
334
|
+
for (let i = 0; i < 3; ++i) {
|
|
335
|
+
newPts[3 * ptId + i] = s[i];
|
|
336
|
+
newNormals[3 * ptId + i] = startCapNorm[i];
|
|
387
337
|
}
|
|
388
|
-
|
|
389
338
|
outPD.passData(pd, pts[0], ptId);
|
|
390
339
|
ptId++;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
var endOffset = offset + (npts - 1) * model.numberOfSides;
|
|
340
|
+
}
|
|
395
341
|
|
|
342
|
+
// the end cap
|
|
343
|
+
let endOffset = offset + (npts - 1) * model.numberOfSides;
|
|
396
344
|
if (!model.sidesShareVertices) {
|
|
397
345
|
endOffset = offset + 2 * (npts - 1) * model.numberOfSides;
|
|
398
346
|
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
newPts[3 * ptId + _i8] = s[_i8];
|
|
405
|
-
newNormals[3 * ptId + _i8] = endCapNorm[_i8];
|
|
347
|
+
for (let k = 0; k < numCapSides; k += capIncr) {
|
|
348
|
+
s = newPts.slice(3 * (endOffset + k), 3 * (endOffset + k + 1));
|
|
349
|
+
for (let i = 0; i < 3; ++i) {
|
|
350
|
+
newPts[3 * ptId + i] = s[i];
|
|
351
|
+
newNormals[3 * ptId + i] = endCapNorm[i];
|
|
406
352
|
}
|
|
407
|
-
|
|
408
353
|
outPD.passData(pd, pts[npts - 1], ptId);
|
|
409
354
|
ptId++;
|
|
410
355
|
}
|
|
411
356
|
} // if capping
|
|
412
357
|
|
|
413
|
-
|
|
414
358
|
return 1;
|
|
415
359
|
}
|
|
416
|
-
|
|
417
360
|
function generateStrips(offset, npts, inCellId, outCellId, inCD, outCD, newStrips) {
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
361
|
+
let i1 = 0;
|
|
362
|
+
let i2 = 0;
|
|
363
|
+
let i3 = 0;
|
|
364
|
+
let newOutCellId = outCellId;
|
|
365
|
+
let outCellIdx = 0;
|
|
366
|
+
const newStripsData = newStrips.getData();
|
|
367
|
+
let cellId = 0;
|
|
426
368
|
while (outCellIdx < newStripsData.length) {
|
|
427
369
|
if (cellId === outCellId) {
|
|
428
370
|
break;
|
|
429
371
|
}
|
|
430
|
-
|
|
431
372
|
outCellIdx += newStripsData[outCellIdx] + 1;
|
|
432
373
|
cellId++;
|
|
433
374
|
}
|
|
434
|
-
|
|
435
375
|
if (model.sidesShareVertices) {
|
|
436
|
-
for (
|
|
376
|
+
for (let k = offset; k < model.numberOfSides + offset; k += model.onRatio) {
|
|
437
377
|
i1 = k % model.numberOfSides;
|
|
438
378
|
i2 = (k + 1) % model.numberOfSides;
|
|
439
379
|
newStripsData[outCellIdx++] = npts * 2;
|
|
440
|
-
|
|
441
|
-
for (var i = 0; i < npts; ++i) {
|
|
380
|
+
for (let i = 0; i < npts; ++i) {
|
|
442
381
|
i3 = i * model.numberOfSides;
|
|
443
382
|
newStripsData[outCellIdx++] = offset + i2 + i3;
|
|
444
383
|
newStripsData[outCellIdx++] = offset + i1 + i3;
|
|
445
384
|
}
|
|
446
|
-
|
|
447
385
|
outCD.passData(inCD, inCellId, newOutCellId++);
|
|
448
386
|
} // for each side of the tube
|
|
449
|
-
|
|
450
387
|
} else {
|
|
451
|
-
for (
|
|
452
|
-
i1 = 2 * (
|
|
453
|
-
i2 = 2 * ((
|
|
454
|
-
|
|
388
|
+
for (let k = offset; k < model.numberOfSides + offset; k += model.onRatio) {
|
|
389
|
+
i1 = 2 * (k % model.numberOfSides) + 1;
|
|
390
|
+
i2 = 2 * ((k + 1) % model.numberOfSides);
|
|
391
|
+
// outCellId = newStrips.getNumberOfCells(true);
|
|
455
392
|
newStripsData[outCellIdx] = npts * 2;
|
|
456
393
|
outCellIdx++;
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
i3 = _i9 * 2 * model.numberOfSides;
|
|
394
|
+
for (let i = 0; i < npts; ++i) {
|
|
395
|
+
i3 = i * 2 * model.numberOfSides;
|
|
460
396
|
newStripsData[outCellIdx++] = offset + i2 + i3;
|
|
461
397
|
newStripsData[outCellIdx++] = offset + i1 + i3;
|
|
462
398
|
}
|
|
463
|
-
|
|
464
399
|
outCD.passData(inCD, inCellId, newOutCellId++);
|
|
465
400
|
} // for each side of the tube
|
|
401
|
+
}
|
|
466
402
|
|
|
467
|
-
|
|
403
|
+
// Take care of capping. The caps are n-sided polygons that can be easily
|
|
468
404
|
// triangle stripped.
|
|
469
|
-
|
|
470
|
-
|
|
471
405
|
if (model.capping) {
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
406
|
+
let startIdx = offset + npts * model.numberOfSides;
|
|
407
|
+
let idx = 0;
|
|
475
408
|
if (!model.sidesShareVertices) {
|
|
476
409
|
startIdx = offset + 2 * npts * model.numberOfSides;
|
|
477
|
-
}
|
|
478
|
-
|
|
410
|
+
}
|
|
479
411
|
|
|
412
|
+
// The start cap
|
|
480
413
|
newStripsData[outCellIdx++] = model.numberOfSides;
|
|
481
414
|
newStripsData[outCellIdx++] = startIdx;
|
|
482
415
|
newStripsData[outCellIdx++] = startIdx + 1;
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
if (_k5 % 2) {
|
|
416
|
+
let k = 0;
|
|
417
|
+
for (i1 = model.numberOfSides - 1, i2 = 2, k = 0; k < model.numberOfSides - 2; ++k) {
|
|
418
|
+
if (k % 2) {
|
|
487
419
|
idx = startIdx + i2;
|
|
488
420
|
newStripsData[outCellIdx++] = idx;
|
|
489
421
|
i2++;
|
|
@@ -493,16 +425,15 @@ function vtkTubeFilter(publicAPI, model) {
|
|
|
493
425
|
i1--;
|
|
494
426
|
}
|
|
495
427
|
}
|
|
428
|
+
outCD.passData(inCD, inCellId, newOutCellId++);
|
|
496
429
|
|
|
497
|
-
|
|
498
|
-
|
|
430
|
+
// The end cap - reversed order to be consistent with normal
|
|
499
431
|
startIdx += model.numberOfSides;
|
|
500
432
|
newStripsData[outCellIdx++] = model.numberOfSides;
|
|
501
433
|
newStripsData[outCellIdx++] = startIdx;
|
|
502
434
|
newStripsData[outCellIdx++] = startIdx + model.numberOfSides - 1;
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
if (_k5 % 2) {
|
|
435
|
+
for (i1 = model.numberOfSides - 2, i2 = 1, k = 0; k < model.numberOfSides - 2; ++k) {
|
|
436
|
+
if (k % 2) {
|
|
506
437
|
idx = startIdx + i1;
|
|
507
438
|
newStripsData[outCellIdx++] = idx;
|
|
508
439
|
i1--;
|
|
@@ -512,202 +443,161 @@ function vtkTubeFilter(publicAPI, model) {
|
|
|
512
443
|
i2++;
|
|
513
444
|
}
|
|
514
445
|
}
|
|
515
|
-
|
|
516
446
|
outCD.passData(inCD, inCellId, newOutCellId++);
|
|
517
447
|
}
|
|
518
|
-
|
|
519
448
|
return newOutCellId;
|
|
520
449
|
}
|
|
521
|
-
|
|
522
450
|
function generateTCoords(offset, npts, pts, inPts, inScalars, newTCoords) {
|
|
523
|
-
|
|
524
|
-
|
|
451
|
+
let numSides = model.numberOfSides;
|
|
525
452
|
if (!model.sidesShareVertices) {
|
|
526
453
|
numSides = 2 * model.numberOfSides;
|
|
527
454
|
}
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
var inScalarsData = inScalars.getData();
|
|
533
|
-
|
|
455
|
+
let tc = 0.0;
|
|
456
|
+
let s0 = 0.0;
|
|
457
|
+
let s = 0.0;
|
|
458
|
+
const inScalarsData = inScalars.getData();
|
|
534
459
|
if (model.generateTCoords === GenerateTCoords.TCOORDS_FROM_SCALARS) {
|
|
535
460
|
s0 = inScalarsData[pts[0]];
|
|
536
|
-
|
|
537
|
-
for (var i = 0; i < npts; ++i) {
|
|
461
|
+
for (let i = 0; i < npts; ++i) {
|
|
538
462
|
s = inScalarsData[pts[i]];
|
|
539
463
|
tc = (s - s0) / model.textureLength;
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
var tcId = 2 * (offset + i * numSides + k);
|
|
464
|
+
for (let k = 0; k < numSides; ++k) {
|
|
465
|
+
const tcy = k / (numSides - 1);
|
|
466
|
+
const tcId = 2 * (offset + i * numSides + k);
|
|
544
467
|
newTCoords[tcId] = tc;
|
|
545
468
|
newTCoords[tcId + 1] = tcy;
|
|
546
469
|
}
|
|
547
470
|
}
|
|
548
471
|
} else if (model.generateTCoords === GenerateTCoords.TCOORDS_FROM_LENGTH) {
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
var x = inPts.slice(3 * pts[_i10], 3 * (pts[_i10] + 1));
|
|
472
|
+
let len = 0.0;
|
|
473
|
+
const xPrev = inPts.slice(3 * pts[0], 3 * (pts[0] + 1));
|
|
474
|
+
for (let i = 0; i < npts; ++i) {
|
|
475
|
+
const x = inPts.slice(3 * pts[i], 3 * (pts[i] + 1));
|
|
554
476
|
len += Math.sqrt(distance2BetweenPoints(x, xPrev));
|
|
555
477
|
tc = len / model.textureLength;
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
newTCoords[_tcId] = tc;
|
|
563
|
-
newTCoords[_tcId + 1] = _tcy;
|
|
478
|
+
for (let k = 0; k < numSides; ++k) {
|
|
479
|
+
const tcy = k / (numSides - 1);
|
|
480
|
+
const tcId = 2 * (offset + i * numSides + k);
|
|
481
|
+
newTCoords[tcId] = tc;
|
|
482
|
+
newTCoords[tcId + 1] = tcy;
|
|
564
483
|
}
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
xPrev[_k7] = x[_k7];
|
|
484
|
+
for (let k = 0; k < 3; ++k) {
|
|
485
|
+
xPrev[k] = x[k];
|
|
568
486
|
}
|
|
569
487
|
}
|
|
570
488
|
} else if (model.generateTCoords === GenerateTCoords.TCOORDS_FROM_NORMALIZED_LENGTH) {
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
len1 += Math.sqrt(distance2BetweenPoints(_x, _xPrev));
|
|
580
|
-
|
|
581
|
-
for (var _k8 = 0; _k8 < 3; ++_k8) {
|
|
582
|
-
_xPrev[_k8] = _x[_k8];
|
|
489
|
+
let len = 0.0;
|
|
490
|
+
let len1 = 0.0;
|
|
491
|
+
let xPrev = inPts.slice(3 * pts[0], 3 * (pts[0] + 1));
|
|
492
|
+
for (let i = 0; i < npts; ++i) {
|
|
493
|
+
const x = inPts.slice(3 * pts[i], 3 * (pts[i] + 1));
|
|
494
|
+
len1 += Math.sqrt(distance2BetweenPoints(x, xPrev));
|
|
495
|
+
for (let k = 0; k < 3; ++k) {
|
|
496
|
+
xPrev[k] = x[k];
|
|
583
497
|
}
|
|
584
498
|
}
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
var _tcy2 = _k9 / (numSides - 1);
|
|
596
|
-
|
|
597
|
-
var _tcId2 = 2 * (offset + _i12 * numSides + _k9);
|
|
598
|
-
|
|
599
|
-
newTCoords[_tcId2] = tc;
|
|
600
|
-
newTCoords[_tcId2 + 1] = _tcy2;
|
|
499
|
+
xPrev = inPts.slice(3 * pts[0], 3 * (pts[0] + 1));
|
|
500
|
+
for (let i = 0; i < npts; ++i) {
|
|
501
|
+
const x = inPts.slice(3 * pts[i], 3 * (pts[i] + 1));
|
|
502
|
+
len += Math.sqrt(distance2BetweenPoints(x, xPrev));
|
|
503
|
+
tc = len / len1;
|
|
504
|
+
for (let k = 0; k < numSides; ++k) {
|
|
505
|
+
const tcy = k / (numSides - 1);
|
|
506
|
+
const tcId = 2 * (offset + i * numSides + k);
|
|
507
|
+
newTCoords[tcId] = tc;
|
|
508
|
+
newTCoords[tcId + 1] = tcy;
|
|
601
509
|
}
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
_xPrev[_k10] = _x2[_k10];
|
|
510
|
+
for (let k = 0; k < 3; ++k) {
|
|
511
|
+
xPrev[k] = x[k];
|
|
605
512
|
}
|
|
606
513
|
}
|
|
607
|
-
}
|
|
608
|
-
|
|
514
|
+
}
|
|
609
515
|
|
|
516
|
+
// Capping, set the endpoints as appropriate
|
|
610
517
|
if (model.capping) {
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
for (var ik = 0; ik < model.numberOfSides; ++ik) {
|
|
614
|
-
var _tcId3 = 2 * (startIdx + ik);
|
|
615
|
-
|
|
616
|
-
newTCoords[_tcId3] = 0.0;
|
|
617
|
-
newTCoords[_tcId3 + 1] = 0.0;
|
|
618
|
-
} // end cap
|
|
619
|
-
|
|
518
|
+
const startIdx = offset + npts * numSides;
|
|
620
519
|
|
|
621
|
-
|
|
622
|
-
|
|
520
|
+
// start cap
|
|
521
|
+
for (let ik = 0; ik < model.numberOfSides; ++ik) {
|
|
522
|
+
const tcId = 2 * (startIdx + ik);
|
|
523
|
+
newTCoords[tcId] = 0.0;
|
|
524
|
+
newTCoords[tcId + 1] = 0.0;
|
|
525
|
+
}
|
|
623
526
|
|
|
624
|
-
|
|
625
|
-
|
|
527
|
+
// end cap
|
|
528
|
+
for (let ik = 0; ik < model.numberOfSides; ++ik) {
|
|
529
|
+
const tcId = 2 * (startIdx + model.numberOfSides + ik);
|
|
530
|
+
newTCoords[tcId] = 0.0;
|
|
531
|
+
newTCoords[tcId + 1] = 0.0;
|
|
626
532
|
}
|
|
627
533
|
}
|
|
628
534
|
}
|
|
629
|
-
|
|
630
|
-
publicAPI.requestData = function (inData, outData) {
|
|
535
|
+
publicAPI.requestData = (inData, outData) => {
|
|
631
536
|
// implement requestData
|
|
632
537
|
// pass through for now
|
|
633
|
-
|
|
538
|
+
const output = vtkPolyData.newInstance();
|
|
634
539
|
outData[0] = output;
|
|
635
|
-
|
|
636
|
-
|
|
540
|
+
const input = inData[0];
|
|
637
541
|
if (!input) {
|
|
638
542
|
vtkErrorMacro('Invalid or missing input');
|
|
639
543
|
return;
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
var inPts = input.getPoints();
|
|
544
|
+
}
|
|
644
545
|
|
|
546
|
+
// Allocate output
|
|
547
|
+
const inPts = input.getPoints();
|
|
645
548
|
if (!inPts) {
|
|
646
549
|
return;
|
|
647
550
|
}
|
|
648
|
-
|
|
649
|
-
var numPts = inPts.getNumberOfPoints();
|
|
650
|
-
|
|
551
|
+
const numPts = inPts.getNumberOfPoints();
|
|
651
552
|
if (numPts < 1) {
|
|
652
553
|
return;
|
|
653
554
|
}
|
|
654
|
-
|
|
655
|
-
var inLines = input.getLines();
|
|
656
|
-
|
|
555
|
+
const inLines = input.getLines();
|
|
657
556
|
if (!inLines) {
|
|
658
557
|
return;
|
|
659
558
|
}
|
|
660
|
-
|
|
661
|
-
var numLines = inLines.getNumberOfCells();
|
|
662
|
-
|
|
559
|
+
const numLines = inLines.getNumberOfCells();
|
|
663
560
|
if (numLines < 1) {
|
|
664
561
|
return;
|
|
665
562
|
}
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
for (var i = 0; i < inLinesData.length; i += npts + 1) {
|
|
563
|
+
let numNewPts = 0;
|
|
564
|
+
let numStrips = 0;
|
|
565
|
+
const inLinesData = inLines.getData();
|
|
566
|
+
let npts = inLinesData[0];
|
|
567
|
+
for (let i = 0; i < inLinesData.length; i += npts + 1) {
|
|
673
568
|
npts = inLinesData[i];
|
|
674
569
|
numNewPts = computeOffset(numNewPts, npts);
|
|
675
570
|
numStrips += (2 * npts + 1) * Math.ceil(model.numberOfSides / model.onRatio);
|
|
676
|
-
|
|
677
571
|
if (model.capping) {
|
|
678
572
|
numStrips += 2 * (model.numberOfSides + 1);
|
|
679
573
|
}
|
|
680
574
|
}
|
|
681
|
-
|
|
682
|
-
var pointType = inPts.getDataType();
|
|
683
|
-
|
|
575
|
+
let pointType = inPts.getDataType();
|
|
684
576
|
if (model.outputPointsPrecision === DesiredOutputPrecision.SINGLE) {
|
|
685
577
|
pointType = VtkDataTypes.FLOAT;
|
|
686
578
|
} else if (model.outputPointsPrecision === DesiredOutputPrecision.DOUBLE) {
|
|
687
579
|
pointType = VtkDataTypes.DOUBLE;
|
|
688
580
|
}
|
|
689
|
-
|
|
690
|
-
var newPts = vtkPoints.newInstance({
|
|
581
|
+
const newPts = vtkPoints.newInstance({
|
|
691
582
|
dataType: pointType,
|
|
692
583
|
size: numNewPts * 3,
|
|
693
584
|
numberOfComponents: 3
|
|
694
585
|
});
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
586
|
+
const numNormals = 3 * numNewPts;
|
|
587
|
+
const newNormalsData = new Float32Array(numNormals);
|
|
588
|
+
const newNormals = vtkDataArray.newInstance({
|
|
698
589
|
numberOfComponents: 3,
|
|
699
590
|
values: newNormalsData,
|
|
700
591
|
name: 'TubeNormals'
|
|
701
592
|
});
|
|
702
|
-
|
|
703
|
-
|
|
593
|
+
const newStripsData = new Uint32Array(numStrips);
|
|
594
|
+
const newStrips = vtkCellArray.newInstance({
|
|
704
595
|
values: newStripsData
|
|
705
596
|
});
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
597
|
+
let newStripId = 0;
|
|
598
|
+
let inNormals = input.getPointData().getNormals();
|
|
599
|
+
let inNormalsData = null;
|
|
600
|
+
let generateNormals = false;
|
|
711
601
|
if (!inNormals || model.useDefaultNormal) {
|
|
712
602
|
inNormalsData = new Float32Array(3 * numPts);
|
|
713
603
|
inNormals = vtkDataArray.newInstance({
|
|
@@ -715,24 +605,22 @@ function vtkTubeFilter(publicAPI, model) {
|
|
|
715
605
|
values: inNormalsData,
|
|
716
606
|
name: 'Normals'
|
|
717
607
|
});
|
|
718
|
-
|
|
719
608
|
if (model.useDefaultNormal) {
|
|
720
|
-
inNormalsData = inNormalsData.map(
|
|
721
|
-
|
|
609
|
+
inNormalsData = inNormalsData.map((elem, index) => {
|
|
610
|
+
const i = index % 3;
|
|
722
611
|
return model.defaultNormal[i];
|
|
723
612
|
});
|
|
724
613
|
} else {
|
|
725
614
|
generateNormals = true;
|
|
726
615
|
}
|
|
727
|
-
}
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
var numArrays = input.getPointData().getNumberOfArrays();
|
|
731
|
-
var oldArray = null;
|
|
732
|
-
var newArray = null;
|
|
616
|
+
}
|
|
733
617
|
|
|
734
|
-
|
|
735
|
-
|
|
618
|
+
// loop over pointData arrays and resize based on numNewPts
|
|
619
|
+
const numArrays = input.getPointData().getNumberOfArrays();
|
|
620
|
+
let oldArray = null;
|
|
621
|
+
let newArray = null;
|
|
622
|
+
for (let i = 0; i < numArrays; i++) {
|
|
623
|
+
oldArray = input.getPointData().getArrayByIndex(i);
|
|
736
624
|
newArray = vtkDataArray.newInstance({
|
|
737
625
|
name: oldArray.getName(),
|
|
738
626
|
dataType: oldArray.getDataType(),
|
|
@@ -740,21 +628,17 @@ function vtkTubeFilter(publicAPI, model) {
|
|
|
740
628
|
size: numNewPts * oldArray.getNumberOfComponents()
|
|
741
629
|
});
|
|
742
630
|
output.getPointData().removeArrayByIndex(0); // remove oldArray from beginning
|
|
743
|
-
|
|
744
631
|
output.getPointData().addArray(newArray); // concat newArray to end
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
var numNewCells = inLines.getNumberOfCells() * model.numberOfSides;
|
|
632
|
+
}
|
|
749
633
|
|
|
634
|
+
// loop over cellData arrays and resize based on numNewCells
|
|
635
|
+
let numNewCells = inLines.getNumberOfCells() * model.numberOfSides;
|
|
750
636
|
if (model.capping) {
|
|
751
637
|
numNewCells += 2;
|
|
752
638
|
}
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
for (var _i14 = 0; _i14 < numCellArrays; _i14++) {
|
|
757
|
-
oldArray = input.getCellData().getArrayByIndex(_i14);
|
|
639
|
+
const numCellArrays = input.getCellData().getNumberOfArrays();
|
|
640
|
+
for (let i = 0; i < numCellArrays; i++) {
|
|
641
|
+
oldArray = input.getCellData().getArrayByIndex(i);
|
|
758
642
|
newArray = vtkDataArray.newInstance({
|
|
759
643
|
name: oldArray.getName(),
|
|
760
644
|
dataType: oldArray.getDataType(),
|
|
@@ -762,14 +646,12 @@ function vtkTubeFilter(publicAPI, model) {
|
|
|
762
646
|
size: numNewCells * oldArray.getNumberOfComponents()
|
|
763
647
|
});
|
|
764
648
|
output.getCellData().removeArrayByIndex(0); // remove oldArray from beginning
|
|
765
|
-
|
|
766
649
|
output.getCellData().addArray(newArray); // concat newArray to end
|
|
767
650
|
}
|
|
768
651
|
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
652
|
+
const inScalars = publicAPI.getInputArrayToProcess(0);
|
|
653
|
+
let outScalars = null;
|
|
654
|
+
let range = [];
|
|
773
655
|
if (inScalars) {
|
|
774
656
|
// allocate output scalar array
|
|
775
657
|
// assuming point scalars for now
|
|
@@ -780,41 +662,33 @@ function vtkTubeFilter(publicAPI, model) {
|
|
|
780
662
|
size: numNewPts * inScalars.getNumberOfComponents()
|
|
781
663
|
});
|
|
782
664
|
range = inScalars.getRange();
|
|
783
|
-
|
|
784
665
|
if (range[1] - range[0] === 0.0) {
|
|
785
666
|
if (model.varyRadius === VaryRadius.VARY_RADIUS_BY_SCALAR) {
|
|
786
667
|
vtkWarningMacro('Scalar range is zero!');
|
|
787
668
|
}
|
|
788
|
-
|
|
789
669
|
range[1] = range[0] + 1.0;
|
|
790
670
|
}
|
|
791
671
|
}
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
var maxSpeed = 0;
|
|
795
|
-
|
|
672
|
+
const inVectors = publicAPI.getInputArrayToProcess(1);
|
|
673
|
+
let maxSpeed = 0;
|
|
796
674
|
if (inVectors) {
|
|
797
675
|
maxSpeed = inVectors.getMaxNorm();
|
|
798
676
|
}
|
|
799
|
-
|
|
800
|
-
var outCD = output.getCellData();
|
|
677
|
+
const outCD = output.getCellData();
|
|
801
678
|
outCD.copyNormalsOff();
|
|
802
679
|
outCD.passData(input.getCellData());
|
|
803
|
-
|
|
804
|
-
|
|
680
|
+
const outPD = output.getPointData();
|
|
805
681
|
if (outPD.getNormals() !== null) {
|
|
806
682
|
outPD.copyNormalsOff();
|
|
807
683
|
}
|
|
808
|
-
|
|
809
684
|
if (inScalars && outScalars) {
|
|
810
685
|
outPD.setScalars(outScalars);
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
var newTCoords = null;
|
|
686
|
+
}
|
|
815
687
|
|
|
688
|
+
// TCoords
|
|
689
|
+
let newTCoords = null;
|
|
816
690
|
if (model.generateTCoords === GenerateTCoords.TCOORDS_FROM_SCALARS && inScalars || model.generateTCoords === GenerateTCoords.TCOORDS_FROM_LENGTH || model.generateTCoords === GenerateTCoords.TCOORDS_FROM_NORMALIZED_LENGTH) {
|
|
817
|
-
|
|
691
|
+
const newTCoordsData = new Float32Array(2 * numNewPts);
|
|
818
692
|
newTCoords = vtkDataArray.newInstance({
|
|
819
693
|
numberOfComponents: 2,
|
|
820
694
|
values: newTCoordsData,
|
|
@@ -822,58 +696,54 @@ function vtkTubeFilter(publicAPI, model) {
|
|
|
822
696
|
});
|
|
823
697
|
outPD.copyTCoordsOff();
|
|
824
698
|
}
|
|
699
|
+
outPD.passData(input.getPointData());
|
|
825
700
|
|
|
826
|
-
|
|
701
|
+
// Create points along each polyline that are connected into numberOfSides
|
|
827
702
|
// triangle strips.
|
|
828
|
-
|
|
829
|
-
var theta = 2.0 * Math.PI / model.numberOfSides;
|
|
703
|
+
const theta = 2.0 * Math.PI / model.numberOfSides;
|
|
830
704
|
npts = inLinesData[0];
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
var pts = inLinesData.slice(_i15 + 1, _i15 + 1 + npts);
|
|
837
|
-
|
|
705
|
+
let offset = 0;
|
|
706
|
+
let inCellId = input.getVerts().getNumberOfCells();
|
|
707
|
+
for (let i = 0; i < inLinesData.length; i += npts + 1) {
|
|
708
|
+
npts = inLinesData[i];
|
|
709
|
+
const pts = inLinesData.slice(i + 1, i + 1 + npts);
|
|
838
710
|
if (npts > 1) {
|
|
839
711
|
// if not, skip tubing this line
|
|
840
712
|
if (generateNormals) {
|
|
841
|
-
|
|
713
|
+
const polyLine = inLinesData.slice(i, i + npts + 1);
|
|
842
714
|
generateSlidingNormals(inPts.getData(), polyLine, inNormals);
|
|
843
715
|
}
|
|
844
|
-
}
|
|
845
|
-
|
|
846
|
-
|
|
716
|
+
}
|
|
717
|
+
// generate points
|
|
847
718
|
if (generatePoints(offset, npts, pts, inPts.getData(), newPts.getData(), input.getPointData(), outPD, newNormalsData, inScalars, range, inVectors, maxSpeed, inNormalsData, theta)) {
|
|
848
719
|
// generate strips for the polyline
|
|
849
|
-
newStripId = generateStrips(offset, npts, inCellId, newStripId, input.getCellData(), outCD, newStrips);
|
|
850
|
-
|
|
720
|
+
newStripId = generateStrips(offset, npts, inCellId, newStripId, input.getCellData(), outCD, newStrips);
|
|
721
|
+
// generate texture coordinates for the polyline
|
|
851
722
|
if (newTCoords) {
|
|
852
723
|
generateTCoords(offset, npts, pts, inPts.getData(), inScalars, newTCoords.getData());
|
|
853
724
|
}
|
|
854
725
|
} else {
|
|
855
726
|
// skip tubing this line
|
|
856
727
|
vtkWarningMacro('Could not generate points');
|
|
857
|
-
}
|
|
728
|
+
}
|
|
729
|
+
// lineIdx += npts;
|
|
858
730
|
// Compute the new offset for the next polyline
|
|
859
|
-
|
|
860
|
-
|
|
861
731
|
offset = computeOffset(offset, npts);
|
|
862
732
|
inCellId++;
|
|
863
733
|
}
|
|
864
|
-
|
|
865
734
|
output.setPoints(newPts);
|
|
866
735
|
output.setStrips(newStrips);
|
|
867
736
|
output.setPointData(outPD);
|
|
868
737
|
outPD.setNormals(newNormals);
|
|
869
738
|
outData[0] = output;
|
|
870
739
|
};
|
|
871
|
-
}
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
// ----------------------------------------------------------------------------
|
|
872
743
|
// Object factory
|
|
873
744
|
// ----------------------------------------------------------------------------
|
|
874
745
|
|
|
875
|
-
|
|
876
|
-
var DEFAULT_VALUES = {
|
|
746
|
+
const DEFAULT_VALUES = {
|
|
877
747
|
outputPointsPrecision: DesiredOutputPrecision.DEFAULT,
|
|
878
748
|
radius: 0.5,
|
|
879
749
|
varyRadius: VaryRadius.VARY_RADIUS_OFF,
|
|
@@ -887,26 +757,36 @@ var DEFAULT_VALUES = {
|
|
|
887
757
|
offset: 0,
|
|
888
758
|
generateTCoords: GenerateTCoords.TCOORDS_OFF,
|
|
889
759
|
textureLength: 1.0
|
|
890
|
-
};
|
|
760
|
+
};
|
|
761
|
+
|
|
762
|
+
// ----------------------------------------------------------------------------
|
|
891
763
|
|
|
892
764
|
function extend(publicAPI, model) {
|
|
893
|
-
|
|
894
|
-
Object.assign(model, DEFAULT_VALUES, initialValues);
|
|
765
|
+
let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
766
|
+
Object.assign(model, DEFAULT_VALUES, initialValues);
|
|
895
767
|
|
|
896
|
-
|
|
768
|
+
// Build VTK API
|
|
769
|
+
macro.setGet(publicAPI, model, ['outputPointsPrecision', 'radius', 'varyRadius', 'numberOfSides', 'radiusFactor', 'defaultNormal', 'useDefaultNormal', 'sidesShareVertices', 'capping', 'onRatio', 'offset', 'generateTCoords', 'textureLength']);
|
|
897
770
|
|
|
898
|
-
|
|
771
|
+
// Make this a VTK object
|
|
772
|
+
macro.obj(publicAPI, model);
|
|
899
773
|
|
|
900
|
-
|
|
774
|
+
// Also make it an algorithm with one input and one output
|
|
775
|
+
macro.algo(publicAPI, model, 1, 1);
|
|
901
776
|
|
|
777
|
+
// Object specific methods
|
|
902
778
|
vtkTubeFilter(publicAPI, model);
|
|
903
|
-
}
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
// ----------------------------------------------------------------------------
|
|
782
|
+
|
|
783
|
+
const newInstance = macro.newInstance(extend, 'vtkTubeFilter');
|
|
904
784
|
|
|
905
|
-
|
|
785
|
+
// ----------------------------------------------------------------------------
|
|
906
786
|
|
|
907
787
|
var vtkTubeFilter$1 = {
|
|
908
|
-
newInstance
|
|
909
|
-
extend
|
|
788
|
+
newInstance,
|
|
789
|
+
extend
|
|
910
790
|
};
|
|
911
791
|
|
|
912
792
|
export { vtkTubeFilter$1 as default, extend, newInstance };
|