super-three 0.144.0 → 0.147.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/README.md +1 -1
- package/build/three.cjs +735 -387
- package/build/three.js +735 -387
- package/build/three.min.js +1 -1
- package/build/three.module.js +910 -408
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +50 -67
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +70 -134
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +138 -405
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -54
- package/examples/js/controls/FlyControls.js +29 -55
- package/examples/js/controls/OrbitControls.js +125 -99
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +85 -170
- package/examples/js/csm/CSM.js +4 -39
- package/examples/js/csm/CSMFrustum.js +3 -9
- package/examples/js/csm/CSMHelper.js +24 -4
- package/examples/js/csm/CSMShader.js +2 -6
- package/examples/js/curves/CurveExtras.js +27 -27
- package/examples/js/curves/NURBSCurve.js +4 -16
- package/examples/js/curves/NURBSSurface.js +3 -9
- package/examples/js/curves/NURBSUtils.js +8 -45
- package/examples/js/effects/AnaglyphEffect.js +4 -18
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +26 -30
- package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
- package/examples/js/effects/PeppersGhostEffect.js +12 -39
- package/examples/js/effects/StereoEffect.js +0 -4
- package/examples/js/environments/RoomEnvironment.js +12 -10
- package/examples/js/exporters/ColladaExporter.js +48 -65
- package/examples/js/exporters/DRACOExporter.js +22 -22
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +141 -317
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +42 -33
- package/examples/js/exporters/PLYExporter.js +38 -33
- package/examples/js/exporters/STLExporter.js +5 -7
- package/examples/js/exporters/USDZExporter.js +113 -27
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +11 -6
- package/examples/js/geometries/DecalGeometry.js +53 -20
- package/examples/js/geometries/LightningStrike.js +54 -67
- package/examples/js/geometries/ParametricGeometries.js +8 -7
- package/examples/js/geometries/ParametricGeometry.js +25 -12
- package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
- package/examples/js/geometries/TeapotGeometry.js +54 -50
- package/examples/js/geometries/TextGeometry.js +6 -4
- package/examples/js/helpers/LightProbeHelper.js +1 -2
- package/examples/js/helpers/OctreeHelper.js +22 -20
- package/examples/js/helpers/PositionalAudioHelper.js +8 -6
- package/examples/js/helpers/RectAreaLightHelper.js +6 -7
- package/examples/js/helpers/VertexNormalsHelper.js +15 -13
- package/examples/js/helpers/VertexTangentsHelper.js +15 -9
- package/examples/js/helpers/ViewHelper.js +31 -16
- package/examples/js/interactive/HTMLMesh.js +25 -39
- package/examples/js/interactive/InteractiveGroup.js +9 -14
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +0 -8
- package/examples/js/lights/LightProbeGenerator.js +32 -39
- package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
- package/examples/js/lines/LineGeometry.js +3 -5
- package/examples/js/lines/LineMaterial.js +4 -11
- package/examples/js/lines/LineSegments2.js +40 -89
- package/examples/js/lines/LineSegmentsGeometry.js +7 -28
- package/examples/js/lines/Wireframe.js +2 -7
- package/examples/js/lines/WireframeGeometry2.js +3 -1
- package/examples/js/loaders/3DMLoader.js +58 -155
- package/examples/js/loaders/3MFLoader.js +72 -106
- package/examples/js/loaders/AMFLoader.js +0 -25
- package/examples/js/loaders/BVHLoader.js +44 -43
- package/examples/js/loaders/BasisTextureLoader.js +16 -46
- package/examples/js/loaders/ColladaLoader.js +228 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +29 -66
- package/examples/js/loaders/EXRLoader.js +67 -164
- package/examples/js/loaders/FBXLoader.js +287 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +409 -706
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +178 -289
- package/examples/js/loaders/LUT3dlLoader.js +7 -11
- package/examples/js/loaders/LUTCubeLoader.js +0 -8
- package/examples/js/loaders/LWOLoader.js +59 -124
- package/examples/js/loaders/LogLuvLoader.js +27 -77
- package/examples/js/loaders/LottieLoader.js +4 -4
- package/examples/js/loaders/MD2Loader.js +26 -27
- package/examples/js/loaders/MDDLoader.js +6 -10
- package/examples/js/loaders/MMDLoader.js +180 -189
- package/examples/js/loaders/MTLLoader.js +18 -47
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +50 -65
- package/examples/js/loaders/PCDLoader.js +34 -29
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +62 -48
- package/examples/js/loaders/PRWMLoader.js +11 -22
- package/examples/js/loaders/PVRLoader.js +7 -16
- package/examples/js/loaders/RGBELoader.js +36 -61
- package/examples/js/loaders/RGBMLoader.js +26 -87
- package/examples/js/loaders/STLLoader.js +20 -27
- package/examples/js/loaders/SVGLoader.js +361 -233
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +0 -1
- package/examples/js/loaders/TTFLoader.js +0 -8
- package/examples/js/loaders/TiltLoader.js +14 -15
- package/examples/js/loaders/VOXLoader.js +8 -16
- package/examples/js/loaders/VRMLLoader.js +243 -340
- package/examples/js/loaders/VTKLoader.js +101 -118
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
- package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
- package/examples/js/materials/MeshGouraudMaterial.js +15 -13
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -3
- package/examples/js/math/ConvexHull.js +185 -141
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/math/Lut.js +8 -15
- package/examples/js/math/MeshSurfaceSampler.js +6 -28
- package/examples/js/math/OBB.js +90 -49
- package/examples/js/math/Octree.js +2 -57
- package/examples/js/math/SimplexNoise.js +74 -88
- package/examples/js/misc/ConvexObjectBreaker.js +37 -48
- package/examples/js/misc/GPUComputationRenderer.js +26 -16
- package/examples/js/misc/Gyroscope.js +5 -9
- package/examples/js/misc/MD2Character.js +14 -23
- package/examples/js/misc/MD2CharacterComplex.js +73 -54
- package/examples/js/misc/MorphAnimMesh.js +0 -6
- package/examples/js/misc/MorphBlendMesh.js +3 -30
- package/examples/js/misc/ProgressiveLightMap.js +47 -43
- package/examples/js/misc/RollerCoaster.js +17 -24
- package/examples/js/misc/TubePainter.js +18 -12
- package/examples/js/misc/Volume.js +16 -45
- package/examples/js/misc/VolumeSlice.js +14 -24
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +56 -59
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +2 -14
- package/examples/js/objects/Lensflare.js +47 -38
- package/examples/js/objects/LightningStorm.js +10 -13
- package/examples/js/objects/MarchingCubes.js +80 -59
- package/examples/js/objects/Reflector.js +22 -20
- package/examples/js/objects/ReflectorForSSRPass.js +19 -23
- package/examples/js/objects/Refractor.js +52 -30
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +2 -7
- package/examples/js/objects/Water.js +23 -18
- package/examples/js/objects/Water2.js +20 -19
- package/examples/js/physics/AmmoPhysics.js +23 -20
- package/examples/js/physics/OimoPhysics.js +19 -17
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
- package/examples/js/postprocessing/AfterimagePass.js +19 -12
- package/examples/js/postprocessing/BloomPass.js +38 -17
- package/examples/js/postprocessing/BokehPass.js +29 -12
- package/examples/js/postprocessing/ClearPass.js +1 -6
- package/examples/js/postprocessing/CubeTexturePass.js +12 -9
- package/examples/js/postprocessing/DotScreenPass.js +7 -5
- package/examples/js/postprocessing/EffectComposer.js +25 -32
- package/examples/js/postprocessing/FilmPass.js +7 -5
- package/examples/js/postprocessing/GlitchPass.js +10 -11
- package/examples/js/postprocessing/HalftonePass.js +9 -9
- package/examples/js/postprocessing/LUTPass.js +2 -15
- package/examples/js/postprocessing/MaskPass.js +20 -17
- package/examples/js/postprocessing/OutlinePass.js +45 -36
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
- package/examples/js/postprocessing/SAOPass.js +40 -32
- package/examples/js/postprocessing/SMAAPass.js +34 -17
- package/examples/js/postprocessing/SSAARenderPass.js +14 -14
- package/examples/js/postprocessing/SSAOPass.js +56 -42
- package/examples/js/postprocessing/SSRPass.js +78 -61
- package/examples/js/postprocessing/SavePass.js +14 -6
- package/examples/js/postprocessing/ShaderPass.js +9 -8
- package/examples/js/postprocessing/TAARenderPass.js +11 -9
- package/examples/js/postprocessing/TexturePass.js +7 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
- package/examples/js/renderers/CSS2DRenderer.js +2 -21
- package/examples/js/renderers/CSS3DRenderer.js +3 -24
- package/examples/js/renderers/Projector.js +29 -85
- package/examples/js/renderers/SVGRenderer.js +4 -50
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
- package/examples/js/shaders/AfterimageShader.js +3 -6
- package/examples/js/shaders/BasicShader.js +3 -6
- package/examples/js/shaders/BleachBypassShader.js +3 -6
- package/examples/js/shaders/BlendShader.js +3 -6
- package/examples/js/shaders/BokehShader.js +3 -6
- package/examples/js/shaders/BokehShader2.js +4 -13
- package/examples/js/shaders/BrightnessContrastShader.js +3 -6
- package/examples/js/shaders/ColorCorrectionShader.js +2 -6
- package/examples/js/shaders/ColorifyShader.js +2 -6
- package/examples/js/shaders/ConvolutionShader.js +5 -10
- package/examples/js/shaders/CopyShader.js +3 -6
- package/examples/js/shaders/DOFMipMapShader.js +3 -6
- package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
- package/examples/js/shaders/DigitalGlitch.js +3 -6
- package/examples/js/shaders/DotScreenShader.js +2 -6
- package/examples/js/shaders/FXAAShader.js +1 -3
- package/examples/js/shaders/FilmShader.js +3 -6
- package/examples/js/shaders/FocusShader.js +3 -6
- package/examples/js/shaders/FreiChenShader.js +2 -6
- package/examples/js/shaders/GammaCorrectionShader.js +3 -6
- package/examples/js/shaders/GodRaysShader.js +11 -24
- package/examples/js/shaders/HalftoneShader.js +3 -6
- package/examples/js/shaders/HorizontalBlurShader.js +3 -6
- package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
- package/examples/js/shaders/HueSaturationShader.js +3 -6
- package/examples/js/shaders/KaleidoShader.js +3 -6
- package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
- package/examples/js/shaders/LuminosityShader.js +3 -6
- package/examples/js/shaders/MMDToonShader.js +2 -8
- package/examples/js/shaders/MirrorShader.js +3 -6
- package/examples/js/shaders/NormalMapShader.js +2 -6
- package/examples/js/shaders/RGBShiftShader.js +3 -6
- package/examples/js/shaders/SAOShader.js +2 -6
- package/examples/js/shaders/SMAAShader.js +6 -18
- package/examples/js/shaders/SSAOShader.js +2 -6
- package/examples/js/shaders/SSRShader.js +6 -18
- package/examples/js/shaders/SepiaShader.js +3 -6
- package/examples/js/shaders/SobelOperatorShader.js +2 -6
- package/examples/js/shaders/TechnicolorShader.js +3 -6
- package/examples/js/shaders/ToneMapShader.js +3 -6
- package/examples/js/shaders/ToonShader.js +8 -24
- package/examples/js/shaders/TriangleBlurShader.js +2 -6
- package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
- package/examples/js/shaders/VelocityShader.js +126 -0
- package/examples/js/shaders/VerticalBlurShader.js +3 -6
- package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
- package/examples/js/shaders/VignetteShader.js +3 -6
- package/examples/js/shaders/VolumeShader.js +2 -6
- package/examples/js/shaders/WaterRefractionShader.js +2 -6
- package/examples/js/textures/FlakesTexture.js +0 -1
- package/examples/js/utils/BufferGeometryUtils.js +236 -170
- package/examples/js/utils/CameraUtils.js +5 -20
- package/examples/js/utils/GPUStatsPanel.js +3 -12
- package/examples/js/utils/GeometryCompressionUtils.js +19 -44
- package/examples/js/utils/GeometryUtils.js +13 -18
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +117 -6
- package/examples/js/utils/ShadowMapViewer.js +17 -14
- package/examples/js/utils/SkeletonUtils.js +13 -27
- package/examples/js/utils/UVsDebug.js +20 -12
- package/examples/js/utils/WorkerPool.js +1 -11
- package/examples/jsm/animation/CCDIKSolver.js +27 -3
- package/examples/jsm/animation/MMDPhysics.js +25 -0
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/FirstPersonControls.js +20 -20
- package/examples/jsm/controls/FlyControls.js +16 -17
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/controls/TrackballControls.js +14 -2
- package/examples/jsm/controls/TransformControls.js +1 -1
- package/examples/jsm/csm/CSM.js +1 -0
- package/examples/jsm/csm/CSMHelper.js +30 -0
- package/examples/jsm/exporters/GLTFExporter.js +0 -79
- package/examples/jsm/exporters/USDZExporter.js +93 -1
- package/examples/jsm/helpers/OctreeHelper.js +22 -8
- package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
- package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
- package/examples/jsm/helpers/ViewHelper.js +24 -0
- package/examples/jsm/interactive/HTMLMesh.js +5 -6
- package/examples/jsm/interactive/InteractiveGroup.js +4 -2
- package/examples/jsm/libs/flow.module.js +610 -160
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/lines/LineSegments2.js +4 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +18 -2
- package/examples/jsm/loaders/GLTFLoader.js +269 -428
- package/examples/jsm/loaders/KTX2Loader.js +68 -29
- package/examples/jsm/loaders/LDrawLoader.js +14 -13
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/PCDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +68 -16
- package/examples/jsm/loaders/SVGLoader.js +227 -14
- package/examples/jsm/loaders/USDZLoader.js +351 -111
- package/examples/jsm/loaders/VRMLLoader.js +13 -1
- package/examples/jsm/math/ConvexHull.js +4 -4
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +91 -12
- package/examples/jsm/node-editor/core/BaseNode.js +10 -3
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
- package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
- package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
- package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
- package/examples/jsm/nodes/Nodes.js +30 -3
- package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
- package/examples/jsm/nodes/core/AttributeNode.js +31 -8
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeVarying.js +7 -4
- package/examples/jsm/nodes/core/VaryingNode.js +6 -4
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
- package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
- package/examples/jsm/nodes/materials/Materials.js +9 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
- package/examples/jsm/nodes/materialx/{Disclaimer.md → DISCLAIMER.md} +1 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -5
- package/examples/jsm/nodes/math/OperatorNode.js +16 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
- package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +8 -2
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +34 -0
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +21 -1
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
- package/examples/jsm/postprocessing/BloomPass.js +22 -3
- package/examples/jsm/postprocessing/BokehPass.js +18 -4
- package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
- package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
- package/examples/jsm/postprocessing/EffectComposer.js +9 -0
- package/examples/jsm/postprocessing/FilmPass.js +8 -0
- package/examples/jsm/postprocessing/GlitchPass.js +13 -1
- package/examples/jsm/postprocessing/HalftonePass.js +8 -0
- package/examples/jsm/postprocessing/OutlinePass.js +21 -1
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
- package/examples/jsm/postprocessing/SAOPass.js +20 -0
- package/examples/jsm/postprocessing/SMAAPass.js +16 -0
- package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
- package/examples/jsm/postprocessing/SavePass.js +17 -1
- package/examples/jsm/postprocessing/ShaderPass.js +8 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
- package/examples/jsm/postprocessing/TexturePass.js +8 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +56 -35
- package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +41 -9
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
- package/package.json +13 -13
- package/src/Three.js +1 -0
- package/src/animation/PropertyBinding.js +7 -0
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -14
- package/src/constants.js +1 -1
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/core/InterleavedBufferAttribute.js +4 -4
- package/src/extras/Earcut.js +67 -67
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +1 -1
- package/src/helpers/ArrowHelper.js +9 -0
- package/src/helpers/Box3Helper.js +7 -0
- package/src/helpers/BoxHelper.js +7 -1
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/GridHelper.js +7 -0
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PlaneHelper.js +9 -0
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/PolarGridHelper.js +7 -0
- package/src/helpers/SkeletonHelper.js +7 -0
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/LightShadow.js +1 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +2 -2
- package/src/loaders/FileLoader.js +4 -1
- package/src/loaders/ObjectLoader.js +5 -1
- package/src/materials/Material.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +1 -1
- package/src/math/Color.js +5 -5
- package/src/math/Matrix3.js +53 -18
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +36 -21
- package/src/objects/InstancedMesh.js +7 -0
- package/src/objects/LOD.js +25 -6
- package/src/renderers/WebGL3DRenderTarget.js +1 -1
- package/src/renderers/WebGLArrayRenderTarget.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
- package/src/renderers/WebGLRenderTarget.js +1 -1
- package/src/renderers/WebGLRenderer.js +36 -62
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk.js +3 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
- package/src/renderers/shaders/ShaderLib.js +20 -6
- package/src/renderers/shaders/UniformsLib.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +15 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +15 -7
- package/src/renderers/webgl/WebGLLights.js +0 -4
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -1
- package/src/renderers/webgl/WebGLState.js +78 -41
- package/src/renderers/webgl/WebGLTextures.js +94 -39
- package/src/renderers/webgl/WebGLUniforms.js +152 -24
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +70 -2
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/src/textures/Texture.js +2 -1
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/shaders/PixelShader.js +0 -44
|
@@ -31,6 +31,16 @@ import {
|
|
|
31
31
|
* diffuse_blue: 'blue'
|
|
32
32
|
* } );
|
|
33
33
|
*
|
|
34
|
+
* Custom properties outside of the defaults for position, uv, normal
|
|
35
|
+
* and color attributes can be added using the setCustomPropertyMapping method.
|
|
36
|
+
* For example, the following maps the element properties “custom_property_a”
|
|
37
|
+
* and “custom_property_b” to an attribute “customAttribute” with an item size of 2.
|
|
38
|
+
* Attribute item sizes are set from the number of element properties in the property array.
|
|
39
|
+
*
|
|
40
|
+
* loader.setCustomPropertyMapping( {
|
|
41
|
+
* customAttribute: ['custom_property_a', 'custom_property_b'],
|
|
42
|
+
* } );
|
|
43
|
+
*
|
|
34
44
|
*/
|
|
35
45
|
|
|
36
46
|
const _color = new Color();
|
|
@@ -42,6 +52,7 @@ class PLYLoader extends Loader {
|
|
|
42
52
|
super( manager );
|
|
43
53
|
|
|
44
54
|
this.propertyNameMapping = {};
|
|
55
|
+
this.customPropertyMapping = {};
|
|
45
56
|
|
|
46
57
|
}
|
|
47
58
|
|
|
@@ -86,6 +97,12 @@ class PLYLoader extends Loader {
|
|
|
86
97
|
|
|
87
98
|
}
|
|
88
99
|
|
|
100
|
+
setCustomPropertyNameMapping( mapping ) {
|
|
101
|
+
|
|
102
|
+
this.customPropertyMapping = mapping;
|
|
103
|
+
|
|
104
|
+
}
|
|
105
|
+
|
|
89
106
|
parse( data ) {
|
|
90
107
|
|
|
91
108
|
function parseHeader( data ) {
|
|
@@ -260,18 +277,32 @@ class PLYLoader extends Loader {
|
|
|
260
277
|
|
|
261
278
|
}
|
|
262
279
|
|
|
280
|
+
function createBuffer() {
|
|
281
|
+
|
|
282
|
+
const buffer = {
|
|
283
|
+
indices: [],
|
|
284
|
+
vertices: [],
|
|
285
|
+
normals: [],
|
|
286
|
+
uvs: [],
|
|
287
|
+
faceVertexUvs: [],
|
|
288
|
+
colors: [],
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
|
|
292
|
+
|
|
293
|
+
buffer[ customProperty ] = [];
|
|
294
|
+
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
return buffer;
|
|
298
|
+
|
|
299
|
+
}
|
|
300
|
+
|
|
263
301
|
function parseASCII( data, header ) {
|
|
264
302
|
|
|
265
303
|
// PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)
|
|
266
304
|
|
|
267
|
-
const buffer =
|
|
268
|
-
indices: [],
|
|
269
|
-
vertices: [],
|
|
270
|
-
normals: [],
|
|
271
|
-
uvs: [],
|
|
272
|
-
faceVertexUvs: [],
|
|
273
|
-
colors: []
|
|
274
|
-
};
|
|
305
|
+
const buffer = createBuffer();
|
|
275
306
|
|
|
276
307
|
let result;
|
|
277
308
|
|
|
@@ -357,6 +388,24 @@ class PLYLoader extends Loader {
|
|
|
357
388
|
|
|
358
389
|
}
|
|
359
390
|
|
|
391
|
+
// custom buffer data
|
|
392
|
+
|
|
393
|
+
for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
|
|
394
|
+
|
|
395
|
+
if ( buffer[ customProperty ].length > 0 ) {
|
|
396
|
+
|
|
397
|
+
geometry.setAttribute(
|
|
398
|
+
customProperty,
|
|
399
|
+
new Float32BufferAttribute(
|
|
400
|
+
buffer[ customProperty ],
|
|
401
|
+
scope.customPropertyMapping[ customProperty ].length
|
|
402
|
+
)
|
|
403
|
+
);
|
|
404
|
+
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
}
|
|
408
|
+
|
|
360
409
|
geometry.computeBoundingSphere();
|
|
361
410
|
|
|
362
411
|
return geometry;
|
|
@@ -419,6 +468,16 @@ class PLYLoader extends Loader {
|
|
|
419
468
|
|
|
420
469
|
}
|
|
421
470
|
|
|
471
|
+
for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
|
|
472
|
+
|
|
473
|
+
for ( const elementProperty of scope.customPropertyMapping[ customProperty ] ) {
|
|
474
|
+
|
|
475
|
+
buffer[ customProperty ].push( element[ elementProperty ] );
|
|
476
|
+
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
}
|
|
480
|
+
|
|
422
481
|
} else if ( elementName === 'face' ) {
|
|
423
482
|
|
|
424
483
|
const vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338
|
|
@@ -506,14 +565,7 @@ class PLYLoader extends Loader {
|
|
|
506
565
|
|
|
507
566
|
function parseBinary( data, header ) {
|
|
508
567
|
|
|
509
|
-
const buffer =
|
|
510
|
-
indices: [],
|
|
511
|
-
vertices: [],
|
|
512
|
-
normals: [],
|
|
513
|
-
uvs: [],
|
|
514
|
-
faceVertexUvs: [],
|
|
515
|
-
colors: []
|
|
516
|
-
};
|
|
568
|
+
const buffer = createBuffer();
|
|
517
569
|
|
|
518
570
|
const little_endian = ( header.format === 'binary_little_endian' );
|
|
519
571
|
const body = new DataView( data, header.headerLength );
|
|
@@ -1482,7 +1482,7 @@ class SVGLoader extends Loader {
|
|
|
1482
1482
|
let cy = 0;
|
|
1483
1483
|
|
|
1484
1484
|
// Angle
|
|
1485
|
-
angle =
|
|
1485
|
+
angle = array[ 0 ] * Math.PI / 180;
|
|
1486
1486
|
|
|
1487
1487
|
if ( array.length >= 3 ) {
|
|
1488
1488
|
|
|
@@ -1493,10 +1493,10 @@ class SVGLoader extends Loader {
|
|
|
1493
1493
|
}
|
|
1494
1494
|
|
|
1495
1495
|
// Rotate around center (cx, cy)
|
|
1496
|
-
tempTransform1.
|
|
1497
|
-
tempTransform2.
|
|
1496
|
+
tempTransform1.makeTranslation( - cx, - cy );
|
|
1497
|
+
tempTransform2.makeRotation( angle );
|
|
1498
1498
|
tempTransform3.multiplyMatrices( tempTransform2, tempTransform1 );
|
|
1499
|
-
tempTransform1.
|
|
1499
|
+
tempTransform1.makeTranslation( cx, cy );
|
|
1500
1500
|
currentTransform.multiplyMatrices( tempTransform1, tempTransform3 );
|
|
1501
1501
|
|
|
1502
1502
|
}
|
|
@@ -1588,7 +1588,120 @@ class SVGLoader extends Loader {
|
|
|
1588
1588
|
|
|
1589
1589
|
}
|
|
1590
1590
|
|
|
1591
|
-
|
|
1591
|
+
function transfEllipseGeneric( curve ) {
|
|
1592
|
+
|
|
1593
|
+
// For math description see:
|
|
1594
|
+
// https://math.stackexchange.com/questions/4544164
|
|
1595
|
+
|
|
1596
|
+
const a = curve.xRadius;
|
|
1597
|
+
const b = curve.yRadius;
|
|
1598
|
+
|
|
1599
|
+
const cosTheta = Math.cos( curve.aRotation );
|
|
1600
|
+
const sinTheta = Math.sin( curve.aRotation );
|
|
1601
|
+
|
|
1602
|
+
const v1 = new Vector3( a * cosTheta, a * sinTheta, 0 );
|
|
1603
|
+
const v2 = new Vector3( -b * sinTheta, b * cosTheta, 0 );
|
|
1604
|
+
|
|
1605
|
+
const f1 = v1.applyMatrix3( m );
|
|
1606
|
+
const f2 = v2.applyMatrix3( m );
|
|
1607
|
+
|
|
1608
|
+
const mF = tempTransform0.set(
|
|
1609
|
+
f1.x, f2.x, 0,
|
|
1610
|
+
f1.y, f2.y, 0,
|
|
1611
|
+
0, 0, 1,
|
|
1612
|
+
);
|
|
1613
|
+
|
|
1614
|
+
const mFInv = tempTransform1.copy( mF ).invert();
|
|
1615
|
+
const mFInvT = tempTransform2.copy( mFInv ).transpose();
|
|
1616
|
+
const mQ = mFInvT.multiply( mFInv );
|
|
1617
|
+
const mQe = mQ.elements;
|
|
1618
|
+
|
|
1619
|
+
const ed = eigenDecomposition( mQe[0], mQe[1], mQe[4] );
|
|
1620
|
+
const rt1sqrt = Math.sqrt( ed.rt1 );
|
|
1621
|
+
const rt2sqrt = Math.sqrt( ed.rt2 );
|
|
1622
|
+
|
|
1623
|
+
curve.xRadius = 1 / rt1sqrt;
|
|
1624
|
+
curve.yRadius = 1 / rt2sqrt;
|
|
1625
|
+
curve.aRotation = Math.atan2( ed.sn, ed.cs );
|
|
1626
|
+
|
|
1627
|
+
const isFullEllipse =
|
|
1628
|
+
( curve.aEndAngle - curve.aStartAngle ) % ( 2 * Math.PI ) < Number.EPSILON;
|
|
1629
|
+
|
|
1630
|
+
// Do not touch angles of a full ellipse because after transformation they
|
|
1631
|
+
// would converge to a sinle value effectively removing the whole curve
|
|
1632
|
+
|
|
1633
|
+
if ( !isFullEllipse ) {
|
|
1634
|
+
|
|
1635
|
+
const mDsqrt = tempTransform1.set(
|
|
1636
|
+
rt1sqrt, 0, 0,
|
|
1637
|
+
0, rt2sqrt, 0,
|
|
1638
|
+
0, 0, 1,
|
|
1639
|
+
);
|
|
1640
|
+
|
|
1641
|
+
const mRT = tempTransform2.set(
|
|
1642
|
+
ed.cs, ed.sn, 0,
|
|
1643
|
+
-ed.sn, ed.cs, 0,
|
|
1644
|
+
0, 0, 1,
|
|
1645
|
+
);
|
|
1646
|
+
|
|
1647
|
+
const mDRF = mDsqrt.multiply( mRT ).multiply( mF );
|
|
1648
|
+
|
|
1649
|
+
const transformAngle = phi => {
|
|
1650
|
+
|
|
1651
|
+
const { x: cosR, y: sinR } =
|
|
1652
|
+
new Vector3( Math.cos( phi ), Math.sin( phi ), 0 ).applyMatrix3( mDRF );
|
|
1653
|
+
|
|
1654
|
+
return Math.atan2( sinR, cosR );
|
|
1655
|
+
|
|
1656
|
+
}
|
|
1657
|
+
|
|
1658
|
+
curve.aStartAngle = transformAngle( curve.aStartAngle );
|
|
1659
|
+
curve.aEndAngle = transformAngle( curve.aEndAngle );
|
|
1660
|
+
|
|
1661
|
+
if ( isTransformFlipped( m ) ) {
|
|
1662
|
+
|
|
1663
|
+
curve.aClockwise = !curve.aClockwise;
|
|
1664
|
+
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
}
|
|
1670
|
+
|
|
1671
|
+
function transfEllipseNoSkew( curve ) {
|
|
1672
|
+
|
|
1673
|
+
// Faster shortcut if no skew is applied
|
|
1674
|
+
// (e.g, a euclidean transform of a group containing the ellipse)
|
|
1675
|
+
|
|
1676
|
+
const sx = getTransformScaleX( m );
|
|
1677
|
+
const sy = getTransformScaleY( m );
|
|
1678
|
+
|
|
1679
|
+
curve.xRadius *= sx;
|
|
1680
|
+
curve.yRadius *= sy;
|
|
1681
|
+
|
|
1682
|
+
// Extract rotation angle from the matrix of form:
|
|
1683
|
+
//
|
|
1684
|
+
// | cosθ sx -sinθ sy |
|
|
1685
|
+
// | sinθ sx cosθ sy |
|
|
1686
|
+
//
|
|
1687
|
+
// Remembering that tanθ = sinθ / cosθ; and that
|
|
1688
|
+
// `sx`, `sy`, or both might be zero.
|
|
1689
|
+
const theta =
|
|
1690
|
+
sx > Number.EPSILON
|
|
1691
|
+
? Math.atan2( m.elements[ 1 ], m.elements[ 0 ] )
|
|
1692
|
+
: Math.atan2( - m.elements[ 3 ], m.elements[ 4 ] );
|
|
1693
|
+
|
|
1694
|
+
curve.aRotation += theta;
|
|
1695
|
+
|
|
1696
|
+
if ( isTransformFlipped( m ) ) {
|
|
1697
|
+
|
|
1698
|
+
curve.aStartAngle *= -1;
|
|
1699
|
+
curve.aEndAngle *= -1;
|
|
1700
|
+
curve.aClockwise = !curve.aClockwise;
|
|
1701
|
+
|
|
1702
|
+
}
|
|
1703
|
+
|
|
1704
|
+
}
|
|
1592
1705
|
|
|
1593
1706
|
const subPaths = path.subPaths;
|
|
1594
1707
|
|
|
@@ -1621,19 +1734,24 @@ class SVGLoader extends Loader {
|
|
|
1621
1734
|
|
|
1622
1735
|
} else if ( curve.isEllipseCurve ) {
|
|
1623
1736
|
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
console.warn( 'SVGLoader: Elliptic arc or ellipse rotation or skewing is not implemented.' );
|
|
1627
|
-
|
|
1628
|
-
}
|
|
1737
|
+
// Transform ellipse center point
|
|
1629
1738
|
|
|
1630
1739
|
tempV2.set( curve.aX, curve.aY );
|
|
1631
1740
|
transfVec2( tempV2 );
|
|
1632
1741
|
curve.aX = tempV2.x;
|
|
1633
1742
|
curve.aY = tempV2.y;
|
|
1634
1743
|
|
|
1635
|
-
|
|
1636
|
-
|
|
1744
|
+
// Transform ellipse shape parameters
|
|
1745
|
+
|
|
1746
|
+
if ( isTransformSkewed( m ) ) {
|
|
1747
|
+
|
|
1748
|
+
transfEllipseGeneric( curve );
|
|
1749
|
+
|
|
1750
|
+
} else {
|
|
1751
|
+
|
|
1752
|
+
transfEllipseNoSkew( curve );
|
|
1753
|
+
|
|
1754
|
+
}
|
|
1637
1755
|
|
|
1638
1756
|
}
|
|
1639
1757
|
|
|
@@ -1643,9 +1761,25 @@ class SVGLoader extends Loader {
|
|
|
1643
1761
|
|
|
1644
1762
|
}
|
|
1645
1763
|
|
|
1646
|
-
function
|
|
1764
|
+
function isTransformFlipped( m ) {
|
|
1765
|
+
|
|
1766
|
+
const te = m.elements;
|
|
1767
|
+
return te[ 0 ] * te[ 4 ] - te[ 1 ] * te[ 3 ] < 0;
|
|
1768
|
+
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
function isTransformSkewed( m ) {
|
|
1772
|
+
|
|
1773
|
+
const te = m.elements;
|
|
1774
|
+
const basisDot = te[ 0 ] * te[ 3 ] + te[ 1 ] * te[ 4 ];
|
|
1775
|
+
|
|
1776
|
+
// Shortcut for trivial rotations and transformations
|
|
1777
|
+
if ( basisDot === 0 ) return false;
|
|
1778
|
+
|
|
1779
|
+
const sx = getTransformScaleX( m );
|
|
1780
|
+
const sy = getTransformScaleY( m );
|
|
1647
1781
|
|
|
1648
|
-
return
|
|
1782
|
+
return Math.abs( basisDot / ( sx * sy ) ) > Number.EPSILON;
|
|
1649
1783
|
|
|
1650
1784
|
}
|
|
1651
1785
|
|
|
@@ -1663,6 +1797,85 @@ class SVGLoader extends Loader {
|
|
|
1663
1797
|
|
|
1664
1798
|
}
|
|
1665
1799
|
|
|
1800
|
+
// Calculates the eigensystem of a real symmetric 2x2 matrix
|
|
1801
|
+
// [ A B ]
|
|
1802
|
+
// [ B C ]
|
|
1803
|
+
// in the form
|
|
1804
|
+
// [ A B ] = [ cs -sn ] [ rt1 0 ] [ cs sn ]
|
|
1805
|
+
// [ B C ] [ sn cs ] [ 0 rt2 ] [ -sn cs ]
|
|
1806
|
+
// where rt1 >= rt2.
|
|
1807
|
+
//
|
|
1808
|
+
// Adapted from: https://www.mpi-hd.mpg.de/personalhomes/globes/3x3/index.html
|
|
1809
|
+
// -> Algorithms for real symmetric matrices -> Analytical (2x2 symmetric)
|
|
1810
|
+
function eigenDecomposition( A, B, C ) {
|
|
1811
|
+
|
|
1812
|
+
let rt1, rt2, cs, sn, t;
|
|
1813
|
+
const sm = A + C;
|
|
1814
|
+
const df = A - C;
|
|
1815
|
+
const rt = Math.sqrt( df * df + 4 * B * B );
|
|
1816
|
+
|
|
1817
|
+
if ( sm > 0 ) {
|
|
1818
|
+
|
|
1819
|
+
rt1 = 0.5 * ( sm + rt );
|
|
1820
|
+
t = 1 / rt1;
|
|
1821
|
+
rt2 = A * t * C - B * t * B;
|
|
1822
|
+
|
|
1823
|
+
} else if ( sm < 0 ) {
|
|
1824
|
+
|
|
1825
|
+
rt2 = 0.5 * ( sm - rt );
|
|
1826
|
+
|
|
1827
|
+
} else {
|
|
1828
|
+
|
|
1829
|
+
// This case needs to be treated separately to avoid div by 0
|
|
1830
|
+
|
|
1831
|
+
rt1 = 0.5 * rt;
|
|
1832
|
+
rt2 = -0.5 * rt;
|
|
1833
|
+
|
|
1834
|
+
}
|
|
1835
|
+
|
|
1836
|
+
// Calculate eigenvectors
|
|
1837
|
+
|
|
1838
|
+
if ( df > 0 ) {
|
|
1839
|
+
|
|
1840
|
+
cs = df + rt;
|
|
1841
|
+
|
|
1842
|
+
} else {
|
|
1843
|
+
|
|
1844
|
+
cs = df - rt;
|
|
1845
|
+
|
|
1846
|
+
}
|
|
1847
|
+
|
|
1848
|
+
if ( Math.abs( cs ) > 2 * Math.abs( B ) ) {
|
|
1849
|
+
|
|
1850
|
+
t = -2 * B / cs;
|
|
1851
|
+
sn = 1 / Math.sqrt( 1 + t * t );
|
|
1852
|
+
cs = t * sn;
|
|
1853
|
+
|
|
1854
|
+
} else if ( Math.abs( B ) === 0 ) {
|
|
1855
|
+
|
|
1856
|
+
cs = 1;
|
|
1857
|
+
sn = 0;
|
|
1858
|
+
|
|
1859
|
+
} else {
|
|
1860
|
+
|
|
1861
|
+
t = -0.5 * cs / B;
|
|
1862
|
+
cs = 1 / Math.sqrt( 1 + t * t );
|
|
1863
|
+
sn = t * cs;
|
|
1864
|
+
|
|
1865
|
+
}
|
|
1866
|
+
|
|
1867
|
+
if ( df > 0 ) {
|
|
1868
|
+
|
|
1869
|
+
t = cs;
|
|
1870
|
+
cs = -sn;
|
|
1871
|
+
sn = t;
|
|
1872
|
+
|
|
1873
|
+
}
|
|
1874
|
+
|
|
1875
|
+
return { rt1, rt2, cs, sn };
|
|
1876
|
+
|
|
1877
|
+
}
|
|
1878
|
+
|
|
1666
1879
|
//
|
|
1667
1880
|
|
|
1668
1881
|
const paths = [];
|