@cesium/engine 24.0.0 → 26.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/Build/Workers/{chunk-6WLHJFD3.js → chunk-3VFEWOBI.js} +59 -32
- package/Build/Workers/{chunk-UQU4RXLT.js → chunk-424RNO3D.js} +50 -45
- package/Build/Workers/chunk-4MGMYHOO.js +147 -0
- package/Build/Workers/{chunk-AMIHNSST.js → chunk-4S7IE3LB.js} +2 -2
- package/Build/Workers/{chunk-J6AW5YHS.js → chunk-52JDLOEM.js} +14 -14
- package/Build/Workers/{chunk-6RMS4S72.js → chunk-54I6Y66F.js} +6 -6
- package/Build/Workers/{chunk-C6P4IG5P.js → chunk-6YEE6JDR.js} +6 -6
- package/Build/Workers/{chunk-72VYSVEW.js → chunk-7J2HKPRH.js} +11 -10
- package/Build/Workers/{chunk-7O5XJTVE.js → chunk-7WM2PX4V.js} +5 -5
- package/Build/Workers/{chunk-5A2SW66E.js → chunk-ACXQXN46.js} +16 -16
- package/Build/Workers/{chunk-VLDEUTOP.js → chunk-AYKR4VBR.js} +2 -2
- package/Build/Workers/{chunk-YQFTYQMZ.js → chunk-C6J67V5A.js} +3 -2
- package/Build/Workers/{chunk-D4EJ2NXG.js → chunk-C6KNZ7T4.js} +17 -17
- package/Build/Workers/{chunk-7MDYBRYJ.js → chunk-CFQP6LYM.js} +4 -4
- package/Build/Workers/{chunk-YAOZMOFL.js → chunk-CXOYE2WM.js} +5 -5
- package/Build/Workers/{chunk-B6SCUUFP.js → chunk-CZEYZU4N.js} +10 -10
- package/Build/Workers/{chunk-NPF7SSHZ.js → chunk-DBOEKL43.js} +7 -7
- package/Build/Workers/{chunk-44EMEGKW.js → chunk-DDWSZVMY.js} +5 -5
- package/Build/Workers/{chunk-7X322WP2.js → chunk-DOBXCNC3.js} +13 -13
- package/Build/Workers/{chunk-JCI63T3K.js → chunk-E7VQ76KE.js} +6 -6
- package/Build/Workers/{chunk-7TYLCBGK.js → chunk-EBSIOBXY.js} +12 -10
- package/Build/Workers/{chunk-GQUNK2XC.js → chunk-EF2QYXGA.js} +14 -14
- package/Build/Workers/{chunk-BJD6QGXZ.js → chunk-EPYXRCDB.js} +12 -12
- package/Build/Workers/{chunk-63SIWPLS.js → chunk-F6QDY6HU.js} +13 -13
- package/Build/Workers/{chunk-XY6HMDGI.js → chunk-FRQZECAO.js} +5 -5
- package/Build/Workers/{chunk-VMVOUQ5J.js → chunk-G7PXZRVF.js} +7 -7
- package/Build/Workers/{chunk-N65BAKSH.js → chunk-INUEEEQA.js} +8 -8
- package/Build/Workers/{chunk-7QRFIKWQ.js → chunk-IRBKFCEJ.js} +2 -2
- package/Build/Workers/{chunk-UIGVOKKI.js → chunk-IYOUHCZB.js} +3 -2
- package/Build/Workers/{chunk-5GXYJQ2K.js → chunk-J6BWOHUF.js} +3 -3
- package/Build/Workers/{chunk-A47HVBC5.js → chunk-KFSTQKNM.js} +7 -7
- package/Build/Workers/{chunk-EV3VGO6Y.js → chunk-KKOSKAZB.js} +17 -17
- package/Build/Workers/{chunk-6MPGQEHA.js → chunk-KSSWJIZW.js} +2 -2
- package/Build/Workers/{chunk-DHKPFLSJ.js → chunk-M3B5JKSM.js} +3 -2
- package/Build/Workers/chunk-MPZHGZU6.js +2342 -0
- package/Build/Workers/{chunk-YJZGW74L.js → chunk-MYP774IS.js} +2213 -1349
- package/Build/Workers/{chunk-LIB2H534.js → chunk-O3EA5HS7.js} +12 -11
- package/Build/Workers/{chunk-ILMFADZA.js → chunk-P3CK7MCY.js} +27 -5
- package/Build/Workers/chunk-Q3PY526V.js +3201 -0
- package/Build/Workers/chunk-QN67VG36.js +973 -0
- package/Build/Workers/{chunk-XJRBB253.js → chunk-QRWGUWI6.js} +11 -11
- package/Build/Workers/{chunk-AF3MU2RL.js → chunk-S4MCOY6I.js} +7 -6
- package/Build/Workers/{chunk-Y7HNNPNK.js → chunk-SMQZZOW6.js} +10 -10
- package/Build/Workers/{chunk-PVV64VFW.js → chunk-TKKIREQ6.js} +3 -2
- package/Build/Workers/{chunk-MKM27KGV.js → chunk-U3ZA64U7.js} +2 -2
- package/Build/Workers/{chunk-2N4KDHS3.js → chunk-UA25D5MX.js} +12 -11
- package/Build/Workers/{chunk-RQNJD3O4.js → chunk-UOOIQ3KX.js} +12 -12
- package/Build/Workers/{chunk-GOQBUCXH.js → chunk-V7VQKN6N.js} +709 -431
- package/Build/Workers/{chunk-LXMCPFFS.js → chunk-VQYETPWC.js} +4 -4
- package/Build/Workers/{chunk-NKT5K3K3.js → chunk-VWV2IJRB.js} +13 -12
- package/Build/Workers/chunk-XZMBNNDX.js +1287 -0
- package/Build/Workers/{chunk-ISY4EZCA.js → chunk-Y57HREW5.js} +4 -4
- package/Build/Workers/{chunk-EDXL4W76.js → chunk-Y5BF6AFU.js} +2 -2
- package/Build/Workers/{chunk-Q3C6VQH6.js → chunk-YLY7NKAB.js} +4 -4
- package/Build/Workers/{chunk-4TIG36AW.js → chunk-ZK3CF7ZD.js} +12 -12
- package/Build/Workers/{chunk-AJLTU6PF.js → chunk-ZP7JMQV4.js} +4 -1
- package/Build/Workers/{chunk-HXJMS2ZI.js → chunk-ZZ46LWL6.js} +1 -1
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +175 -118
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
- package/Build/Workers/createPolylineGeometry.js +25 -25
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
- package/Build/Workers/createSimplePolylineGeometry.js +23 -23
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +24 -23
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +23 -23
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
- package/Build/Workers/transcodeKTX2.js +12 -9
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/ArcType.js +6 -1
- package/Source/Core/ArticulationStageType.js +5 -1
- package/Source/Core/AssociativeArray.js +100 -94
- package/Source/Core/BoundingSphere.js +1296 -1300
- package/Source/Core/Cartesian2.js +1 -1
- package/Source/Core/Cartesian3.js +2 -3
- package/Source/Core/Cartesian4.js +1 -1
- package/Source/Core/Cartographic.js +257 -249
- package/Source/Core/ClockRange.js +6 -1
- package/Source/Core/ClockStep.js +6 -1
- package/Source/Core/Color.js +844 -835
- package/Source/Core/ComponentDatatype.js +39 -1
- package/Source/Core/CornerType.js +6 -1
- package/Source/Core/Credit.js +121 -124
- package/Source/Core/Ellipsoid.js +637 -660
- package/Source/Core/ExtrapolationType.js +6 -1
- package/Source/Core/GeocodeType.js +6 -1
- package/Source/Core/GeographicProjection.js +74 -74
- package/Source/Core/GeographicTilingScheme.js +179 -198
- package/Source/Core/GeometryOffsetAttribute.js +7 -1
- package/Source/Core/GeometryType.js +7 -1
- package/Source/Core/HeightmapEncoding.js +6 -1
- package/Source/Core/Iau2006XysData.js +24 -13
- package/Source/Core/IndexDatatype.js +3 -1
- package/Source/Core/InterpolationType.js +5 -1
- package/Source/Core/Intersect.js +6 -1
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonGeocodeProviderType.js +5 -1
- package/Source/Core/JulianDate.js +850 -848
- package/Source/Core/KeyboardEventModifier.js +6 -1
- package/Source/Core/MapProjection.js +40 -44
- package/Source/Core/Matrix2.js +906 -893
- package/Source/Core/Matrix3.js +1643 -1575
- package/Source/Core/Matrix4.js +2903 -2872
- package/Source/Core/PixelFormat.js +3 -1
- package/Source/Core/PrimitiveType.js +11 -1
- package/Source/Core/Ray.js +62 -60
- package/Source/Core/Rectangle.js +913 -904
- package/Source/Core/ReferenceFrame.js +6 -1
- package/Source/Core/RequestScheduler.js +8 -3
- package/Source/Core/RequestState.js +6 -1
- package/Source/Core/RequestType.js +6 -1
- package/Source/Core/Resource.js +1 -1
- package/Source/Core/ScreenSpaceEventHandler.js +51 -41
- package/Source/Core/ScreenSpaceEventType.js +6 -1
- package/Source/Core/TerrainQuantization.js +6 -1
- package/Source/Core/TilingScheme.js +100 -98
- package/Source/Core/TimeConstants.js +6 -1
- package/Source/Core/TimeStandard.js +6 -1
- package/Source/Core/TrackingReferenceFrame.js +6 -1
- package/Source/Core/Visibility.js +6 -1
- package/Source/Core/VulkanConstants.js +6 -1
- package/Source/Core/WebGLConstants.js +6 -1
- package/Source/Core/WebMercatorProjection.js +108 -109
- package/Source/Core/WebMercatorTilingScheme.js +246 -242
- package/Source/Core/WindingOrder.js +3 -1
- package/Source/Core/createColorRamp.js +37 -0
- package/Source/Core/globalTypes.js +25 -0
- package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +1 -0
- package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -0
- package/Source/DataSources/StripeOrientation.js +6 -1
- package/Source/Renderer/BufferUsage.js +20 -9
- package/Source/Renderer/Context.js +2 -29
- package/Source/Renderer/DrawCommand.js +435 -403
- package/Source/Renderer/MipmapHint.js +5 -1
- package/Source/Renderer/Pass.js +10 -3
- package/Source/Renderer/PickId.js +44 -0
- package/Source/Renderer/PixelDatatype.js +3 -1
- package/Source/Renderer/RenderbufferFormat.js +5 -1
- package/Source/Renderer/ShaderDestination.js +4 -1
- package/Source/Renderer/TextureMagnificationFilter.js +3 -1
- package/Source/Renderer/TextureMinificationFilter.js +3 -1
- package/Source/Renderer/TextureWrap.js +5 -1
- package/Source/Renderer/createUniform.js +346 -239
- package/Source/Renderer/createUniformArray.js +494 -381
- package/Source/Scene/AlphaMode.js +5 -1
- package/Source/Scene/ArcGisBaseMapType.js +6 -1
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/AttributeType.js +3 -1
- package/Source/Scene/Axis.js +3 -1
- package/Source/Scene/BingMapsStyle.js +6 -1
- package/Source/Scene/BlendEquation.js +6 -1
- package/Source/Scene/BlendFunction.js +6 -1
- package/Source/Scene/BlendOption.js +6 -1
- package/Source/Scene/BlendingState.js +6 -1
- package/Source/Scene/BufferLoader.js +0 -2
- package/Source/Scene/BufferPoint.js +1 -0
- package/Source/Scene/BufferPointCollection.js +17 -1
- package/Source/Scene/BufferPolygon.js +3 -2
- package/Source/Scene/BufferPolygonCollection.js +13 -1
- package/Source/Scene/BufferPolyline.js +1 -0
- package/Source/Scene/BufferPolylineCollection.js +5 -1
- package/Source/Scene/BufferPrimitiveCollection.js +210 -43
- package/Source/Scene/CameraEventAggregator.js +30 -18
- package/Source/Scene/CameraEventType.js +6 -1
- package/Source/Scene/Cesium3DTile.js +54 -1
- package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
- package/Source/Scene/Cesium3DTileContent.js +195 -254
- package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
- package/Source/Scene/Cesium3DTileContentState.js +6 -1
- package/Source/Scene/Cesium3DTileContentType.js +3 -1
- package/Source/Scene/Cesium3DTileFeature.js +289 -306
- package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
- package/Source/Scene/Cesium3DTilePass.js +5 -1
- package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
- package/Source/Scene/Cesium3DTileRefine.js +6 -1
- package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
- package/Source/Scene/Cesium3DTileset.js +46 -6
- package/Source/Scene/ClassificationType.js +3 -1
- package/Source/Scene/CloudType.js +3 -1
- package/Source/Scene/ColorBlendMode.js +4 -1
- package/Source/Scene/Composite3DTileContent.js +254 -292
- package/Source/Scene/CullFace.js +6 -1
- package/Source/Scene/DepthFunction.js +6 -1
- package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
- package/Source/Scene/EdgeDisplayMode.js +50 -0
- package/Source/Scene/Empty3DTileContent.js +100 -132
- package/Source/Scene/EquirectangularPanorama.js +1 -0
- package/Source/Scene/ExpressionNodeType.js +6 -1
- package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
- package/Source/Scene/GeoJsonPrimitive.js +874 -0
- package/Source/Scene/Geometry3DTileContent.js +151 -185
- package/Source/Scene/GltfBufferViewLoader.js +0 -2
- package/Source/Scene/GltfDracoLoader.js +0 -2
- package/Source/Scene/GltfImageLoader.js +0 -3
- package/Source/Scene/GltfIndexBufferLoader.js +0 -4
- package/Source/Scene/GltfJsonLoader.js +0 -2
- package/Source/Scene/GltfLoader.js +109 -5
- package/Source/Scene/GltfLoaderUtil.js +14 -0
- package/Source/Scene/GltfSpzLoader.js +0 -2
- package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
- package/Source/Scene/GltfTextureLoader.js +0 -2
- package/Source/Scene/GltfVertexBufferLoader.js +0 -4
- package/Source/Scene/HeightReference.js +5 -1
- package/Source/Scene/HorizontalOrigin.js +6 -1
- package/Source/Scene/ImageryProvider.js +1 -1
- package/Source/Scene/ImageryState.js +6 -1
- package/Source/Scene/Implicit3DTileContent.js +179 -214
- package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
- package/Source/Scene/InstanceAttributeSemantic.js +3 -1
- package/Source/Scene/IonWorldImageryStyle.js +6 -1
- package/Source/Scene/JobType.js +6 -1
- package/Source/Scene/LabelStyle.js +6 -1
- package/Source/Scene/MVTDataProvider.js +147 -0
- package/Source/Scene/MapMode2D.js +6 -1
- package/Source/Scene/MetadataComponentType.js +3 -1
- package/Source/Scene/MetadataSchemaLoader.js +0 -2
- package/Source/Scene/MetadataSemantic.js +6 -2
- package/Source/Scene/MetadataType.js +3 -1
- package/Source/Scene/Model/B3dmLoader.js +0 -3
- package/Source/Scene/Model/CustomShaderMode.js +3 -1
- package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +78 -337
- package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
- package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
- package/Source/Scene/Model/GeoJsonLoader.js +0 -2
- package/Source/Scene/Model/I3dmLoader.js +0 -3
- package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
- package/Source/Scene/Model/LightingModel.js +5 -1
- package/Source/Scene/Model/MaterialPipelineStage.js +184 -3
- package/Source/Scene/Model/Model.js +34 -0
- package/Source/Scene/Model/Model3DTileContent.js +424 -458
- package/Source/Scene/Model/ModelDrawCommand.js +31 -3
- package/Source/Scene/Model/ModelReader.js +474 -3
- package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
- package/Source/Scene/Model/ModelType.js +3 -1
- package/Source/Scene/Model/ModelUtility.js +4 -0
- package/Source/Scene/Model/PntsLoader.js +4 -3
- package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
- package/Source/Scene/Model/UniformType.js +5 -1
- package/Source/Scene/Model/VaryingType.js +5 -1
- package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +500 -139
- package/Source/Scene/Model/pickModel.js +94 -299
- package/Source/Scene/ModelAnimationLoop.js +6 -1
- package/Source/Scene/ModelAnimationState.js +6 -1
- package/Source/Scene/ModelComponents.js +47 -2
- package/Source/Scene/Multiple3DTileContent.js +291 -334
- package/Source/Scene/PrimitiveState.js +7 -1
- package/Source/Scene/QuadtreeOccluders.js +20 -15
- package/Source/Scene/QuadtreeTile.js +547 -541
- package/Source/Scene/QuadtreeTileLoadState.js +6 -1
- package/Source/Scene/QuadtreeTileProvider.js +159 -175
- package/Source/Scene/ResourceLoader.js +0 -1
- package/Source/Scene/ResourceLoaderState.js +7 -1
- package/Source/Scene/Scene.js +26 -0
- package/Source/Scene/SceneMode.js +4 -1
- package/Source/Scene/ShadowMode.js +3 -1
- package/Source/Scene/SkyBox.js +1 -1
- package/Source/Scene/SplitDirection.js +6 -1
- package/Source/Scene/StencilFunction.js +6 -1
- package/Source/Scene/StencilOperation.js +6 -1
- package/Source/Scene/TerrainState.js +7 -1
- package/Source/Scene/TileState.js +7 -1
- package/Source/Scene/Tileset3DTileContent.js +113 -146
- package/Source/Scene/Tonemapper.js +5 -1
- package/Source/Scene/UrlTemplate3DTilesDataProvider.js +499 -0
- package/Source/Scene/Vector3DTileContent.js +205 -234
- package/Source/Scene/VectorGltf3DTileContent.js +131 -61
- package/Source/Scene/VertexAttributeSemantic.js +3 -1
- package/Source/Scene/VerticalOrigin.js +6 -1
- package/Source/Scene/VoxelBoxShape.js +12 -6
- package/Source/Scene/VoxelContent.js +2 -0
- package/Source/Scene/VoxelCylinderShape.js +39 -38
- package/Source/Scene/VoxelEllipsoidShape.js +46 -96
- package/Source/Scene/VoxelMetadataOrder.js +6 -1
- package/Source/Scene/VoxelPrimitive.js +159 -175
- package/Source/Scene/VoxelProvider.js +64 -90
- package/Source/Scene/VoxelShapeType.js +3 -1
- package/Source/Scene/buildVectorGltfFromMVT.js +1059 -0
- package/Source/Scene/buildVoxelCustomShader.js +199 -0
- package/Source/Scene/decodeMVT.js +634 -0
- package/Source/Scene/renderBufferPointCollection.js +124 -127
- package/Source/Scene/renderBufferPolygonCollection.js +122 -122
- package/Source/Scene/renderBufferPolylineCollection.js +386 -238
- package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
- package/Source/Shaders/BufferPointMaterialFS.js +1 -0
- package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
- package/Source/Shaders/BufferPointMaterialVS.js +20 -10
- package/Source/Shaders/BufferPolygonMaterialVS.glsl +13 -4
- package/Source/Shaders/BufferPolygonMaterialVS.js +14 -5
- package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
- package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
- package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
- package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
- package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
- package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
- package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
- package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
- package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
- package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
- package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
- package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
- package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
- package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
- package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
- package/Source/Shaders/Model/MaterialStageFS.js +46 -20
- package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
- package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
- package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
- package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
- package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
- package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
- package/Source/Widget/CesiumWidget.js +11 -4
- package/index.d.ts +595 -343
- package/index.js +392 -378
- package/package.json +3 -3
- package/Build/Workers/chunk-DVB56LG7.js +0 -114
- package/Build/Workers/chunk-HKUES6UG.js +0 -2357
- package/Build/Workers/chunk-HRHRYFHS.js +0 -940
- package/Build/Workers/chunk-KLPGTXS3.js +0 -642
- package/Build/Workers/chunk-ZBZRTRJB.js +0 -1829
|
@@ -1,291 +1,295 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
import Cartesian2 from "./Cartesian2.js";
|
|
4
|
+
import Cartesian3 from "./Cartesian3.js";
|
|
5
|
+
import Cartographic from "./Cartographic.js";
|
|
2
6
|
import Frozen from "./Frozen.js";
|
|
3
7
|
import defined from "./defined.js";
|
|
4
8
|
import Ellipsoid from "./Ellipsoid.js";
|
|
5
9
|
import Rectangle from "./Rectangle.js";
|
|
6
10
|
import WebMercatorProjection from "./WebMercatorProjection.js";
|
|
7
11
|
|
|
12
|
+
/** @import MapProjection from "./MapProjection.js"; */
|
|
13
|
+
/** @import TilingScheme from "./TilingScheme.js"; */
|
|
14
|
+
|
|
15
|
+
const southwestScratch = new Cartographic();
|
|
16
|
+
const northeastScratch = new Cartographic();
|
|
17
|
+
|
|
18
|
+
const southwestCartesianScratch = new Cartesian3();
|
|
19
|
+
const northeastCartesianScratch = new Cartesian3();
|
|
20
|
+
|
|
8
21
|
/**
|
|
9
22
|
* A tiling scheme for geometry referenced to a {@link WebMercatorProjection}, EPSG:3857. This is
|
|
10
23
|
* the tiling scheme used by Google Maps, Microsoft Bing Maps, and most of ESRI ArcGIS Online.
|
|
11
24
|
*
|
|
12
|
-
* @
|
|
13
|
-
* @constructor
|
|
14
|
-
*
|
|
15
|
-
* @param {object} [options] Object with the following properties:
|
|
16
|
-
* @param {Ellipsoid} [options.ellipsoid=Ellipsoid.default] The ellipsoid whose surface is being tiled. Defaults to
|
|
17
|
-
* the default ellipsoid.
|
|
18
|
-
* @param {number} [options.numberOfLevelZeroTilesX=1] The number of tiles in the X direction at level zero of
|
|
19
|
-
* the tile tree.
|
|
20
|
-
* @param {number} [options.numberOfLevelZeroTilesY=1] The number of tiles in the Y direction at level zero of
|
|
21
|
-
* the tile tree.
|
|
22
|
-
* @param {Cartesian2} [options.rectangleSouthwestInMeters] The southwest corner of the rectangle covered by the
|
|
23
|
-
* tiling scheme, in meters. If this parameter or rectangleNortheastInMeters is not specified, the entire
|
|
24
|
-
* globe is covered in the longitude direction and an equal distance is covered in the latitude
|
|
25
|
-
* direction, resulting in a square projection.
|
|
26
|
-
* @param {Cartesian2} [options.rectangleNortheastInMeters] The northeast corner of the rectangle covered by the
|
|
27
|
-
* tiling scheme, in meters. If this parameter or rectangleSouthwestInMeters is not specified, the entire
|
|
28
|
-
* globe is covered in the longitude direction and an equal distance is covered in the latitude
|
|
29
|
-
* direction, resulting in a square projection.
|
|
25
|
+
* @implements {TilingScheme}
|
|
30
26
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
27
|
+
class WebMercatorTilingScheme {
|
|
28
|
+
/**
|
|
29
|
+
* @type {Cartesian2}
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
32
|
+
_rectangleSouthwestInMeters;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @type {Cartesian2}
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
_rectangleNortheastInMeters;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @param {object} [options] Object with the following properties:
|
|
42
|
+
* @param {Ellipsoid} [options.ellipsoid=Ellipsoid.default] The ellipsoid whose surface is being tiled. Defaults to
|
|
43
|
+
* the default ellipsoid.
|
|
44
|
+
* @param {number} [options.numberOfLevelZeroTilesX=1] The number of tiles in the X direction at level zero of
|
|
45
|
+
* the tile tree.
|
|
46
|
+
* @param {number} [options.numberOfLevelZeroTilesY=1] The number of tiles in the Y direction at level zero of
|
|
47
|
+
* the tile tree.
|
|
48
|
+
* @param {Cartesian2} [options.rectangleSouthwestInMeters] The southwest corner of the rectangle covered by the
|
|
49
|
+
* tiling scheme, in meters. If this parameter or rectangleNortheastInMeters is not specified, the entire
|
|
50
|
+
* globe is covered in the longitude direction and an equal distance is covered in the latitude
|
|
51
|
+
* direction, resulting in a square projection.
|
|
52
|
+
* @param {Cartesian2} [options.rectangleNortheastInMeters] The northeast corner of the rectangle covered by the
|
|
53
|
+
* tiling scheme, in meters. If this parameter or rectangleSouthwestInMeters is not specified, the entire
|
|
54
|
+
* globe is covered in the longitude direction and an equal distance is covered in the latitude
|
|
55
|
+
* direction, resulting in a square projection.
|
|
56
|
+
*/
|
|
57
|
+
constructor(options) {
|
|
58
|
+
options = options ?? Frozen.EMPTY_OBJECT;
|
|
59
|
+
|
|
60
|
+
this._ellipsoid = options.ellipsoid ?? Ellipsoid.default;
|
|
61
|
+
this._numberOfLevelZeroTilesX = options.numberOfLevelZeroTilesX ?? 1;
|
|
62
|
+
this._numberOfLevelZeroTilesY = options.numberOfLevelZeroTilesY ?? 1;
|
|
63
|
+
|
|
64
|
+
this._projection = new WebMercatorProjection(this._ellipsoid);
|
|
65
|
+
|
|
66
|
+
if (
|
|
67
|
+
defined(options.rectangleSouthwestInMeters) &&
|
|
68
|
+
defined(options.rectangleNortheastInMeters)
|
|
69
|
+
) {
|
|
70
|
+
this._rectangleSouthwestInMeters = options.rectangleSouthwestInMeters;
|
|
71
|
+
this._rectangleNortheastInMeters = options.rectangleNortheastInMeters;
|
|
72
|
+
} else {
|
|
73
|
+
const semimajorAxisTimesPi = this._ellipsoid.maximumRadius * Math.PI;
|
|
74
|
+
this._rectangleSouthwestInMeters = new Cartesian2(
|
|
75
|
+
-semimajorAxisTimesPi,
|
|
76
|
+
-semimajorAxisTimesPi,
|
|
77
|
+
);
|
|
78
|
+
this._rectangleNortheastInMeters = new Cartesian2(
|
|
79
|
+
semimajorAxisTimesPi,
|
|
80
|
+
semimajorAxisTimesPi,
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
let { x, y } = this._rectangleSouthwestInMeters;
|
|
85
|
+
Cartesian3.fromElements(x, y, 0, southwestCartesianScratch);
|
|
86
|
+
this._projection.unproject(southwestCartesianScratch, southwestScratch);
|
|
87
|
+
|
|
88
|
+
({ x, y } = this._rectangleNortheastInMeters);
|
|
89
|
+
Cartesian3.fromElements(x, y, 0, northeastCartesianScratch);
|
|
90
|
+
this._projection.unproject(northeastCartesianScratch, northeastScratch);
|
|
91
|
+
|
|
92
|
+
this._rectangle = new Rectangle(
|
|
93
|
+
southwestScratch.longitude,
|
|
94
|
+
southwestScratch.latitude,
|
|
95
|
+
northeastScratch.longitude,
|
|
96
|
+
northeastScratch.latitude,
|
|
55
97
|
);
|
|
56
98
|
}
|
|
57
99
|
|
|
58
|
-
const southwest = this._projection.unproject(
|
|
59
|
-
this._rectangleSouthwestInMeters,
|
|
60
|
-
);
|
|
61
|
-
const northeast = this._projection.unproject(
|
|
62
|
-
this._rectangleNortheastInMeters,
|
|
63
|
-
);
|
|
64
|
-
this._rectangle = new Rectangle(
|
|
65
|
-
southwest.longitude,
|
|
66
|
-
southwest.latitude,
|
|
67
|
-
northeast.longitude,
|
|
68
|
-
northeast.latitude,
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
Object.defineProperties(WebMercatorTilingScheme.prototype, {
|
|
73
100
|
/**
|
|
74
101
|
* Gets the ellipsoid that is tiled by this tiling scheme.
|
|
75
|
-
* @memberof WebMercatorTilingScheme.prototype
|
|
76
102
|
* @type {Ellipsoid}
|
|
77
103
|
*/
|
|
78
|
-
ellipsoid
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
},
|
|
82
|
-
},
|
|
104
|
+
get ellipsoid() {
|
|
105
|
+
return this._ellipsoid;
|
|
106
|
+
}
|
|
83
107
|
|
|
84
108
|
/**
|
|
85
109
|
* Gets the rectangle, in radians, covered by this tiling scheme.
|
|
86
|
-
* @memberof WebMercatorTilingScheme.prototype
|
|
87
110
|
* @type {Rectangle}
|
|
88
111
|
*/
|
|
89
|
-
rectangle
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
},
|
|
93
|
-
},
|
|
112
|
+
get rectangle() {
|
|
113
|
+
return this._rectangle;
|
|
114
|
+
}
|
|
94
115
|
|
|
95
116
|
/**
|
|
96
117
|
* Gets the map projection used by this tiling scheme.
|
|
97
|
-
* @memberof WebMercatorTilingScheme.prototype
|
|
98
118
|
* @type {MapProjection}
|
|
99
119
|
*/
|
|
100
|
-
projection
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
});
|
|
120
|
+
get projection() {
|
|
121
|
+
return this._projection;
|
|
122
|
+
}
|
|
106
123
|
|
|
107
|
-
/**
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
124
|
+
/**
|
|
125
|
+
* Gets the total number of tiles in the X direction at a specified level-of-detail.
|
|
126
|
+
*
|
|
127
|
+
* @param {number} level The level-of-detail.
|
|
128
|
+
* @returns {number} The number of tiles in the X direction at the given level.
|
|
129
|
+
*/
|
|
130
|
+
getNumberOfXTilesAtLevel(level) {
|
|
131
|
+
return this._numberOfLevelZeroTilesX << level;
|
|
132
|
+
}
|
|
116
133
|
|
|
117
|
-
/**
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
134
|
+
/**
|
|
135
|
+
* Gets the total number of tiles in the Y direction at a specified level-of-detail.
|
|
136
|
+
*
|
|
137
|
+
* @param {number} level The level-of-detail.
|
|
138
|
+
* @returns {number} The number of tiles in the Y direction at the given level.
|
|
139
|
+
*/
|
|
140
|
+
getNumberOfYTilesAtLevel(level) {
|
|
141
|
+
return this._numberOfLevelZeroTilesY << level;
|
|
142
|
+
}
|
|
126
143
|
|
|
127
|
-
/**
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
144
|
+
/**
|
|
145
|
+
* Transforms a rectangle specified in geodetic radians to the native coordinate system
|
|
146
|
+
* of this tiling scheme.
|
|
147
|
+
*
|
|
148
|
+
* @param {Rectangle} rectangle The rectangle to transform.
|
|
149
|
+
* @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
|
|
150
|
+
* should be created.
|
|
151
|
+
* @returns {Rectangle} The specified 'result', or a new object containing the native rectangle if 'result'
|
|
152
|
+
* is undefined.
|
|
153
|
+
*/
|
|
154
|
+
rectangleToNativeRectangle(rectangle, result) {
|
|
155
|
+
const projection = this._projection;
|
|
156
|
+
const southwest = projection.project(Rectangle.southwest(rectangle));
|
|
157
|
+
const northeast = projection.project(Rectangle.northeast(rectangle));
|
|
158
|
+
|
|
159
|
+
if (!defined(result)) {
|
|
160
|
+
return new Rectangle(southwest.x, southwest.y, northeast.x, northeast.y);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
result.west = southwest.x;
|
|
164
|
+
result.south = southwest.y;
|
|
165
|
+
result.east = northeast.x;
|
|
166
|
+
result.north = northeast.y;
|
|
167
|
+
return result;
|
|
147
168
|
}
|
|
148
169
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
170
|
+
/**
|
|
171
|
+
* Converts tile x, y coordinates and level to a rectangle expressed in the native coordinates
|
|
172
|
+
* of the tiling scheme.
|
|
173
|
+
*
|
|
174
|
+
* @param {number} x The integer x coordinate of the tile.
|
|
175
|
+
* @param {number} y The integer y coordinate of the tile.
|
|
176
|
+
* @param {number} level The tile level-of-detail. Zero is the least detailed.
|
|
177
|
+
* @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
|
|
178
|
+
* should be created.
|
|
179
|
+
* @returns {Rectangle} The specified 'result', or a new object containing the rectangle
|
|
180
|
+
* if 'result' is undefined.
|
|
181
|
+
*/
|
|
182
|
+
tileXYToNativeRectangle(x, y, level, result) {
|
|
183
|
+
const xTiles = this.getNumberOfXTilesAtLevel(level);
|
|
184
|
+
const yTiles = this.getNumberOfYTilesAtLevel(level);
|
|
155
185
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
xTiles;
|
|
180
|
-
const west = this._rectangleSouthwestInMeters.x + x * xTileWidth;
|
|
181
|
-
const east = this._rectangleSouthwestInMeters.x + (x + 1) * xTileWidth;
|
|
182
|
-
|
|
183
|
-
const yTileHeight =
|
|
184
|
-
(this._rectangleNortheastInMeters.y - this._rectangleSouthwestInMeters.y) /
|
|
185
|
-
yTiles;
|
|
186
|
-
const north = this._rectangleNortheastInMeters.y - y * yTileHeight;
|
|
187
|
-
const south = this._rectangleNortheastInMeters.y - (y + 1) * yTileHeight;
|
|
188
|
-
|
|
189
|
-
if (!defined(result)) {
|
|
190
|
-
return new Rectangle(west, south, east, north);
|
|
186
|
+
const xTileWidth =
|
|
187
|
+
(this._rectangleNortheastInMeters.x -
|
|
188
|
+
this._rectangleSouthwestInMeters.x) /
|
|
189
|
+
xTiles;
|
|
190
|
+
const west = this._rectangleSouthwestInMeters.x + x * xTileWidth;
|
|
191
|
+
const east = this._rectangleSouthwestInMeters.x + (x + 1) * xTileWidth;
|
|
192
|
+
|
|
193
|
+
const yTileHeight =
|
|
194
|
+
(this._rectangleNortheastInMeters.y -
|
|
195
|
+
this._rectangleSouthwestInMeters.y) /
|
|
196
|
+
yTiles;
|
|
197
|
+
const north = this._rectangleNortheastInMeters.y - y * yTileHeight;
|
|
198
|
+
const south = this._rectangleNortheastInMeters.y - (y + 1) * yTileHeight;
|
|
199
|
+
|
|
200
|
+
if (!defined(result)) {
|
|
201
|
+
return new Rectangle(west, south, east, north);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
result.west = west;
|
|
205
|
+
result.south = south;
|
|
206
|
+
result.east = east;
|
|
207
|
+
result.north = north;
|
|
208
|
+
return result;
|
|
191
209
|
}
|
|
192
210
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
211
|
+
/**
|
|
212
|
+
* Converts tile x, y coordinates and level to a cartographic rectangle in radians.
|
|
213
|
+
*
|
|
214
|
+
* @param {number} x The integer x coordinate of the tile.
|
|
215
|
+
* @param {number} y The integer y coordinate of the tile.
|
|
216
|
+
* @param {number} level The tile level-of-detail. Zero is the least detailed.
|
|
217
|
+
* @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
|
|
218
|
+
* should be created.
|
|
219
|
+
* @returns {Rectangle} The specified 'result', or a new object containing the rectangle
|
|
220
|
+
* if 'result' is undefined.
|
|
221
|
+
*/
|
|
222
|
+
tileXYToRectangle(x, y, level, result) {
|
|
223
|
+
const nativeRectangle = this.tileXYToNativeRectangle(x, y, level, result);
|
|
199
224
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
* should be created.
|
|
208
|
-
* @returns {Rectangle} The specified 'result', or a new object containing the rectangle
|
|
209
|
-
* if 'result' is undefined.
|
|
210
|
-
*/
|
|
211
|
-
WebMercatorTilingScheme.prototype.tileXYToRectangle = function (
|
|
212
|
-
x,
|
|
213
|
-
y,
|
|
214
|
-
level,
|
|
215
|
-
result,
|
|
216
|
-
) {
|
|
217
|
-
const nativeRectangle = this.tileXYToNativeRectangle(x, y, level, result);
|
|
218
|
-
|
|
219
|
-
const projection = this._projection;
|
|
220
|
-
const southwest = projection.unproject(
|
|
221
|
-
new Cartesian2(nativeRectangle.west, nativeRectangle.south),
|
|
222
|
-
);
|
|
223
|
-
const northeast = projection.unproject(
|
|
224
|
-
new Cartesian2(nativeRectangle.east, nativeRectangle.north),
|
|
225
|
-
);
|
|
226
|
-
|
|
227
|
-
nativeRectangle.west = southwest.longitude;
|
|
228
|
-
nativeRectangle.south = southwest.latitude;
|
|
229
|
-
nativeRectangle.east = northeast.longitude;
|
|
230
|
-
nativeRectangle.north = northeast.latitude;
|
|
231
|
-
return nativeRectangle;
|
|
232
|
-
};
|
|
225
|
+
const projection = this._projection;
|
|
226
|
+
const southwest = projection.unproject(
|
|
227
|
+
new Cartesian3(nativeRectangle.west, nativeRectangle.south),
|
|
228
|
+
);
|
|
229
|
+
const northeast = projection.unproject(
|
|
230
|
+
new Cartesian3(nativeRectangle.east, nativeRectangle.north),
|
|
231
|
+
);
|
|
233
232
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
* @param {number} level The tile level-of-detail. Zero is the least detailed.
|
|
240
|
-
* @param {Cartesian2} [result] The instance to which to copy the result, or undefined if a new instance
|
|
241
|
-
* should be created.
|
|
242
|
-
* @returns {Cartesian2} The specified 'result', or a new object containing the tile x, y coordinates
|
|
243
|
-
* if 'result' is undefined.
|
|
244
|
-
*/
|
|
245
|
-
WebMercatorTilingScheme.prototype.positionToTileXY = function (
|
|
246
|
-
position,
|
|
247
|
-
level,
|
|
248
|
-
result,
|
|
249
|
-
) {
|
|
250
|
-
const rectangle = this._rectangle;
|
|
251
|
-
if (!Rectangle.contains(rectangle, position)) {
|
|
252
|
-
// outside the bounds of the tiling scheme
|
|
253
|
-
return undefined;
|
|
233
|
+
nativeRectangle.west = southwest.longitude;
|
|
234
|
+
nativeRectangle.south = southwest.latitude;
|
|
235
|
+
nativeRectangle.east = northeast.longitude;
|
|
236
|
+
nativeRectangle.north = northeast.latitude;
|
|
237
|
+
return nativeRectangle;
|
|
254
238
|
}
|
|
255
239
|
|
|
256
|
-
|
|
257
|
-
|
|
240
|
+
/**
|
|
241
|
+
* Calculates the tile x, y coordinates of the tile containing
|
|
242
|
+
* a given cartographic position.
|
|
243
|
+
*
|
|
244
|
+
* @param {Cartographic} position The position.
|
|
245
|
+
* @param {number} level The tile level-of-detail. Zero is the least detailed.
|
|
246
|
+
* @param {Cartesian2} [result] The instance to which to copy the result, or undefined if a new instance
|
|
247
|
+
* should be created.
|
|
248
|
+
* @returns {Cartesian2} The specified 'result', or a new object containing the tile x, y coordinates
|
|
249
|
+
* if 'result' is undefined.
|
|
250
|
+
*/
|
|
251
|
+
positionToTileXY(position, level, result) {
|
|
252
|
+
const rectangle = this._rectangle;
|
|
253
|
+
if (!Rectangle.contains(rectangle, position)) {
|
|
254
|
+
// outside the bounds of the tiling scheme
|
|
255
|
+
return undefined;
|
|
256
|
+
}
|
|
258
257
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
const xTileWidth = overallWidth / xTiles;
|
|
262
|
-
const overallHeight =
|
|
263
|
-
this._rectangleNortheastInMeters.y - this._rectangleSouthwestInMeters.y;
|
|
264
|
-
const yTileHeight = overallHeight / yTiles;
|
|
258
|
+
const xTiles = this.getNumberOfXTilesAtLevel(level);
|
|
259
|
+
const yTiles = this.getNumberOfYTilesAtLevel(level);
|
|
265
260
|
|
|
266
|
-
|
|
261
|
+
const overallWidth =
|
|
262
|
+
this._rectangleNortheastInMeters.x - this._rectangleSouthwestInMeters.x;
|
|
263
|
+
const xTileWidth = overallWidth / xTiles;
|
|
264
|
+
const overallHeight =
|
|
265
|
+
this._rectangleNortheastInMeters.y - this._rectangleSouthwestInMeters.y;
|
|
266
|
+
const yTileHeight = overallHeight / yTiles;
|
|
267
267
|
|
|
268
|
-
|
|
269
|
-
const distanceFromWest =
|
|
270
|
-
webMercatorPosition.x - this._rectangleSouthwestInMeters.x;
|
|
271
|
-
const distanceFromNorth =
|
|
272
|
-
this._rectangleNortheastInMeters.y - webMercatorPosition.y;
|
|
268
|
+
const projection = this._projection;
|
|
273
269
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
270
|
+
const webMercatorPosition = projection.project(position);
|
|
271
|
+
const distanceFromWest =
|
|
272
|
+
webMercatorPosition.x - this._rectangleSouthwestInMeters.x;
|
|
273
|
+
const distanceFromNorth =
|
|
274
|
+
this._rectangleNortheastInMeters.y - webMercatorPosition.y;
|
|
275
|
+
|
|
276
|
+
let xTileCoordinate = (distanceFromWest / xTileWidth) | 0;
|
|
277
|
+
if (xTileCoordinate >= xTiles) {
|
|
278
|
+
xTileCoordinate = xTiles - 1;
|
|
279
|
+
}
|
|
280
|
+
let yTileCoordinate = (distanceFromNorth / yTileHeight) | 0;
|
|
281
|
+
if (yTileCoordinate >= yTiles) {
|
|
282
|
+
yTileCoordinate = yTiles - 1;
|
|
283
|
+
}
|
|
282
284
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
+
if (!defined(result)) {
|
|
286
|
+
return new Cartesian2(xTileCoordinate, yTileCoordinate);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
result.x = xTileCoordinate;
|
|
290
|
+
result.y = yTileCoordinate;
|
|
291
|
+
return result;
|
|
285
292
|
}
|
|
293
|
+
}
|
|
286
294
|
|
|
287
|
-
result.x = xTileCoordinate;
|
|
288
|
-
result.y = yTileCoordinate;
|
|
289
|
-
return result;
|
|
290
|
-
};
|
|
291
295
|
export default WebMercatorTilingScheme;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
/** @import Color from "./Color.js"; */
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Creates a color ramp that linearly interpolates between the given colors.
|
|
7
|
+
*
|
|
8
|
+
* @param {Color[]} colors The array of colors to use for the color ramp.
|
|
9
|
+
* @param {number} rampLength The length (in number of samples) of the color ramp to create.
|
|
10
|
+
* @returns {Uint8Array} A typed array representing the color ramp.
|
|
11
|
+
*
|
|
12
|
+
* @private
|
|
13
|
+
*/
|
|
14
|
+
function createColorRamp(colors, rampLength) {
|
|
15
|
+
const ramp = document.createElement("canvas");
|
|
16
|
+
ramp.width = rampLength;
|
|
17
|
+
ramp.height = 1;
|
|
18
|
+
const ctx = ramp.getContext("2d");
|
|
19
|
+
const grd = ctx.createLinearGradient(0, 0, ramp.width, 0);
|
|
20
|
+
|
|
21
|
+
const stepSize = 1 / (colors.length - 1);
|
|
22
|
+
for (let i = 0; i < colors.length; i++) {
|
|
23
|
+
const color = colors[i];
|
|
24
|
+
const stop = i * stepSize;
|
|
25
|
+
const cssColor = color.toCssColorString();
|
|
26
|
+
grd.addColorStop(stop, cssColor);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
ctx.fillStyle = grd;
|
|
30
|
+
ctx.fillRect(0, 0, ramp.width, ramp.height);
|
|
31
|
+
|
|
32
|
+
const imageData = ctx.getImageData(0, 0, ramp.width, ramp.height);
|
|
33
|
+
const array = new Uint8Array(imageData.data.buffer);
|
|
34
|
+
return array;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default createColorRamp;
|
|
@@ -12,6 +12,31 @@
|
|
|
12
12
|
* @typedef {{destroy: Function}} Destroyable
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* A GeoJSON position expressed as [longitude, latitude] or [longitude, latitude, altitude].
|
|
17
|
+
* @typedef {Array.<number>} GeoJsonPosition
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A GeoJSON geometry object.
|
|
22
|
+
* @typedef {{type: string, coordinates: (unknown|undefined), geometries: (Array.<GeoJsonGeometry>|undefined)}} GeoJsonGeometry
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* A GeoJSON feature object.
|
|
27
|
+
* @typedef {{type: string, geometry: (GeoJsonGeometry|null), properties: (Object.<string, *>|null), id: (string|number|undefined)}} GeoJsonFeature
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* A GeoJSON feature collection object.
|
|
32
|
+
* @typedef {{type: string, features: Array.<GeoJsonFeature>}} GeoJsonFeatureCollection
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* A top-level GeoJSON object (Geometry, Feature, or FeatureCollection).
|
|
37
|
+
* @typedef {GeoJsonGeometry|GeoJsonFeature|GeoJsonFeatureCollection} GeoJson
|
|
38
|
+
*/
|
|
39
|
+
|
|
15
40
|
/**
|
|
16
41
|
* This file is omitted from 'workspaceSourceFiles' in 'scripts/build.js', and
|
|
17
42
|
* must provide type-only exports exclusively, without runtime values.
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Defined the orientation of stripes in {@link StripeMaterialProperty}.
|
|
3
5
|
*
|
|
@@ -16,4 +18,7 @@ const StripeOrientation = {
|
|
|
16
18
|
*/
|
|
17
19
|
VERTICAL: 1,
|
|
18
20
|
};
|
|
19
|
-
|
|
21
|
+
|
|
22
|
+
Object.freeze(StripeOrientation);
|
|
23
|
+
|
|
24
|
+
export default StripeOrientation;
|