x_ite 5.0.2 → 6.0.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/.vscode/settings.json +12 -5
- package/.vscode/tasks.json +21 -0
- package/Makefile +10 -15
- package/README.md +6 -11
- package/build/bin/dist.pl +0 -6
- package/build/bin/version.pl +1 -4
- package/dist/assets/components/annotation.js +2 -2
- package/dist/assets/components/annotation.min.js +1 -1
- package/dist/assets/components/cad-geometry.js +2 -2
- package/dist/assets/components/cad-geometry.min.js +1 -1
- package/dist/assets/components/cube-map-texturing.js +6 -19
- package/dist/assets/components/cube-map-texturing.min.js +1 -1
- package/dist/assets/components/dis.js +2 -2
- package/dist/assets/components/dis.min.js +1 -1
- package/dist/assets/components/event-utilities.js +3 -3
- package/dist/assets/components/event-utilities.min.js +1 -1
- package/dist/assets/components/geometry2d.js +4 -4
- package/dist/assets/components/geometry2d.min.js +1 -1
- package/dist/assets/components/geospatial.js +32 -1685
- package/dist/assets/components/geospatial.min.js +1 -1
- package/dist/assets/components/h-anim.js +70 -77
- package/dist/assets/components/h-anim.min.js +1 -1
- package/dist/assets/components/key-device-sensor.js +3 -3
- package/dist/assets/components/key-device-sensor.min.js +1 -1
- package/dist/assets/components/layout.js +38 -52
- package/dist/assets/components/layout.min.js +1 -1
- package/dist/assets/components/nurbs.js +277 -194
- package/dist/assets/components/nurbs.min.js +1 -1
- package/dist/assets/components/particle-systems.js +1918 -1658
- package/dist/assets/components/particle-systems.min.js +1 -1
- package/dist/assets/components/picking.js +33 -41
- package/dist/assets/components/picking.min.js +1 -1
- package/dist/assets/components/projective-texture-mapping.js +72 -86
- package/dist/assets/components/projective-texture-mapping.min.js +1 -1
- package/dist/assets/components/rigid-body-physics.js +36 -57
- package/dist/assets/components/rigid-body-physics.min.js +1 -1
- package/dist/assets/components/scripting.js +2 -2
- package/dist/assets/components/scripting.min.js +1 -1
- package/dist/assets/components/texturing-3d.js +26 -75
- package/dist/assets/components/texturing-3d.min.js +3 -3
- package/dist/assets/components/volume-rendering.js +10 -10
- package/dist/assets/components/volume-rendering.min.js +1 -1
- package/dist/assets/components/x_ite.js +2 -2
- package/dist/assets/components/x_ite.min.js +1 -1
- package/dist/assets/linetype/1.png +0 -0
- package/dist/assets/linetype/10.png +0 -0
- package/dist/assets/linetype/11.png +0 -0
- package/dist/assets/linetype/12.png +0 -0
- package/dist/assets/linetype/13.png +0 -0
- package/dist/assets/linetype/14.png +0 -0
- package/dist/assets/linetype/15.png +0 -0
- package/dist/assets/linetype/16.png +0 -0
- package/dist/assets/linetype/2.png +0 -0
- package/dist/assets/linetype/3.png +0 -0
- package/dist/assets/linetype/4.png +0 -0
- package/dist/assets/linetype/5.png +0 -0
- package/dist/assets/linetype/6.png +0 -0
- package/dist/assets/linetype/7.png +0 -0
- package/dist/assets/linetype/8.png +0 -0
- package/dist/assets/linetype/9.png +0 -0
- package/dist/assets/shaders/webgl1/Line.fs +0 -21
- package/dist/assets/shaders/webgl1/Line.vs +0 -10
- package/dist/assets/shaders/webgl1/PBR.vs +1 -1
- package/dist/assets/shaders/webgl2/Depth.vs +29 -1
- package/dist/assets/shaders/webgl2/Gouraud.vs +31 -3
- package/dist/assets/shaders/webgl2/Line.fs +24 -12
- package/dist/assets/shaders/webgl2/Line.vs +36 -11
- package/dist/assets/shaders/webgl2/LineTransform.fs +4 -0
- package/dist/assets/shaders/webgl2/LineTransform.vs +57 -0
- package/dist/assets/shaders/webgl2/PBR.vs +35 -7
- package/dist/assets/shaders/webgl2/Phong.vs +31 -3
- package/dist/assets/shaders/webgl2/Point.vs +29 -1
- package/dist/assets/shaders/webgl2/Unlit.vs +31 -3
- package/dist/example.html +6 -6
- package/dist/x_ite.css +180 -208
- package/dist/x_ite.js +16477 -16629
- package/dist/x_ite.min.js +17 -17
- package/dist/x_ite.zip +0 -0
- package/docs/404.md +6 -0
- package/docs/Accessing-the-External-Browser.md +20 -14
- package/docs/Browser-Support.md +6 -0
- package/docs/Custom-Shaders.md +17 -24
- package/docs/Features.md +7 -1
- package/docs/Gemfile +44 -0
- package/docs/Gemfile.lock +122 -0
- package/docs/Glossary.md +6 -0
- package/docs/How-To-Configure-Your-Web-Server.md +6 -0
- package/docs/Supported-Nodes.md +9 -1
- package/docs/What's-New.md +31 -0
- package/docs/XHTML-DOM-Integration.md +6 -0
- package/docs/_config.yml +1 -1
- package/docs/assets/css/main.scss +26 -0
- package/docs/index.md +38 -46
- package/docs/reference/Browser-Services.md +9 -3
- package/docs/reference/Constants-Services.md +6 -0
- package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +6 -0
- package/docs/reference/Field-Services-and-Objects.md +6 -0
- package/docs/reference/Prototype-Services.md +6 -0
- package/docs/reference/Route-Services.md +6 -0
- package/docs/reference/Scene-Services.md +8 -2
- package/docs/reference/Script-Node-Authoring-Interface.md +7 -1
- package/docs/tutorials/Adding-backgrounds.md +6 -0
- package/docs/tutorials/Adding-fog.md +6 -0
- package/docs/tutorials/Adding-sound.md +6 -0
- package/docs/tutorials/Animating-transforms.md +6 -0
- package/docs/tutorials/Basic-Nodes.md +6 -0
- package/docs/tutorials/Building-a-X3D-world.md +6 -0
- package/docs/tutorials/Building-elevation-grids.md +6 -0
- package/docs/tutorials/Building-extruded-shapes.md +6 -0
- package/docs/tutorials/Building-primitive-shapes.md +6 -0
- package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +6 -0
- package/docs/tutorials/Controlling-appearance-with-materials.md +6 -0
- package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +6 -0
- package/docs/tutorials/Controlling-detail.md +6 -0
- package/docs/tutorials/Controlling-how-textures-are-mapped.md +6 -0
- package/docs/tutorials/Controlling-navigation.md +6 -0
- package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +6 -0
- package/docs/tutorials/Controlling-the-viewpoint.md +6 -0
- package/docs/tutorials/Creating-new-node-types.md +6 -0
- package/docs/tutorials/Grouping-nodes.md +6 -0
- package/docs/tutorials/Hello,-World!.md +6 -0
- package/docs/tutorials/Improving-Performance.md +6 -0
- package/docs/tutorials/Increasing-Rendering-Speed.md +6 -0
- package/docs/tutorials/Introducing-X3D.md +6 -0
- package/docs/tutorials/Introducing-animation.md +6 -0
- package/docs/tutorials/Introducing-script-use.md +6 -0
- package/docs/tutorials/Lighting-your-world.md +6 -0
- package/docs/tutorials/Mapping-textures.md +6 -0
- package/docs/tutorials/Naming-nodes.md +6 -0
- package/docs/tutorials/Providing-information-about-your-world.md +6 -0
- package/docs/tutorials/Sensing-the-viewer.md +6 -0
- package/docs/tutorials/Sensing-viewer-actions.md +6 -0
- package/docs/tutorials/Transforming-Shapes.md +6 -0
- package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +6 -0
- package/docs/tutorials/index.md +6 -0
- package/package.json +6 -7
- package/src/assets/components/geometry2d.js +1 -1
- package/src/assets/components/key-device-sensor.js +1 -1
- package/src/assets/components/layout.js +1 -1
- package/src/assets/components/particle-systems.js +1 -1
- package/src/assets/components/volume-rendering.js +1 -1
- package/src/assets/linetype/1.png +0 -0
- package/src/assets/linetype/10.png +0 -0
- package/src/assets/linetype/11.png +0 -0
- package/src/assets/linetype/12.png +0 -0
- package/src/assets/linetype/13.png +0 -0
- package/src/assets/linetype/14.png +0 -0
- package/src/assets/linetype/15.png +0 -0
- package/src/assets/linetype/16.png +0 -0
- package/src/assets/linetype/2.png +0 -0
- package/src/assets/linetype/3.png +0 -0
- package/src/assets/linetype/4.png +0 -0
- package/src/assets/linetype/5.png +0 -0
- package/src/assets/linetype/6.png +0 -0
- package/src/assets/linetype/7.png +0 -0
- package/src/assets/linetype/8.png +0 -0
- package/src/assets/linetype/9.png +0 -0
- package/src/assets/shaders/Types.glsl +1 -9
- package/src/assets/shaders/webgl1/Line.fs +3 -28
- package/src/assets/shaders/webgl1/Line.vs +5 -19
- package/src/assets/shaders/webgl1/PBR.vs +1 -1
- package/src/assets/shaders/webgl1/Point.vs +2 -3
- package/src/assets/shaders/webgl2/Depth.vs +4 -1
- package/src/assets/shaders/webgl2/Gouraud.vs +5 -3
- package/src/assets/shaders/webgl2/Line.fs +11 -17
- package/src/assets/shaders/webgl2/Line.vs +16 -20
- package/src/assets/shaders/webgl2/LineTransform.fs +6 -0
- package/src/assets/shaders/webgl2/LineTransform.vs +77 -0
- package/src/assets/shaders/webgl2/PBR.vs +10 -7
- package/src/assets/shaders/webgl2/Phong.vs +6 -3
- package/src/assets/shaders/webgl2/Point.vs +6 -6
- package/src/assets/shaders/webgl2/Unlit.vs +6 -3
- package/src/assets/shaders/webgl2/include/Line2.glsl +20 -0
- package/src/assets/shaders/webgl2/include/Particle.glsl +36 -0
- package/src/example.html +6 -6
- package/src/standard/Math/Algorithm.js +12 -28
- package/src/standard/Math/Geometry/Plane3.js +0 -2
- package/src/standard/Math/Geometry/ViewVolume.js +88 -83
- package/src/standard/Math/Numbers/Color3.js +6 -0
- package/src/standard/Math/Numbers/Color4.js +7 -0
- package/src/standard/Math/Numbers/Complex.js +5 -0
- package/src/standard/Math/Numbers/Matrix2.js +20 -2
- package/src/standard/Math/Numbers/Matrix3.js +129 -110
- package/src/standard/Math/Numbers/Matrix4.js +138 -119
- package/src/standard/Math/Numbers/Quaternion.js +7 -0
- package/src/standard/Math/Numbers/Rotation4.js +7 -0
- package/src/standard/Math/Numbers/Vector2.js +8 -5
- package/src/standard/Math/Numbers/Vector3.js +16 -10
- package/src/standard/Math/Numbers/Vector4.js +12 -7
- package/src/standard/Math/Utility/BVH.js +45 -17
- package/src/tests.js +6 -1
- package/src/x_ite/Base/X3DBaseNode.js +22 -11
- package/src/x_ite/Base/X3DField.js +1 -1
- package/src/x_ite/Browser/Core/BrowserOptions.js +2 -2
- package/src/x_ite/Browser/Core/BrowserTimings.js +4 -2
- package/src/x_ite/Browser/Core/Context.js +185 -0
- package/src/x_ite/Browser/Core/ContextMenu.js +299 -193
- package/src/x_ite/Browser/Core/Notification.js +1 -0
- package/src/x_ite/Browser/Core/X3DCoreContext.js +35 -146
- package/src/x_ite/Browser/Layout/ScreenText.js +11 -4
- package/src/x_ite/Browser/Layout/X3DLayoutContext.js +4 -15
- package/src/x_ite/Browser/Navigation/ExamineViewer.js +12 -19
- package/src/x_ite/Browser/Navigation/LookAtViewer.js +0 -3
- package/src/x_ite/Browser/Navigation/PlaneViewer.js +0 -3
- package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +14 -7
- package/src/x_ite/Browser/Navigation/X3DViewer.js +12 -20
- package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +11 -7
- package/src/x_ite/Browser/ParticleSystems/BVH.glsl +183 -0
- package/src/x_ite/Browser/ParticleSystems/Box3.glsl +47 -0
- package/src/x_ite/Browser/ParticleSystems/GeometryTypes.js +66 -0
- package/src/x_ite/Browser/ParticleSystems/Line3.glsl +55 -0
- package/src/x_ite/Browser/ParticleSystems/Plane3.glsl +160 -0
- package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +27 -3
- package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +37 -37
- package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +19 -13
- package/src/x_ite/Browser/Shaders/Shader.js +33 -12
- package/src/x_ite/Browser/Shaders/ShaderSource.js +6 -0
- package/src/x_ite/Browser/Shaders/ShaderTest.js +16 -10
- package/src/x_ite/Browser/Shape/X3DShapeContext.js +50 -9
- package/src/x_ite/Browser/Text/X3DTextContext.js +4 -13
- package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +23 -33
- package/src/x_ite/Browser/Texturing3D/DICOMParser.js +2 -2
- package/src/x_ite/Browser/Time/X3DTimeContext.js +3 -1
- package/src/x_ite/Browser/VERSION.js +1 -1
- package/src/x_ite/Browser/X3DBrowser.js +7 -6
- package/src/x_ite/Browser/X3DBrowserContext.js +35 -10
- package/src/x_ite/Components/Core/X3DNode.js +4 -0
- package/src/x_ite/Components/Core/X3DPrototypeInstance.js +0 -2
- package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +3 -4
- package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +1 -12
- package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +0 -1
- package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +1 -1
- package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +76 -77
- package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +2 -9
- package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +51 -65
- package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +1 -1
- package/src/x_ite/Components/Followers/X3DChaserNode.js +18 -32
- package/src/x_ite/Components/Followers/X3DDamperNode.js +1 -6
- package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +1 -1
- package/src/x_ite/Components/Geometry3D/ElevationGrid.js +12 -4
- package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +4 -4
- package/src/x_ite/Components/Geospatial/GeoCoordinate.js +10 -27
- package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +5 -10
- package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +9 -16
- package/src/x_ite/Components/Geospatial/GeoTransform.js +6 -18
- package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +20 -27
- package/src/x_ite/Components/Grouping/X3DGroupingNode.js +8 -8
- package/src/x_ite/Components/Grouping/X3DTransformNode.js +0 -4
- package/src/x_ite/Components/HAnim/HAnimHumanoid.js +68 -75
- package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +4 -11
- package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +1 -1
- package/src/x_ite/Components/Layout/LayoutGroup.js +4 -9
- package/src/x_ite/Components/Layout/ScreenFontStyle.js +1 -1
- package/src/x_ite/Components/Layout/ScreenGroup.js +18 -23
- package/src/x_ite/Components/Lighting/DirectionalLight.js +28 -36
- package/src/x_ite/Components/Lighting/PointLight.js +32 -47
- package/src/x_ite/Components/Lighting/SpotLight.js +33 -48
- package/src/x_ite/Components/Navigation/Billboard.js +49 -56
- package/src/x_ite/Components/Navigation/LOD.js +1 -1
- package/src/x_ite/Components/Navigation/X3DViewpointNode.js +82 -111
- package/src/x_ite/Components/Networking/Anchor.js +10 -4
- package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +6 -6
- package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +44 -36
- package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +26 -17
- package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +20 -7
- package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +461 -876
- package/src/x_ite/Components/ParticleSystems/PointEmitter.js +39 -35
- package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +112 -128
- package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +105 -112
- package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +138 -176
- package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +16 -11
- package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +807 -217
- package/src/x_ite/Components/Picking/LinePickSensor.js +31 -39
- package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +90 -107
- package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +48 -55
- package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +53 -70
- package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +8 -15
- package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +43 -50
- package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +32 -39
- package/src/x_ite/Components/Rendering/ClipPlane.js +3 -11
- package/src/x_ite/Components/Rendering/Color.js +12 -37
- package/src/x_ite/Components/Rendering/ColorRGBA.js +13 -38
- package/src/x_ite/Components/Rendering/IndexedLineSet.js +12 -4
- package/src/x_ite/Components/Rendering/LineSet.js +21 -13
- package/src/x_ite/Components/Rendering/PointSet.js +21 -13
- package/src/x_ite/Components/Rendering/X3DColorNode.js +13 -0
- package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +13 -5
- package/src/x_ite/Components/Rendering/X3DGeometryNode.js +248 -325
- package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +305 -134
- package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +99 -122
- package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +24 -38
- package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +10 -17
- package/src/x_ite/Components/Shaders/ComposedShader.js +35 -75
- package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +5 -15
- package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +7 -24
- package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +7 -24
- package/src/x_ite/Components/Shaders/ShaderPart.js +1 -10
- package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +219 -209
- package/src/x_ite/Components/Shaders/X3DShaderNode.js +1 -1
- package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +23 -1
- package/src/x_ite/Components/Shape/Appearance.js +12 -0
- package/src/x_ite/Components/Shape/FillProperties.js +12 -1
- package/src/x_ite/Components/Shape/LineProperties.js +33 -1
- package/src/x_ite/Components/Shape/PointProperties.js +23 -1
- package/src/x_ite/Components/Shape/Shape.js +27 -34
- package/src/x_ite/Components/Sound/Sound.js +30 -40
- package/src/x_ite/Components/Text/Text.js +6 -20
- package/src/x_ite/Components/Texturing/TextureCoordinate.js +5 -26
- package/src/x_ite/Components/Texturing/TextureProperties.js +4 -4
- package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +21 -0
- package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +5 -4
- package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +24 -33
- package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +5 -26
- package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +5 -26
- package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +12 -19
- package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +7 -7
- package/src/x_ite/Components.js +2 -2
- package/src/x_ite/Fallback.js +9 -3
- package/src/x_ite/Fields/SFColor.js +4 -0
- package/src/x_ite/Fields/SFColorRGBA.js +4 -0
- package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +4 -0
- package/src/x_ite/Fields/SFRotation.js +4 -0
- package/src/x_ite/Fields/SFString.js +4 -0
- package/src/x_ite/Fields/SFVecPrototypeTemplate.js +4 -0
- package/src/x_ite/Parser/XMLParser.js +1 -1
- package/src/x_ite/Rendering/TextureBuffer.js +43 -36
- package/src/x_ite/Rendering/VertexArray.js +101 -0
- package/src/x_ite/Rendering/X3DRenderObject.js +123 -144
- package/src/x_ite/X3D.js +32 -26
- package/src/x_ite.config.js +0 -5
- package/src/x_ite.css +200 -162
- package/src/x_ite.html +26 -10
- package/src/x_ite.js +42 -0
- package/x_ite.min.html +26 -10
- package/dist/assets/hatching/0.png +0 -0
- package/dist/assets/linetype/0.png +0 -0
- package/src/assets/hatching/0.png +0 -0
- package/src/assets/linetype/0.png +0 -0
- package/src/spinner.css +0 -67
- package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
var module = { }, exports, process;
|
|
5
5
|
|
|
6
6
|
const
|
|
7
|
-
define = window [Symbol .for ("X_ITE.X3D-
|
|
8
|
-
require = window [Symbol .for ("X_ITE.X3D-
|
|
7
|
+
define = window [Symbol .for ("X_ITE.X3D-6.0.0")] .define,
|
|
8
|
+
require = window [Symbol .for ("X_ITE.X3D-6.0.0")] .require;
|
|
9
9
|
/* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
|
|
10
10
|
*******************************************************************************
|
|
11
11
|
*
|
|
@@ -106,44 +106,83 @@ function (Fields,
|
|
|
106
106
|
{
|
|
107
107
|
X3DNode .prototype .initialize .call (this);
|
|
108
108
|
|
|
109
|
-
this .
|
|
109
|
+
this ._addChildren .addInterest ("set_addChildren__", this);
|
|
110
|
+
this ._removeChildren .addInterest ("set_removeChildren__", this);
|
|
111
|
+
this ._children .addInterest ("set_children__", this);
|
|
110
112
|
|
|
111
113
|
this .set_children__ ();
|
|
112
114
|
},
|
|
115
|
+
set_addChildren__: function ()
|
|
116
|
+
{
|
|
117
|
+
this ._addChildren .setTainted (true);
|
|
118
|
+
|
|
119
|
+
this ._addChildren .erase (remove (this ._addChildren, 0, this ._addChildren .length,
|
|
120
|
+
this ._children, 0, this ._children .length),
|
|
121
|
+
this ._addChildren .length);
|
|
122
|
+
|
|
123
|
+
for (const child of this ._addChildren)
|
|
124
|
+
this ._children .push (child);
|
|
125
|
+
|
|
126
|
+
this ._addChildren .length = 0;
|
|
127
|
+
this ._addChildren .setTainted (false);
|
|
128
|
+
},
|
|
129
|
+
set_removeChildren__: function ()
|
|
130
|
+
{
|
|
131
|
+
this ._removeChildren .setTainted (true);
|
|
132
|
+
|
|
133
|
+
this ._children .erase (remove (this ._children, 0, this ._children .length,
|
|
134
|
+
this ._removeChildren, 0, this ._removeChildren .length),
|
|
135
|
+
this ._children .length);
|
|
136
|
+
|
|
137
|
+
this ._removeChildren .length = 0;
|
|
138
|
+
this ._removeChildren .setTainted (false);
|
|
139
|
+
},
|
|
113
140
|
set_children__: function ()
|
|
114
141
|
{
|
|
115
|
-
|
|
142
|
+
const childNodes = this .childNodes;
|
|
116
143
|
|
|
117
144
|
childNodes .length = 0;
|
|
118
145
|
|
|
119
|
-
for (
|
|
146
|
+
for (const node of this ._children)
|
|
120
147
|
{
|
|
121
|
-
|
|
148
|
+
const childNode = X3DCast (X3DConstants .NurbsCurve2D, node);
|
|
122
149
|
|
|
123
150
|
if (childNode)
|
|
124
151
|
{
|
|
125
152
|
childNodes .push (childNode);
|
|
126
153
|
continue;
|
|
127
154
|
}
|
|
128
|
-
|
|
129
|
-
var childNode = X3DCast (X3DConstants .ContourPolyline2D, this ._children [i]);
|
|
130
|
-
|
|
131
|
-
if (childNode)
|
|
155
|
+
else
|
|
132
156
|
{
|
|
133
|
-
|
|
134
|
-
|
|
157
|
+
const childNode = X3DCast (X3DConstants .ContourPolyline2D, node);
|
|
158
|
+
|
|
159
|
+
if (childNode)
|
|
160
|
+
{
|
|
161
|
+
childNodes .push (childNode);
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
135
164
|
}
|
|
136
165
|
}
|
|
137
166
|
},
|
|
138
167
|
addTrimmingContour: function (trimmingContours)
|
|
139
168
|
{
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
for (var i = 0, length = childNodes .length; i < length; ++ i)
|
|
143
|
-
trimmingContours .push (childNodes [i] .tessellate (2));
|
|
169
|
+
for (const childNode of this .childNodes)
|
|
170
|
+
trimmingContours .push (childNode .tessellate (2));
|
|
144
171
|
}
|
|
145
172
|
});
|
|
146
173
|
|
|
174
|
+
function remove (array, first, last, range, rfirst, rlast)
|
|
175
|
+
{
|
|
176
|
+
const set = new Set ();
|
|
177
|
+
|
|
178
|
+
for (let i = rfirst; i < rlast; ++ i)
|
|
179
|
+
set .add (range [i]);
|
|
180
|
+
|
|
181
|
+
function compare (value) { return set .has (value); }
|
|
182
|
+
|
|
183
|
+
return array .remove (first, last, compare);
|
|
184
|
+
}
|
|
185
|
+
|
|
147
186
|
return Contour2D;
|
|
148
187
|
});
|
|
149
188
|
|
|
@@ -320,13 +359,14 @@ function (Fields,
|
|
|
320
359
|
{
|
|
321
360
|
case 0:
|
|
322
361
|
{
|
|
323
|
-
|
|
362
|
+
const
|
|
324
363
|
controlPointArray = this ._controlPoint .getValue (),
|
|
325
|
-
controlPoints = this .controlPoints
|
|
364
|
+
controlPoints = this .controlPoints,
|
|
365
|
+
length = this ._controlPoint .length;
|
|
326
366
|
|
|
327
|
-
for (
|
|
367
|
+
for (let i = 0; i < length; ++ i)
|
|
328
368
|
{
|
|
329
|
-
|
|
369
|
+
const i2 = i * 2;
|
|
330
370
|
|
|
331
371
|
controlPoints [i2 + 0] = controlPointArray [i2 + 0];
|
|
332
372
|
controlPoints [i2 + 1] = controlPointArray [i2 + 1];
|
|
@@ -338,13 +378,14 @@ function (Fields,
|
|
|
338
378
|
}
|
|
339
379
|
case 1:
|
|
340
380
|
{
|
|
341
|
-
|
|
381
|
+
const
|
|
342
382
|
controlPointArray = this ._controlPoint .getValue (),
|
|
343
|
-
controlPoints = this .controlPoints
|
|
383
|
+
controlPoints = this .controlPoints,
|
|
384
|
+
length = this ._controlPoint .length;
|
|
344
385
|
|
|
345
|
-
for (
|
|
386
|
+
for (let i = 0; i < length; ++ i)
|
|
346
387
|
{
|
|
347
|
-
|
|
388
|
+
const
|
|
348
389
|
i2 = i * 2,
|
|
349
390
|
i3 = i * 3;
|
|
350
391
|
|
|
@@ -359,13 +400,14 @@ function (Fields,
|
|
|
359
400
|
}
|
|
360
401
|
case 3:
|
|
361
402
|
{
|
|
362
|
-
|
|
403
|
+
const
|
|
363
404
|
controlPointArray = this ._controlPoint .getValue (),
|
|
364
|
-
controlPoints = this .controlPoints
|
|
405
|
+
controlPoints = this .controlPoints,
|
|
406
|
+
length = this ._controlPoint .length;
|
|
365
407
|
|
|
366
|
-
for (
|
|
408
|
+
for (let i = 0; i < length; ++ i)
|
|
367
409
|
{
|
|
368
|
-
|
|
410
|
+
const i2 = i * 2;
|
|
369
411
|
|
|
370
412
|
controlPoints [i] = new Vector3 (controlPointArray [i2 + 0], controlPointArray [i2 + 1], 0);
|
|
371
413
|
}
|
|
@@ -536,7 +578,7 @@ function (Vector2,
|
|
|
536
578
|
{
|
|
537
579
|
"use strict";
|
|
538
580
|
|
|
539
|
-
|
|
581
|
+
const NURBS = {
|
|
540
582
|
getTessellation: function (tessellation, dimension)
|
|
541
583
|
{
|
|
542
584
|
if (tessellation > 0)
|
|
@@ -549,7 +591,7 @@ function (Vector2,
|
|
|
549
591
|
},
|
|
550
592
|
getClosed2D: function (order, knot, weight, controlPoint)
|
|
551
593
|
{
|
|
552
|
-
|
|
594
|
+
const
|
|
553
595
|
dimension = controlPoint .length,
|
|
554
596
|
haveWeights = weight .length === dimension;
|
|
555
597
|
|
|
@@ -575,13 +617,13 @@ function (Vector2,
|
|
|
575
617
|
},
|
|
576
618
|
getClosed: (function ()
|
|
577
619
|
{
|
|
578
|
-
|
|
620
|
+
const
|
|
579
621
|
firstPoint = new Vector3 (0, 0, 0),
|
|
580
622
|
lastPoint = new Vector3 (0, 0, 0);
|
|
581
623
|
|
|
582
624
|
return function (order, knot, weight, controlPointNode)
|
|
583
625
|
{
|
|
584
|
-
|
|
626
|
+
const
|
|
585
627
|
dimension = controlPointNode .getSize (),
|
|
586
628
|
haveWeights = weight .length === dimension;
|
|
587
629
|
|
|
@@ -608,17 +650,17 @@ function (Vector2,
|
|
|
608
650
|
})(),
|
|
609
651
|
getUClosed: (function ()
|
|
610
652
|
{
|
|
611
|
-
|
|
653
|
+
const
|
|
612
654
|
firstPoint = new Vector3 (0, 0, 0),
|
|
613
655
|
lastPoint = new Vector3 (0, 0, 0);
|
|
614
656
|
|
|
615
657
|
return function (uOrder, uDimension, vDimension, uKnot, weight, controlPointNode)
|
|
616
658
|
{
|
|
617
|
-
|
|
659
|
+
const haveWeights = weight .length === controlPointNode .getSize ();
|
|
618
660
|
|
|
619
|
-
for (
|
|
661
|
+
for (let v = 0, length = vDimension; v < length; ++ v)
|
|
620
662
|
{
|
|
621
|
-
|
|
663
|
+
const
|
|
622
664
|
first = v * uDimension,
|
|
623
665
|
last = v * uDimension + uDimension - 1;
|
|
624
666
|
|
|
@@ -646,17 +688,17 @@ function (Vector2,
|
|
|
646
688
|
})(),
|
|
647
689
|
getVClosed: (function ()
|
|
648
690
|
{
|
|
649
|
-
|
|
691
|
+
const
|
|
650
692
|
firstPoint = new Vector3 (0, 0, 0),
|
|
651
693
|
lastPoint = new Vector3 (0, 0, 0);
|
|
652
694
|
|
|
653
695
|
return function (vOrder, uDimension, vDimension, vKnot, weight, controlPointNode)
|
|
654
696
|
{
|
|
655
|
-
|
|
697
|
+
const haveWeights = weight .length === controlPointNode .getSize ();
|
|
656
698
|
|
|
657
|
-
for (
|
|
699
|
+
for (let u = 0, size = uDimension; u < size; ++ u)
|
|
658
700
|
{
|
|
659
|
-
|
|
701
|
+
const
|
|
660
702
|
first = u,
|
|
661
703
|
last = (vDimension - 1) * uDimension + u;
|
|
662
704
|
|
|
@@ -689,9 +731,9 @@ function (Vector2,
|
|
|
689
731
|
if (knot .length === dimension + order)
|
|
690
732
|
{
|
|
691
733
|
{
|
|
692
|
-
|
|
734
|
+
let count = 1;
|
|
693
735
|
|
|
694
|
-
for (
|
|
736
|
+
for (let i = 1, size = order; i < size; ++ i)
|
|
695
737
|
{
|
|
696
738
|
count += knot [i] === knot [0];
|
|
697
739
|
}
|
|
@@ -701,9 +743,9 @@ function (Vector2,
|
|
|
701
743
|
}
|
|
702
744
|
|
|
703
745
|
{
|
|
704
|
-
|
|
746
|
+
let count = 1;
|
|
705
747
|
|
|
706
|
-
for (
|
|
748
|
+
for (let i = knot .length - order, size = knot .length - 1; i < size; ++ i)
|
|
707
749
|
{
|
|
708
750
|
count += knot [i] === knot [size];
|
|
709
751
|
}
|
|
@@ -717,9 +759,9 @@ function (Vector2,
|
|
|
717
759
|
},
|
|
718
760
|
getKnots: function (result, closed, order, dimension, knot)
|
|
719
761
|
{
|
|
720
|
-
|
|
762
|
+
const knots = result || [ ];
|
|
721
763
|
|
|
722
|
-
for (
|
|
764
|
+
for (let i = 0, length = knot .length; i < length; ++ i)
|
|
723
765
|
knots [i] = knot [i];
|
|
724
766
|
|
|
725
767
|
knots .length = knot .length;
|
|
@@ -727,15 +769,15 @@ function (Vector2,
|
|
|
727
769
|
// check the knot-vectors. If they are not according to standard
|
|
728
770
|
// default uniform knot vectors will be generated.
|
|
729
771
|
|
|
730
|
-
|
|
772
|
+
let generateUniform = true;
|
|
731
773
|
|
|
732
774
|
if (knots .length === dimension + order)
|
|
733
775
|
{
|
|
734
776
|
generateUniform = false;
|
|
735
777
|
|
|
736
|
-
|
|
778
|
+
let consecutiveKnots = 0;
|
|
737
779
|
|
|
738
|
-
for (
|
|
780
|
+
for (let i = 1, length = knots .length; i < length; ++ i)
|
|
739
781
|
{
|
|
740
782
|
if (knots [i] == knots [i - 1])
|
|
741
783
|
++ consecutiveKnots;
|
|
@@ -752,13 +794,13 @@ function (Vector2,
|
|
|
752
794
|
|
|
753
795
|
if (generateUniform)
|
|
754
796
|
{
|
|
755
|
-
for (
|
|
797
|
+
for (let i = 0, length = dimension + order; i < length; ++ i)
|
|
756
798
|
knots [i] = i / (length - 1);
|
|
757
799
|
}
|
|
758
800
|
|
|
759
801
|
if (closed)
|
|
760
802
|
{
|
|
761
|
-
for (
|
|
803
|
+
for (let i = 1, length = order - 1; i < length; ++ i)
|
|
762
804
|
knots .push (knots .at (-1) + (knots [i] - knots [i - 1]));
|
|
763
805
|
}
|
|
764
806
|
|
|
@@ -769,9 +811,9 @@ function (Vector2,
|
|
|
769
811
|
if (weight .length !== dimension)
|
|
770
812
|
return undefined;
|
|
771
813
|
|
|
772
|
-
|
|
814
|
+
const weights = result || [ ];
|
|
773
815
|
|
|
774
|
-
for (
|
|
816
|
+
for (let i = 0; i < dimension; ++ i)
|
|
775
817
|
{
|
|
776
818
|
weights [i] = weight [i];
|
|
777
819
|
}
|
|
@@ -782,16 +824,16 @@ function (Vector2,
|
|
|
782
824
|
},
|
|
783
825
|
getUVWeights: function (result, uDimension, vDimension, weight)
|
|
784
826
|
{
|
|
785
|
-
|
|
827
|
+
const dimension = uDimension * vDimension;
|
|
786
828
|
|
|
787
829
|
if (weight .length !== dimension)
|
|
788
830
|
return undefined;
|
|
789
831
|
|
|
790
|
-
|
|
832
|
+
const weights = result || [ ];
|
|
791
833
|
|
|
792
|
-
for (
|
|
834
|
+
for (let u = 0, i = 0; u < uDimension; ++ u)
|
|
793
835
|
{
|
|
794
|
-
for (
|
|
836
|
+
for (let v = 0; v < vDimension; ++ v, ++ i)
|
|
795
837
|
{
|
|
796
838
|
weights [i] = weight [i];
|
|
797
839
|
}
|
|
@@ -803,7 +845,7 @@ function (Vector2,
|
|
|
803
845
|
},
|
|
804
846
|
getControlPoints2D: function (result, closed, order, weights, controlPoint)
|
|
805
847
|
{
|
|
806
|
-
|
|
848
|
+
const
|
|
807
849
|
controlPoints = result || [ ],
|
|
808
850
|
controlPointArray = controlPoint .getValue (),
|
|
809
851
|
dimension = controlPoint .length,
|
|
@@ -816,9 +858,9 @@ function (Vector2,
|
|
|
816
858
|
controlPoints .length = 0;
|
|
817
859
|
}
|
|
818
860
|
|
|
819
|
-
for (
|
|
861
|
+
for (let i = 0; i < dimension; ++ i)
|
|
820
862
|
{
|
|
821
|
-
|
|
863
|
+
const
|
|
822
864
|
i2 = i * 2,
|
|
823
865
|
p = controlPoints [i] || new Vector (0, 0, 0);
|
|
824
866
|
|
|
@@ -829,7 +871,7 @@ function (Vector2,
|
|
|
829
871
|
|
|
830
872
|
if (closed)
|
|
831
873
|
{
|
|
832
|
-
for (
|
|
874
|
+
for (let i = 1, size = order - 1; i < size; ++ i)
|
|
833
875
|
controlPoints .push (controlPoints [i]);
|
|
834
876
|
}
|
|
835
877
|
|
|
@@ -837,7 +879,7 @@ function (Vector2,
|
|
|
837
879
|
},
|
|
838
880
|
getControlPoints: function (result, closed, order, weights, controlPointNode)
|
|
839
881
|
{
|
|
840
|
-
|
|
882
|
+
const
|
|
841
883
|
controlPoints = result || [ ],
|
|
842
884
|
dimension = controlPointNode .getSize (),
|
|
843
885
|
haveWeights = Boolean (weights),
|
|
@@ -849,9 +891,9 @@ function (Vector2,
|
|
|
849
891
|
controlPoints .length = 0;
|
|
850
892
|
}
|
|
851
893
|
|
|
852
|
-
for (
|
|
894
|
+
for (let i = 0; i < dimension; ++ i)
|
|
853
895
|
{
|
|
854
|
-
|
|
896
|
+
const cp = controlPoints [i] = controlPointNode .get1Point (i, controlPoints [i] || new Vector (0, 0, 0, 0));
|
|
855
897
|
|
|
856
898
|
if (haveWeights)
|
|
857
899
|
cp .w = weights [i];
|
|
@@ -861,7 +903,7 @@ function (Vector2,
|
|
|
861
903
|
|
|
862
904
|
if (closed)
|
|
863
905
|
{
|
|
864
|
-
for (
|
|
906
|
+
for (let i = 1, size = order - 1; i < size; ++ i)
|
|
865
907
|
controlPoints .push (controlPoints [i]);
|
|
866
908
|
}
|
|
867
909
|
|
|
@@ -869,7 +911,7 @@ function (Vector2,
|
|
|
869
911
|
},
|
|
870
912
|
getUVControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, weights, controlPointNode)
|
|
871
913
|
{
|
|
872
|
-
|
|
914
|
+
const
|
|
873
915
|
controlPoints = result || [ ],
|
|
874
916
|
haveWeights = Boolean (weights),
|
|
875
917
|
Vector = haveWeights ? Vector4 : Vector3;
|
|
@@ -880,16 +922,16 @@ function (Vector2,
|
|
|
880
922
|
controlPoints .length = 0;
|
|
881
923
|
}
|
|
882
924
|
|
|
883
|
-
for (
|
|
925
|
+
for (let u = 0; u < uDimension; ++ u)
|
|
884
926
|
{
|
|
885
|
-
|
|
927
|
+
let cp = controlPoints [u];
|
|
886
928
|
|
|
887
929
|
if (! cp)
|
|
888
930
|
cp = controlPoints [u] = [ ];
|
|
889
931
|
|
|
890
|
-
for (
|
|
932
|
+
for (let v = 0; v < vDimension; ++ v)
|
|
891
933
|
{
|
|
892
|
-
|
|
934
|
+
const index = v * uDimension + u;
|
|
893
935
|
|
|
894
936
|
cp [v] = controlPointNode .get1Point (index, cp [v] || new Vector (0, 0, 0, 0));
|
|
895
937
|
|
|
@@ -901,7 +943,7 @@ function (Vector2,
|
|
|
901
943
|
|
|
902
944
|
if (vClosed)
|
|
903
945
|
{
|
|
904
|
-
for (
|
|
946
|
+
for (let i = 1, length = vOrder - 1; i < length; ++ i)
|
|
905
947
|
cp .push (cp [i]);
|
|
906
948
|
}
|
|
907
949
|
}
|
|
@@ -910,7 +952,7 @@ function (Vector2,
|
|
|
910
952
|
|
|
911
953
|
if (uClosed)
|
|
912
954
|
{
|
|
913
|
-
for (
|
|
955
|
+
for (let i = 1, length = uOrder - 1; i < length; ++ i)
|
|
914
956
|
controlPoints .push (controlPoints [i]);
|
|
915
957
|
}
|
|
916
958
|
|
|
@@ -918,18 +960,18 @@ function (Vector2,
|
|
|
918
960
|
},
|
|
919
961
|
getTexControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, controlPointNode)
|
|
920
962
|
{
|
|
921
|
-
|
|
963
|
+
const controlPoints = result || [ ];
|
|
922
964
|
|
|
923
|
-
for (
|
|
965
|
+
for (let u = 0; u < uDimension; ++ u)
|
|
924
966
|
{
|
|
925
|
-
|
|
967
|
+
let cp = controlPoints [u];
|
|
926
968
|
|
|
927
969
|
if (! cp)
|
|
928
970
|
cp = controlPoints [u] = [ ];
|
|
929
971
|
|
|
930
|
-
for (
|
|
972
|
+
for (let v = 0; v < vDimension; ++ v)
|
|
931
973
|
{
|
|
932
|
-
|
|
974
|
+
const index = v * uDimension + u;
|
|
933
975
|
|
|
934
976
|
cp [v] = controlPointNode .get1Point (index, cp [v] || new Vector4 (0, 0, 0, 0));
|
|
935
977
|
}
|
|
@@ -938,7 +980,7 @@ function (Vector2,
|
|
|
938
980
|
|
|
939
981
|
if (vClosed)
|
|
940
982
|
{
|
|
941
|
-
for (
|
|
983
|
+
for (let i = 1, length = vOrder - 1; i < length; ++ i)
|
|
942
984
|
cp .push (cp [i]);
|
|
943
985
|
}
|
|
944
986
|
}
|
|
@@ -947,7 +989,7 @@ function (Vector2,
|
|
|
947
989
|
|
|
948
990
|
if (uClosed)
|
|
949
991
|
{
|
|
950
|
-
for (
|
|
992
|
+
for (let i = 1, length = uOrder - 1; i < length; ++ i)
|
|
951
993
|
controlPoints .push (controlPoints [i]);
|
|
952
994
|
}
|
|
953
995
|
|
|
@@ -3076,7 +3118,7 @@ function (Fields,
|
|
|
3076
3118
|
},
|
|
3077
3119
|
tessellate: function (type)
|
|
3078
3120
|
{
|
|
3079
|
-
|
|
3121
|
+
const array = this .array;
|
|
3080
3122
|
|
|
3081
3123
|
array .length = 0;
|
|
3082
3124
|
|
|
@@ -3088,22 +3130,22 @@ function (Fields,
|
|
|
3088
3130
|
|
|
3089
3131
|
// Order and dimension are now positive numbers.
|
|
3090
3132
|
|
|
3091
|
-
|
|
3133
|
+
const
|
|
3092
3134
|
closed = this .getClosed (this ._order .getValue (), this ._knot, this ._weight, this ._controlPoint),
|
|
3093
3135
|
weights = this .getWeights (this .weights, this ._controlPoint .length, this ._weight),
|
|
3094
3136
|
controlPoints = this .getControlPoints (this .controlPoints, closed, this ._order .getValue (), weights, this ._controlPoint);
|
|
3095
3137
|
|
|
3096
3138
|
// Knots
|
|
3097
3139
|
|
|
3098
|
-
|
|
3140
|
+
const
|
|
3099
3141
|
knots = this .getKnots (this .knots, closed, this ._order .getValue (), this ._controlPoint .length, this ._knot),
|
|
3100
3142
|
scale = knots .at (-1) - knots [0];
|
|
3101
3143
|
|
|
3102
3144
|
// Initialize NURBS tessellator
|
|
3103
3145
|
|
|
3104
|
-
|
|
3146
|
+
const degree = this ._order .getValue () - 1;
|
|
3105
3147
|
|
|
3106
|
-
|
|
3148
|
+
const surface = this .surface = (this .surface || nurbs) ({
|
|
3107
3149
|
boundary: ["open"],
|
|
3108
3150
|
degree: [degree],
|
|
3109
3151
|
knots: [knots],
|
|
@@ -3114,7 +3156,7 @@ function (Fields,
|
|
|
3114
3156
|
this .sampleOptions .resolution [0] = this .getTessellation (knots .length);
|
|
3115
3157
|
this .sampleOptions .haveWeights = Boolean (weights);
|
|
3116
3158
|
|
|
3117
|
-
|
|
3159
|
+
const
|
|
3118
3160
|
mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
|
|
3119
3161
|
points = mesh .points;
|
|
3120
3162
|
|
|
@@ -3122,7 +3164,7 @@ function (Fields,
|
|
|
3122
3164
|
{
|
|
3123
3165
|
case 0:
|
|
3124
3166
|
{
|
|
3125
|
-
for (
|
|
3167
|
+
for (let i = 0, length = points .length; i < length; i += 2)
|
|
3126
3168
|
{
|
|
3127
3169
|
array .push (points [i], points [i + 1]);
|
|
3128
3170
|
}
|
|
@@ -3131,7 +3173,7 @@ function (Fields,
|
|
|
3131
3173
|
}
|
|
3132
3174
|
case 1:
|
|
3133
3175
|
{
|
|
3134
|
-
for (
|
|
3176
|
+
for (let i = 0, length = points .length; i < length; i += 2)
|
|
3135
3177
|
{
|
|
3136
3178
|
array .push (points [i], 0, points [i + 1]);
|
|
3137
3179
|
}
|
|
@@ -3140,7 +3182,7 @@ function (Fields,
|
|
|
3140
3182
|
}
|
|
3141
3183
|
case 2:
|
|
3142
3184
|
{
|
|
3143
|
-
for (
|
|
3185
|
+
for (let i = 0, length = points .length; i < length; i += 2)
|
|
3144
3186
|
{
|
|
3145
3187
|
array .push (new Vector3 (points [i], points [i + 1], 0));
|
|
3146
3188
|
}
|
|
@@ -3335,22 +3377,22 @@ function (Fields,
|
|
|
3335
3377
|
|
|
3336
3378
|
// Order and dimension are now positive numbers.
|
|
3337
3379
|
|
|
3338
|
-
|
|
3380
|
+
const
|
|
3339
3381
|
closed = this .getClosed (this ._order .getValue (), this ._knot, this ._weight, this .controlPointNode),
|
|
3340
3382
|
weights = this .getWeights (this .weights, this .controlPointNode .getSize (), this ._weight),
|
|
3341
3383
|
controlPoints = this .getControlPoints (this .controlPoints, closed, this ._order .getValue (), weights, this .controlPointNode);
|
|
3342
3384
|
|
|
3343
3385
|
// Knots
|
|
3344
3386
|
|
|
3345
|
-
|
|
3387
|
+
const
|
|
3346
3388
|
knots = this .getKnots (this .knots, closed, this ._order .getValue (), this .controlPointNode .getSize (), this ._knot),
|
|
3347
3389
|
scale = knots .at (-1) - knots [0];
|
|
3348
3390
|
|
|
3349
3391
|
// Initialize NURBS tessellator
|
|
3350
3392
|
|
|
3351
|
-
|
|
3393
|
+
const degree = this ._order .getValue () - 1;
|
|
3352
3394
|
|
|
3353
|
-
|
|
3395
|
+
const surface = this .surface = (this .surface || nurbs) ({
|
|
3354
3396
|
boundary: ["open"],
|
|
3355
3397
|
degree: [degree],
|
|
3356
3398
|
knots: [knots],
|
|
@@ -3360,7 +3402,7 @@ function (Fields,
|
|
|
3360
3402
|
|
|
3361
3403
|
this .sampleOptions .haveWeights = Boolean (weights);
|
|
3362
3404
|
|
|
3363
|
-
|
|
3405
|
+
const
|
|
3364
3406
|
mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
|
|
3365
3407
|
points = mesh .points,
|
|
3366
3408
|
interpolator = this .interpolator;
|
|
@@ -3368,11 +3410,11 @@ function (Fields,
|
|
|
3368
3410
|
interpolator ._key .length = 0;
|
|
3369
3411
|
interpolator ._keyValue .length = 0;
|
|
3370
3412
|
|
|
3371
|
-
for (
|
|
3413
|
+
for (let i = 0, length = points .length - 3; i < length; i += 3)
|
|
3372
3414
|
{
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3415
|
+
const direction = new Vector3 (points [i + 3] - points [i + 0],
|
|
3416
|
+
points [i + 4] - points [i + 1],
|
|
3417
|
+
points [i + 5] - points [i + 2]);
|
|
3376
3418
|
|
|
3377
3419
|
interpolator ._key .push (knots [0] + i / (length - 3 + (3 * closed)) * scale);
|
|
3378
3420
|
interpolator ._keyValue. push (new Rotation4 (Vector3 .zAxis, direction));
|
|
@@ -3587,7 +3629,7 @@ function (X3DParametricGeometryNode,
|
|
|
3587
3629
|
|
|
3588
3630
|
// ControlPoints
|
|
3589
3631
|
|
|
3590
|
-
|
|
3632
|
+
const
|
|
3591
3633
|
uClosed = this .getUClosed (this ._uOrder .getValue (), this ._uDimension .getValue (), this ._vDimension .getValue (), this ._uKnot, this ._weight, this .controlPointNode),
|
|
3592
3634
|
vClosed = this .getVClosed (this ._vOrder .getValue (), this ._uDimension .getValue (), this ._vDimension .getValue (), this ._vKnot, this ._weight, this .controlPointNode),
|
|
3593
3635
|
weights = this .getUVWeights (this .weights, this ._uDimension .getValue (), this ._vDimension .getValue (), this ._weight),
|
|
@@ -3595,7 +3637,7 @@ function (X3DParametricGeometryNode,
|
|
|
3595
3637
|
|
|
3596
3638
|
// Knots
|
|
3597
3639
|
|
|
3598
|
-
|
|
3640
|
+
const
|
|
3599
3641
|
uKnots = this .getKnots (this .uKnots, uClosed, this ._uOrder .getValue (), this ._uDimension .getValue (), this ._uKnot),
|
|
3600
3642
|
vKnots = this .getKnots (this .vKnots, vClosed, this ._vOrder .getValue (), this ._vDimension .getValue (), this ._vKnot),
|
|
3601
3643
|
uScale = uKnots .at (-1) - uKnots [0],
|
|
@@ -3603,11 +3645,11 @@ function (X3DParametricGeometryNode,
|
|
|
3603
3645
|
|
|
3604
3646
|
// Initialize NURBS tessellator
|
|
3605
3647
|
|
|
3606
|
-
|
|
3648
|
+
const
|
|
3607
3649
|
uDegree = this ._uOrder .getValue () - 1,
|
|
3608
3650
|
vDegree = this ._vOrder .getValue () - 1;
|
|
3609
3651
|
|
|
3610
|
-
|
|
3652
|
+
const surface = this .surface = (this .surface || nurbs) ({
|
|
3611
3653
|
boundary: ["open", "open"],
|
|
3612
3654
|
degree: [uDegree, vDegree],
|
|
3613
3655
|
knots: [uKnots, vKnots],
|
|
@@ -3615,7 +3657,7 @@ function (X3DParametricGeometryNode,
|
|
|
3615
3657
|
debug: false,
|
|
3616
3658
|
});
|
|
3617
3659
|
|
|
3618
|
-
|
|
3660
|
+
const sampleOptions = this .sampleOptions;
|
|
3619
3661
|
|
|
3620
3662
|
sampleOptions .resolution [0] = this .getUTessellation (uKnots .length);
|
|
3621
3663
|
sampleOptions .resolution [1] = this .getVTessellation (vKnots .length);
|
|
@@ -3625,15 +3667,15 @@ function (X3DParametricGeometryNode,
|
|
|
3625
3667
|
sampleOptions .haveWeights = Boolean (weights);
|
|
3626
3668
|
sampleOptions .trimmingContours = this .getTrimmingContours ();
|
|
3627
3669
|
|
|
3628
|
-
|
|
3670
|
+
const
|
|
3629
3671
|
mesh = nurbs .sample (this .mesh, surface, sampleOptions),
|
|
3630
3672
|
faces = mesh .faces,
|
|
3631
3673
|
points = mesh .points,
|
|
3632
3674
|
vertexArray = this .getVertices ();
|
|
3633
3675
|
|
|
3634
|
-
for (
|
|
3676
|
+
for (let i = 0, length = faces .length; i < length; ++ i)
|
|
3635
3677
|
{
|
|
3636
|
-
|
|
3678
|
+
const index = faces [i] * 3;
|
|
3637
3679
|
|
|
3638
3680
|
vertexArray .push (points [index], points [index + 1], points [index + 2], 1);
|
|
3639
3681
|
}
|
|
@@ -3645,7 +3687,7 @@ function (X3DParametricGeometryNode,
|
|
|
3645
3687
|
},
|
|
3646
3688
|
buildNurbsTexCoords: (function ()
|
|
3647
3689
|
{
|
|
3648
|
-
|
|
3690
|
+
const
|
|
3649
3691
|
defaultTexUKnots = [ ],
|
|
3650
3692
|
defaultTexVKnots = [ ],
|
|
3651
3693
|
defaultTexControlPoints = [[[0, 0, 0, 1], [0, 1, 0, 1]], [[1, 0, 0, 1], [1, 1, 0, 1]]];
|
|
@@ -3659,7 +3701,7 @@ function (X3DParametricGeometryNode,
|
|
|
3659
3701
|
|
|
3660
3702
|
return function (uClosed, vClosed, uOrder, vOrder, uKnots, vKnots, uDimension, vDimension, domain)
|
|
3661
3703
|
{
|
|
3662
|
-
|
|
3704
|
+
const sampleOptions = this .sampleOptions;
|
|
3663
3705
|
|
|
3664
3706
|
if (this .texCoordNode && this .texCoordNode .getSize () === uDimension * vDimension)
|
|
3665
3707
|
{
|
|
@@ -3693,7 +3735,7 @@ function (X3DParametricGeometryNode,
|
|
|
3693
3735
|
sampleOptions .domain = domain;
|
|
3694
3736
|
}
|
|
3695
3737
|
|
|
3696
|
-
|
|
3738
|
+
const texSurface = this .texSurface = (this .texSurface || nurbs) ({
|
|
3697
3739
|
boundary: ["open", "open"],
|
|
3698
3740
|
degree: [texUDegree, texVDegree],
|
|
3699
3741
|
knots: [texUKnots, texVKnots],
|
|
@@ -3704,15 +3746,15 @@ function (X3DParametricGeometryNode,
|
|
|
3704
3746
|
sampleOptions .closed [1] = false;
|
|
3705
3747
|
sampleOptions .haveWeights = false;
|
|
3706
3748
|
|
|
3707
|
-
|
|
3749
|
+
const
|
|
3708
3750
|
texMesh = nurbs .sample (this .texMesh, texSurface, sampleOptions),
|
|
3709
3751
|
faces = texMesh .faces,
|
|
3710
3752
|
points = texMesh .points,
|
|
3711
3753
|
texCoordArray = this .getTexCoords ();
|
|
3712
3754
|
|
|
3713
|
-
for (
|
|
3755
|
+
for (let i = 0, length = faces .length; i < length; ++ i)
|
|
3714
3756
|
{
|
|
3715
|
-
|
|
3757
|
+
const index = faces [i] * 4;
|
|
3716
3758
|
|
|
3717
3759
|
texCoordArray .push (points [index], points [index + 1], points [index + 2], points [index + 3]);
|
|
3718
3760
|
}
|
|
@@ -3722,28 +3764,24 @@ function (X3DParametricGeometryNode,
|
|
|
3722
3764
|
})(),
|
|
3723
3765
|
buildNormals: function (faces, points)
|
|
3724
3766
|
{
|
|
3725
|
-
|
|
3767
|
+
const
|
|
3726
3768
|
normals = this .createNormals (faces, points),
|
|
3727
3769
|
normalArray = this .getNormals ();
|
|
3728
3770
|
|
|
3729
|
-
for (
|
|
3730
|
-
{
|
|
3731
|
-
var normal = normals [i];
|
|
3732
|
-
|
|
3771
|
+
for (const normal of normals)
|
|
3733
3772
|
normalArray .push (normal .x, normal .y, normal .z);
|
|
3734
|
-
}
|
|
3735
3773
|
},
|
|
3736
3774
|
createNormals: function (faces, points)
|
|
3737
3775
|
{
|
|
3738
|
-
|
|
3739
|
-
|
|
3740
|
-
|
|
3776
|
+
const
|
|
3777
|
+
normals = this .createFaceNormals (faces, points),
|
|
3778
|
+
normalIndex = [ ];
|
|
3741
3779
|
|
|
3742
|
-
for (
|
|
3780
|
+
for (let i = 0, length = faces .length; i < length; ++ i)
|
|
3743
3781
|
{
|
|
3744
|
-
|
|
3745
|
-
|
|
3746
|
-
|
|
3782
|
+
const index = faces [i];
|
|
3783
|
+
|
|
3784
|
+
let pointIndex = normalIndex [index];
|
|
3747
3785
|
|
|
3748
3786
|
if (! pointIndex)
|
|
3749
3787
|
pointIndex = normalIndex [index] = [ ];
|
|
@@ -3755,18 +3793,20 @@ function (X3DParametricGeometryNode,
|
|
|
3755
3793
|
},
|
|
3756
3794
|
createFaceNormals: (function ()
|
|
3757
3795
|
{
|
|
3758
|
-
|
|
3796
|
+
const
|
|
3759
3797
|
v1 = new Vector3 (0, 0, 0),
|
|
3760
3798
|
v2 = new Vector3 (0, 0, 0),
|
|
3761
3799
|
v3 = new Vector3 (0, 0, 0);
|
|
3762
3800
|
|
|
3763
3801
|
return function (faces, points)
|
|
3764
3802
|
{
|
|
3765
|
-
|
|
3803
|
+
const
|
|
3804
|
+
normals = this .faceNormals || [ ],
|
|
3805
|
+
length = faces .length;
|
|
3766
3806
|
|
|
3767
|
-
for (
|
|
3807
|
+
for (let i = 0; i < length; i += 3)
|
|
3768
3808
|
{
|
|
3769
|
-
|
|
3809
|
+
const
|
|
3770
3810
|
index1 = faces [i] * 3,
|
|
3771
3811
|
index2 = faces [i + 1] * 3,
|
|
3772
3812
|
index3 = faces [i + 2] * 3;
|
|
@@ -3775,7 +3815,7 @@ function (X3DParametricGeometryNode,
|
|
|
3775
3815
|
v2 .set (points [index2], points [index2 + 1], points [index2 + 2]);
|
|
3776
3816
|
v3 .set (points [index3], points [index3 + 1], points [index3 + 2]);
|
|
3777
3817
|
|
|
3778
|
-
|
|
3818
|
+
const normal = Triangle3 .normal (v1, v2 ,v3, normals [i] || new Vector3 (0, 0, 0));
|
|
3779
3819
|
|
|
3780
3820
|
normals [i] = normal;
|
|
3781
3821
|
normals [i + 1] = normal;
|
|
@@ -4075,22 +4115,22 @@ function (Fields,
|
|
|
4075
4115
|
|
|
4076
4116
|
// Order and dimension are now positive numbers.
|
|
4077
4117
|
|
|
4078
|
-
|
|
4118
|
+
const
|
|
4079
4119
|
closed = this .getClosed (this ._order .getValue (), this ._knot, this ._weight, this .controlPointNode),
|
|
4080
4120
|
weights = this .getWeights (this .weights, this .controlPointNode .getSize (), this ._weight),
|
|
4081
4121
|
controlPoints = this .getControlPoints (this .controlPoints, closed, this ._order .getValue (), weights, this .controlPointNode);
|
|
4082
4122
|
|
|
4083
4123
|
// Knots
|
|
4084
4124
|
|
|
4085
|
-
|
|
4125
|
+
const
|
|
4086
4126
|
knots = this .getKnots (this .knots, closed, this ._order .getValue (), this .controlPointNode .getSize (), this ._knot),
|
|
4087
4127
|
scale = knots .at (-1) - knots [0];
|
|
4088
4128
|
|
|
4089
4129
|
// Initialize NURBS tessellator
|
|
4090
4130
|
|
|
4091
|
-
|
|
4131
|
+
const degree = this ._order .getValue () - 1;
|
|
4092
4132
|
|
|
4093
|
-
|
|
4133
|
+
const surface = this .surface = (this .surface || nurbs) ({
|
|
4094
4134
|
boundary: ["open"],
|
|
4095
4135
|
degree: [degree],
|
|
4096
4136
|
knots: [knots],
|
|
@@ -4100,7 +4140,7 @@ function (Fields,
|
|
|
4100
4140
|
|
|
4101
4141
|
this .sampleOptions .haveWeights = Boolean (weights);
|
|
4102
4142
|
|
|
4103
|
-
|
|
4143
|
+
const
|
|
4104
4144
|
mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
|
|
4105
4145
|
points = mesh .points,
|
|
4106
4146
|
interpolator = this .interpolator;
|
|
@@ -4108,7 +4148,7 @@ function (Fields,
|
|
|
4108
4148
|
interpolator ._key .length = 0;
|
|
4109
4149
|
interpolator ._keyValue .length = 0;
|
|
4110
4150
|
|
|
4111
|
-
for (
|
|
4151
|
+
for (let i = 0, length = points .length; i < length; i += 3)
|
|
4112
4152
|
{
|
|
4113
4153
|
interpolator ._key .push (knots [0] + i / (length - 3) * scale);
|
|
4114
4154
|
interpolator ._keyValue. push (new Fields .SFVec3f (points [i], points [i + 1], points [i + 2]));
|
|
@@ -4187,18 +4227,6 @@ function (Fields,
|
|
|
4187
4227
|
{
|
|
4188
4228
|
"use strict";
|
|
4189
4229
|
|
|
4190
|
-
function remove (array, first, last, range, rfirst, rlast)
|
|
4191
|
-
{
|
|
4192
|
-
var set = { };
|
|
4193
|
-
|
|
4194
|
-
for (var i = rfirst; i < rlast; ++ i)
|
|
4195
|
-
set [getId (range [i])] = true;
|
|
4196
|
-
|
|
4197
|
-
function compare (value) { return set [getId (value)]; }
|
|
4198
|
-
|
|
4199
|
-
return array .remove (first, last, compare);
|
|
4200
|
-
}
|
|
4201
|
-
|
|
4202
4230
|
function NurbsSet (executionContext)
|
|
4203
4231
|
{
|
|
4204
4232
|
X3DChildNode .call (this, executionContext);
|
|
@@ -4252,49 +4280,53 @@ function (Fields,
|
|
|
4252
4280
|
{
|
|
4253
4281
|
// Add bounding boxes
|
|
4254
4282
|
|
|
4255
|
-
for (
|
|
4256
|
-
|
|
4257
|
-
bbox .add (this .geometryNodes [i] .getBBox ());
|
|
4258
|
-
}
|
|
4283
|
+
for (const geometryNode of this .geometryNodes)
|
|
4284
|
+
bbox .add (geometryNode .getBBox ());
|
|
4259
4285
|
|
|
4260
4286
|
return bbox;
|
|
4261
4287
|
},
|
|
4262
4288
|
set_tessellationScale__: function ()
|
|
4263
4289
|
{
|
|
4264
|
-
|
|
4290
|
+
const tessellationScale = Math .max (0, this ._tessellationScale .getValue ());
|
|
4265
4291
|
|
|
4266
|
-
for (
|
|
4267
|
-
|
|
4292
|
+
for (const geometryNode of this .geometryNodes)
|
|
4293
|
+
geometryNode .setTessellationScale (tessellationScale);
|
|
4268
4294
|
},
|
|
4269
4295
|
set_addGeometry__: function ()
|
|
4270
4296
|
{
|
|
4271
4297
|
this ._addGeometry .setTainted (true);
|
|
4272
4298
|
|
|
4273
4299
|
this ._addGeometry .erase (remove (this ._addGeometry, 0, this ._addGeometry .length,
|
|
4274
|
-
this ._geometry,
|
|
4300
|
+
this ._geometry, 0, this ._geometry .length),
|
|
4275
4301
|
this ._addGeometry .length);
|
|
4276
4302
|
|
|
4277
|
-
for (
|
|
4278
|
-
this ._geometry .push (
|
|
4303
|
+
for (const geometry of this ._addGeometry)
|
|
4304
|
+
this ._geometry .push (geometry);
|
|
4279
4305
|
|
|
4306
|
+
this ._addGeometry .length = 0;
|
|
4280
4307
|
this ._addGeometry .setTainted (false);
|
|
4281
4308
|
},
|
|
4282
4309
|
set_removeGeometry__: function ()
|
|
4283
4310
|
{
|
|
4311
|
+
this ._removeGeometry .setTainted (true);
|
|
4312
|
+
|
|
4284
4313
|
this ._geometry .erase (remove (this ._geometry, 0, this ._geometry .length,
|
|
4285
4314
|
this ._removeGeometry, 0, this ._removeGeometry .length),
|
|
4286
|
-
this .
|
|
4315
|
+
this ._geometry .length);
|
|
4316
|
+
|
|
4317
|
+
this ._removeGeometry .length = 0;
|
|
4318
|
+
this ._removeGeometry .setTainted (false);
|
|
4287
4319
|
},
|
|
4288
4320
|
set_geometry__: function ()
|
|
4289
4321
|
{
|
|
4290
|
-
for (
|
|
4291
|
-
|
|
4322
|
+
for (const geometryNode of this .geometryNodes)
|
|
4323
|
+
geometryNode .setTessellationScale (1);
|
|
4292
4324
|
|
|
4293
4325
|
this .geometryNodes .length = 0;
|
|
4294
4326
|
|
|
4295
|
-
for (
|
|
4327
|
+
for (const node of this ._geometry)
|
|
4296
4328
|
{
|
|
4297
|
-
|
|
4329
|
+
const geometryNode = X3DCast (X3DConstants .X3DNurbsSurfaceGeometryNode, node);
|
|
4298
4330
|
|
|
4299
4331
|
if (geometryNode)
|
|
4300
4332
|
this .geometryNodes .push (geometryNode);
|
|
@@ -4304,6 +4336,18 @@ function (Fields,
|
|
|
4304
4336
|
},
|
|
4305
4337
|
});
|
|
4306
4338
|
|
|
4339
|
+
function remove (array, first, last, range, rfirst, rlast)
|
|
4340
|
+
{
|
|
4341
|
+
const set = new Set ();
|
|
4342
|
+
|
|
4343
|
+
for (let i = rfirst; i < rlast; ++ i)
|
|
4344
|
+
set .add (range [i]);
|
|
4345
|
+
|
|
4346
|
+
function compare (value) { return set .has (value); }
|
|
4347
|
+
|
|
4348
|
+
return array .remove (first, last, compare);
|
|
4349
|
+
}
|
|
4350
|
+
|
|
4307
4351
|
return NurbsSet;
|
|
4308
4352
|
});
|
|
4309
4353
|
|
|
@@ -4528,7 +4572,7 @@ function (Fields,
|
|
|
4528
4572
|
},
|
|
4529
4573
|
set_fraction__: (function ()
|
|
4530
4574
|
{
|
|
4531
|
-
|
|
4575
|
+
const
|
|
4532
4576
|
a = new Vector3 (0, 0, 0),
|
|
4533
4577
|
b = new Vector3 (0, 0, 0),
|
|
4534
4578
|
c = new Vector3 (0, 0, 0),
|
|
@@ -4538,13 +4582,13 @@ function (Fields,
|
|
|
4538
4582
|
|
|
4539
4583
|
return function ()
|
|
4540
4584
|
{
|
|
4541
|
-
|
|
4585
|
+
const
|
|
4542
4586
|
fraction = this ._set_fraction .getValue (),
|
|
4543
4587
|
texCoordsArray = this .geometry .getTexCoords (),
|
|
4544
4588
|
normalArray = this .geometry .getNormals (),
|
|
4545
4589
|
verticesArray = this .geometry .getVertices ();
|
|
4546
4590
|
|
|
4547
|
-
for (
|
|
4591
|
+
for (let i4 = 0, i3 = 0, length = texCoordsArray .length; i4 < length; i4 += 12, i3 += 9)
|
|
4548
4592
|
{
|
|
4549
4593
|
a .set (texCoordsArray [i4 + 0], texCoordsArray [i4 + 1], 0);
|
|
4550
4594
|
b .set (texCoordsArray [i4 + 4], texCoordsArray [i4 + 5], 0);
|
|
@@ -4556,18 +4600,18 @@ function (Fields,
|
|
|
4556
4600
|
|
|
4557
4601
|
if (line .intersectsTriangle (a, b, c, uvt))
|
|
4558
4602
|
{
|
|
4559
|
-
|
|
4603
|
+
const
|
|
4560
4604
|
u = uvt .u,
|
|
4561
4605
|
v = uvt .v,
|
|
4562
4606
|
t = uvt .t;
|
|
4563
4607
|
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4608
|
+
const normal = new Vector3 (t * normalArray [i3 + 0] + u * normalArray [i3 + 3] + v * normalArray [i3 + 6],
|
|
4609
|
+
t * normalArray [i3 + 1] + u * normalArray [i3 + 4] + v * normalArray [i3 + 7],
|
|
4610
|
+
t * normalArray [i3 + 2] + u * normalArray [i3 + 5] + v * normalArray [i3 + 8]);
|
|
4567
4611
|
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
|
|
4612
|
+
const position = new Vector3 (t * verticesArray [i4 + 0] + u * verticesArray [i4 + 4] + v * verticesArray [i4 + 8],
|
|
4613
|
+
t * verticesArray [i4 + 1] + u * verticesArray [i4 + 5] + v * verticesArray [i4 + 9],
|
|
4614
|
+
t * verticesArray [i4 + 2] + u * verticesArray [i4 + 6] + v * verticesArray [i4 + 10]);
|
|
4571
4615
|
|
|
4572
4616
|
this ._normal_changed = normal;
|
|
4573
4617
|
this ._position_changed = position;
|
|
@@ -4630,7 +4674,7 @@ function (Fields,
|
|
|
4630
4674
|
******************************************************************************/
|
|
4631
4675
|
|
|
4632
4676
|
|
|
4633
|
-
define ('x_ite/Components/NURBS/NurbsSweptSurface',[
|
|
4677
|
+
define ('x_ite/Components/NURBS/NurbsSweptSurface',[
|
|
4634
4678
|
"x_ite/Fields",
|
|
4635
4679
|
"x_ite/Base/X3DFieldDefinition",
|
|
4636
4680
|
"x_ite/Base/FieldDefinitionArray",
|
|
@@ -4687,7 +4731,7 @@ function (Fields,
|
|
|
4687
4731
|
this ._crossSectionCurve .addInterest ("set_crossSectionCurve__", this);
|
|
4688
4732
|
this ._trajectoryCurve .addInterest ("set_trajectoryCurve__", this);
|
|
4689
4733
|
|
|
4690
|
-
|
|
4734
|
+
const extrusion = this .extrusion;
|
|
4691
4735
|
|
|
4692
4736
|
extrusion ._beginCap = false;
|
|
4693
4737
|
extrusion ._endCap = false;
|
|
@@ -4732,7 +4776,7 @@ function (Fields,
|
|
|
4732
4776
|
if (! this .trajectoryCurveNode)
|
|
4733
4777
|
return;
|
|
4734
4778
|
|
|
4735
|
-
|
|
4779
|
+
const extrusion = this .extrusion;
|
|
4736
4780
|
|
|
4737
4781
|
extrusion ._crossSection = this .crossSectionCurveNode .tessellate (0);
|
|
4738
4782
|
extrusion ._spine = this .trajectoryCurveNode .tessellate (0);
|
|
@@ -4748,9 +4792,9 @@ function (Fields,
|
|
|
4748
4792
|
|
|
4749
4793
|
if (! this ._ccw .getValue ())
|
|
4750
4794
|
{
|
|
4751
|
-
|
|
4795
|
+
const normals = this .getNormals ();
|
|
4752
4796
|
|
|
4753
|
-
for (
|
|
4797
|
+
for (let i = 0, length = normals .length; i < length; ++ i)
|
|
4754
4798
|
normals [i] = -normals [i];
|
|
4755
4799
|
}
|
|
4756
4800
|
|
|
@@ -4868,7 +4912,7 @@ function (Fields,
|
|
|
4868
4912
|
this ._profileCurve .addInterest ("set_profileCurve__", this);
|
|
4869
4913
|
this ._trajectoryCurve .addInterest ("set_trajectoryCurve__", this);
|
|
4870
4914
|
|
|
4871
|
-
|
|
4915
|
+
const extrusion = this .extrusion;
|
|
4872
4916
|
|
|
4873
4917
|
extrusion ._beginCap = false;
|
|
4874
4918
|
extrusion ._endCap = false;
|
|
@@ -4913,7 +4957,7 @@ function (Fields,
|
|
|
4913
4957
|
if (! this .trajectoryCurveNode)
|
|
4914
4958
|
return;
|
|
4915
4959
|
|
|
4916
|
-
|
|
4960
|
+
const extrusion = this .extrusion;
|
|
4917
4961
|
|
|
4918
4962
|
extrusion ._crossSection = this .profileCurveNode .tessellate (0);
|
|
4919
4963
|
extrusion ._spine = this .trajectoryCurveNode .tessellate (1);
|
|
@@ -4929,9 +4973,9 @@ function (Fields,
|
|
|
4929
4973
|
|
|
4930
4974
|
if (! this ._ccw .getValue ())
|
|
4931
4975
|
{
|
|
4932
|
-
|
|
4976
|
+
const normals = this .getNormals ();
|
|
4933
4977
|
|
|
4934
|
-
for (
|
|
4978
|
+
for (let i = 0, length = normals .length; i < length; ++ i)
|
|
4935
4979
|
normals [i] = -normals [i];
|
|
4936
4980
|
}
|
|
4937
4981
|
|
|
@@ -4992,7 +5036,7 @@ function (Fields,
|
|
|
4992
5036
|
******************************************************************************/
|
|
4993
5037
|
|
|
4994
5038
|
|
|
4995
|
-
define ('x_ite/Components/NURBS/NurbsTextureCoordinate',[
|
|
5039
|
+
define ('x_ite/Components/NURBS/NurbsTextureCoordinate',[
|
|
4996
5040
|
"x_ite/Fields",
|
|
4997
5041
|
"x_ite/Base/X3DFieldDefinition",
|
|
4998
5042
|
"x_ite/Base/FieldDefinitionArray",
|
|
@@ -5050,20 +5094,20 @@ function (Fields,
|
|
|
5050
5094
|
},
|
|
5051
5095
|
getControlPoints: function (texWeights)
|
|
5052
5096
|
{
|
|
5053
|
-
|
|
5097
|
+
const
|
|
5054
5098
|
controlPointArray = this ._controlPoint .getValue (),
|
|
5055
5099
|
controlPoints = this .controlPoints;
|
|
5056
5100
|
|
|
5057
|
-
for (
|
|
5101
|
+
for (let u = 0, uDimension = this ._uDimension .getValue (); u < uDimension; ++ u)
|
|
5058
5102
|
{
|
|
5059
|
-
|
|
5103
|
+
let cp = controlPoints [u];
|
|
5060
5104
|
|
|
5061
5105
|
if (! cp)
|
|
5062
5106
|
cp = controlPoints [u] = [ ];
|
|
5063
5107
|
|
|
5064
|
-
for (
|
|
5108
|
+
for (let v = 0, vDimension = this ._vDimension .getValue (); v < vDimension; ++ v)
|
|
5065
5109
|
{
|
|
5066
|
-
|
|
5110
|
+
const
|
|
5067
5111
|
index = v * uDimension + u,
|
|
5068
5112
|
p = cp [v] || new Vector4 (),
|
|
5069
5113
|
i = index * 2;
|
|
@@ -5212,19 +5256,46 @@ function (Fields,
|
|
|
5212
5256
|
{
|
|
5213
5257
|
X3DNurbsSurfaceGeometryNode .prototype .initialize .call (this);
|
|
5214
5258
|
|
|
5215
|
-
this .
|
|
5259
|
+
this ._addTrimmingContour .addInterest ("set_addTrimmingContour__", this);
|
|
5260
|
+
this ._removeTrimmingContour .addInterest ("set_removeTrimmingContour__", this);
|
|
5261
|
+
this ._trimmingContour .addInterest ("set_trimmingContour__", this);
|
|
5216
5262
|
|
|
5217
5263
|
this .set_trimmingContour__ ();
|
|
5218
5264
|
},
|
|
5265
|
+
set_addTrimmingContour__: function ()
|
|
5266
|
+
{
|
|
5267
|
+
this ._addTrimmingContour .setTainted (true);
|
|
5268
|
+
|
|
5269
|
+
this ._addTrimmingContour .erase (remove (this ._addTrimmingContour, 0, this ._addTrimmingContour .length,
|
|
5270
|
+
this ._trimmingContour, 0, this ._trimmingContour .length),
|
|
5271
|
+
this ._addTrimmingContour .length);
|
|
5272
|
+
|
|
5273
|
+
for (const trimmingContour of this ._addTrimmingContour)
|
|
5274
|
+
this ._trimmingContour .push (trimmingContour);
|
|
5275
|
+
|
|
5276
|
+
this ._addTrimmingContour .length = 0;
|
|
5277
|
+
this ._addTrimmingContour .setTainted (false);
|
|
5278
|
+
},
|
|
5279
|
+
set_removeTrimmingContour__: function ()
|
|
5280
|
+
{
|
|
5281
|
+
this ._removeTrimmingContour .setTainted (true);
|
|
5282
|
+
|
|
5283
|
+
this ._trimmingContour .erase (remove (this ._trimmingContour, 0, this ._trimmingContour .length,
|
|
5284
|
+
this ._removeTrimmingContour, 0, this ._removeTrimmingContour .length),
|
|
5285
|
+
this ._trimmingContour .length);
|
|
5286
|
+
|
|
5287
|
+
this ._removeTrimmingContour .length = 0;
|
|
5288
|
+
this ._removeTrimmingContour .setTainted (false);
|
|
5289
|
+
},
|
|
5219
5290
|
set_trimmingContour__: function ()
|
|
5220
5291
|
{
|
|
5221
|
-
|
|
5292
|
+
const trimmingContourNodes = this .trimmingContourNodes;
|
|
5222
5293
|
|
|
5223
5294
|
trimmingContourNodes .length = 0;
|
|
5224
5295
|
|
|
5225
|
-
for (
|
|
5296
|
+
for (const node of this ._trimmingContour)
|
|
5226
5297
|
{
|
|
5227
|
-
|
|
5298
|
+
const trimmingContourNode = X3DCast (X3DConstants .Contour2D, node);
|
|
5228
5299
|
|
|
5229
5300
|
if (trimmingContourNode)
|
|
5230
5301
|
trimmingContourNodes .push (trimmingContourNode);
|
|
@@ -5232,17 +5303,29 @@ function (Fields,
|
|
|
5232
5303
|
},
|
|
5233
5304
|
getTrimmingContours: function ()
|
|
5234
5305
|
{
|
|
5235
|
-
|
|
5306
|
+
const
|
|
5236
5307
|
trimmingContourNodes = this .trimmingContourNodes,
|
|
5237
5308
|
trimmingContours = [ ];
|
|
5238
5309
|
|
|
5239
|
-
for (
|
|
5240
|
-
|
|
5310
|
+
for (const trimmingContourNode of trimmingContourNodes)
|
|
5311
|
+
trimmingContourNode .addTrimmingContour (trimmingContours);
|
|
5241
5312
|
|
|
5242
5313
|
return trimmingContours;
|
|
5243
5314
|
},
|
|
5244
5315
|
});
|
|
5245
5316
|
|
|
5317
|
+
function remove (array, first, last, range, rfirst, rlast)
|
|
5318
|
+
{
|
|
5319
|
+
const set = new Set ();
|
|
5320
|
+
|
|
5321
|
+
for (let i = rfirst; i < rlast; ++ i)
|
|
5322
|
+
set .add (range [i]);
|
|
5323
|
+
|
|
5324
|
+
function compare (value) { return set .has (value); }
|
|
5325
|
+
|
|
5326
|
+
return array .remove (first, last, compare);
|
|
5327
|
+
}
|
|
5328
|
+
|
|
5246
5329
|
return NurbsTrimmedSurface;
|
|
5247
5330
|
});
|
|
5248
5331
|
|