cesium 0.13.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.
- data/LICENSE.md +259 -0
- data/README.rdoc +90 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
- data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
- data/app/assets/javascripts/Assets/package.json +6 -0
- data/app/assets/javascripts/Cesium.js +320 -0
- data/app/assets/javascripts/Core/AnimationController.js +148 -0
- data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
- data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
- data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
- data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
- data/app/assets/javascripts/Core/Cartesian2.js +762 -0
- data/app/assets/javascripts/Core/Cartesian3.js +861 -0
- data/app/assets/javascripts/Core/Cartesian4.js +762 -0
- data/app/assets/javascripts/Core/Cartographic.js +211 -0
- data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
- data/app/assets/javascripts/Core/Clock.js +195 -0
- data/app/assets/javascripts/Core/ClockRange.js +37 -0
- data/app/assets/javascripts/Core/ClockStep.js +32 -0
- data/app/assets/javascripts/Core/Color.js +1629 -0
- data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
- data/app/assets/javascripts/Core/Core.profile.js +8 -0
- data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
- data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
- data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
- data/app/assets/javascripts/Core/DeveloperError.js +60 -0
- data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
- data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
- data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
- data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
- data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
- data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
- data/app/assets/javascripts/Core/Enumeration.js +67 -0
- data/app/assets/javascripts/Core/Event.js +122 -0
- data/app/assets/javascripts/Core/Extent.js +383 -0
- data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
- data/app/assets/javascripts/Core/FAR.js +13 -0
- data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
- data/app/assets/javascripts/Core/Fullscreen.js +235 -0
- data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
- data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
- data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
- data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
- data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
- data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
- data/app/assets/javascripts/Core/Intersect.js +40 -0
- data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
- data/app/assets/javascripts/Core/Interval.js +27 -0
- data/app/assets/javascripts/Core/Iso8601.js +46 -0
- data/app/assets/javascripts/Core/JulianDate.js +1228 -0
- data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
- data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
- data/app/assets/javascripts/Core/LeapSecond.js +158 -0
- data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
- data/app/assets/javascripts/Core/Math.js +532 -0
- data/app/assets/javascripts/Core/Matrix2.js +833 -0
- data/app/assets/javascripts/Core/Matrix3.js +1099 -0
- data/app/assets/javascripts/Core/Matrix4.js +2164 -0
- data/app/assets/javascripts/Core/MeshFilters.js +568 -0
- data/app/assets/javascripts/Core/Occluder.js +474 -0
- data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
- data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
- data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
- data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
- data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
- data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
- data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
- data/app/assets/javascripts/Core/Quaternion.js +947 -0
- data/app/assets/javascripts/Core/Queue.js +95 -0
- data/app/assets/javascripts/Core/Ray.js +64 -0
- data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
- data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
- data/app/assets/javascripts/Core/RuntimeError.js +59 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
- data/app/assets/javascripts/Core/Shapes.js +230 -0
- data/app/assets/javascripts/Core/Spherical.js +192 -0
- data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
- data/app/assets/javascripts/Core/TimeConstants.js +85 -0
- data/app/assets/javascripts/Core/TimeInterval.js +305 -0
- data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
- data/app/assets/javascripts/Core/TimeStandard.js +31 -0
- data/app/assets/javascripts/Core/Tipsify.js +285 -0
- data/app/assets/javascripts/Core/Transforms.js +614 -0
- data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
- data/app/assets/javascripts/Core/Visibility.js +38 -0
- data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
- data/app/assets/javascripts/Core/WindingOrder.js +40 -0
- data/app/assets/javascripts/Core/binarySearch.js +69 -0
- data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
- data/app/assets/javascripts/Core/clone.js +21 -0
- data/app/assets/javascripts/Core/combine.js +81 -0
- data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
- data/app/assets/javascripts/Core/createGuid.js +25 -0
- data/app/assets/javascripts/Core/defaultValue.js +22 -0
- data/app/assets/javascripts/Core/destroyObject.js +61 -0
- data/app/assets/javascripts/Core/freezeObject.js +20 -0
- data/app/assets/javascripts/Core/getImagePixels.js +46 -0
- data/app/assets/javascripts/Core/isLeapYear.js +30 -0
- data/app/assets/javascripts/Core/jsonp.js +116 -0
- data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
- data/app/assets/javascripts/Core/loadImage.js +85 -0
- data/app/assets/javascripts/Core/loadJson.js +54 -0
- data/app/assets/javascripts/Core/loadText.js +78 -0
- data/app/assets/javascripts/Core/loadXML.js +76 -0
- data/app/assets/javascripts/Core/package.json +6 -0
- data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
- data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
- data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
- data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
- data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
- data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
- data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
- data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
- data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
- data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
- data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
- data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
- data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
- data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
- data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
- data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
- data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
- data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
- data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
- data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
- data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
- data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
- data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
- data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
- data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
- data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
- data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
- data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
- data/app/assets/javascripts/DynamicScene/package.json +6 -0
- data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
- data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
- data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
- data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
- data/app/assets/javascripts/Renderer/Buffer.js +141 -0
- data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
- data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
- data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
- data/app/assets/javascripts/Renderer/Context.js +2805 -0
- data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
- data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
- data/app/assets/javascripts/Renderer/CullFace.js +50 -0
- data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
- data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
- data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
- data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
- data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
- data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
- data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
- data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
- data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
- data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
- data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
- data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
- data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
- data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
- data/app/assets/javascripts/Renderer/Texture.js +395 -0
- data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
- data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
- data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
- data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
- data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
- data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
- data/app/assets/javascripts/Renderer/UniformState.js +799 -0
- data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
- data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
- data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
- data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
- data/app/assets/javascripts/Renderer/package.json +6 -0
- data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
- data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
- data/app/assets/javascripts/Scene/Billboard.js +680 -0
- data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
- data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
- data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
- data/app/assets/javascripts/Scene/Camera.js +358 -0
- data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
- data/app/assets/javascripts/Scene/CameraController.js +1258 -0
- data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
- data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
- data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
- data/app/assets/javascripts/Scene/CentralBody.js +817 -0
- data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
- data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
- data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
- data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
- data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
- data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
- data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
- data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
- data/app/assets/javascripts/Scene/FrameState.js +86 -0
- data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
- data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
- data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/Imagery.js +85 -0
- data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
- data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
- data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
- data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
- data/app/assets/javascripts/Scene/ImageryState.js +20 -0
- data/app/assets/javascripts/Scene/Label.js +706 -0
- data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
- data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
- data/app/assets/javascripts/Scene/Material.js +1177 -0
- data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
- data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
- data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
- data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
- data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
- data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
- data/app/assets/javascripts/Scene/Polygon.js +886 -0
- data/app/assets/javascripts/Scene/Polyline.js +441 -0
- data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
- data/app/assets/javascripts/Scene/Projections.js +93 -0
- data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
- data/app/assets/javascripts/Scene/Scene.js +632 -0
- data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
- data/app/assets/javascripts/Scene/SceneMode.js +51 -0
- data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
- data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
- data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
- data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
- data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
- data/app/assets/javascripts/Scene/SkyBox.js +231 -0
- data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
- data/app/assets/javascripts/Scene/TexturePool.js +154 -0
- data/app/assets/javascripts/Scene/Tile.js +322 -0
- data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
- data/app/assets/javascripts/Scene/TileImagery.js +36 -0
- data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
- data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
- data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
- data/app/assets/javascripts/Scene/TileState.js +19 -0
- data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
- data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
- data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
- data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
- data/app/assets/javascripts/Scene/package.json +6 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
- data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
- data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
- data/app/assets/javascripts/Shaders/Noise.js +242 -0
- data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
- data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
- data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
- data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
- data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
- data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
- data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
- data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
- data/app/assets/javascripts/Shaders/Ray.js +357 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
- data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
- data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
- data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
- data/app/assets/javascripts/Shaders/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
- data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
- data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
- data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
- data/app/assets/javascripts/ThirdParty/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
- data/app/assets/javascripts/ThirdParty/when.js +748 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
- data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
- data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
- data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
- data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
- data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
- data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
- data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
- data/app/assets/javascripts/Widgets/Timeline.css +113 -0
- data/app/assets/javascripts/Widgets/Timeline.js +629 -0
- data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
- data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
- data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
- data/app/assets/javascripts/Widgets/package.json +6 -0
- data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
- data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
- data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
- data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
- data/app/assets/javascripts/Workers/package.json +6 -0
- data/app/assets/javascripts/copyrightHeader.js +22 -0
- data/app/assets/javascripts/main.js +10 -0
- data/app/assets/stylesheets/cesium.css +4 -0
- data/app/controllers/cesium_controller.rb +4 -0
- data/app/helpers/cesium_helper.rb +2 -0
- data/app/views/cesium/index.html.erb +3 -0
- data/config/routes.rb +3 -0
- data/lib/cesium.rb +4 -0
- data/lib/cesium/engine.rb +4 -0
- data/lib/cesium/version.rb +3 -0
- data/lib/tasks/cesium_tasks.rake +4 -0
- data/test/cesium_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
- data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
- data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
- data/test/dummy/app/assets/stylesheets/application.css +12 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +21 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/requirejs.yml +10 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/functional/cesium_controller_test.rb +9 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- data/test/unit/helpers/cesium_helper_test.rb +4 -0
- metadata +641 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'./DeveloperError',
|
|
4
|
+
'./Matrix4',
|
|
5
|
+
'./Cartesian4',
|
|
6
|
+
'./TridiagonalSystemSolver'
|
|
7
|
+
],
|
|
8
|
+
function(
|
|
9
|
+
DeveloperError,
|
|
10
|
+
Matrix4,
|
|
11
|
+
Cartesian4,
|
|
12
|
+
TridiagonalSystemSolver) {
|
|
13
|
+
"use strict";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* A Hermite spline is a cubic interpolating spline. Positions, tangents, and times must be defined
|
|
17
|
+
* for each control point. If no tangents are specified by the control points, the end and interior
|
|
18
|
+
* tangents are generated, creating a natural cubic spline. If the only tangents specified are at
|
|
19
|
+
* the end control points, the interior tangents will be generated as well, creating a clamped cubic
|
|
20
|
+
* spline. Otherwise, it is assumed that each control point defines a tangent at that point.
|
|
21
|
+
*
|
|
22
|
+
* Natural and clamped cubic splines are in the class C<sup>2</sup>.
|
|
23
|
+
*
|
|
24
|
+
* @alias HermiteSpline
|
|
25
|
+
* @constructor
|
|
26
|
+
*
|
|
27
|
+
* @param {Array} controlPoints An array, of at least length 3, of objects with <code>point</code>,
|
|
28
|
+
* <code>time</code>, and <code>tangent</code> properties.
|
|
29
|
+
*
|
|
30
|
+
* @exception {DeveloperError} controlPoints is required.
|
|
31
|
+
* @exception {DeveloperError} controlPoints must be an array of at least length 3.
|
|
32
|
+
*
|
|
33
|
+
* @see CatmullRomSpline
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* // Example 1.
|
|
37
|
+
* // Create a natural cubic spline above the earth from Philadelphia to Los Angeles.
|
|
38
|
+
* var controlPoints = [
|
|
39
|
+
* {point: new Cartesian3(1235398.0, -4810983.0, 4146266.0), time: 0.0},
|
|
40
|
+
* {point: new Cartesian3(1372574.0, -5345182.0, 4606657.0), time: 1.5},
|
|
41
|
+
* {point: new Cartesian3(-757983.0, -5542796.0, 4514323.0), time: 3.0},
|
|
42
|
+
* {point: new Cartesian3(-2821260.0, -5248423.0, 4021290.0), time: 4.5},
|
|
43
|
+
* {point: new Cartesian3(-2539788.0, -4724797.0, 3620093.0), time: 6.0}
|
|
44
|
+
* ];
|
|
45
|
+
* var spline = new HermiteSpline(controlPoints);
|
|
46
|
+
*
|
|
47
|
+
* // Example 2.
|
|
48
|
+
* // Create a Catmull-Rom spline above the earth from Philadelphia to Los Angeles.
|
|
49
|
+
* var controlPoints = [
|
|
50
|
+
* {point: new Cartesian3(1235398.0, -4810983.0, 4146266.0), time: 0.0},
|
|
51
|
+
* {point: new Cartesian3(1372574.0, -5345182.0, 4606657.0), time: 1.5},
|
|
52
|
+
* {point: new Cartesian3(-757983.0, -5542796.0, 4514323.0), time: 3.0},
|
|
53
|
+
* {point: new Cartesian3(-2821260.0, -5248423.0, 4021290.0), time: 4.5},
|
|
54
|
+
* {point: new Cartesian3(-2539788.0, -4724797.0, 3620093.0), time: 6.0}
|
|
55
|
+
* ];
|
|
56
|
+
*
|
|
57
|
+
* // Add tangents
|
|
58
|
+
* controlPoints[0].tangent = new Cartesian3(1125196, -161816, 270551);
|
|
59
|
+
* for (var i = 1; i < controlPoints.length - 1; ++i) {
|
|
60
|
+
* controlPoints[i].tangent = controlPoints[i + 1].point.subtract(controlPoints[i - 1].point).multiplyByScalar(0.5);
|
|
61
|
+
* }
|
|
62
|
+
* controlPoints[controlPoints.length - 1].tangent = new Cartesian3(1165345, 112641, 47281);
|
|
63
|
+
*
|
|
64
|
+
* var spline = new HermiteSpline(controlPoints);
|
|
65
|
+
*/
|
|
66
|
+
var HermiteSpline = function(controlPoints) {
|
|
67
|
+
if (!controlPoints || !(controlPoints instanceof Array) || controlPoints.length < 3) {
|
|
68
|
+
throw new DeveloperError('controlPoints is required. It must be an array with at least a length of 3.');
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
this._points = controlPoints;
|
|
72
|
+
|
|
73
|
+
this._lastTimeIndex = 0;
|
|
74
|
+
|
|
75
|
+
if (!this._points[0].tangent || !this._points[this._points.length - 1].tangent) {
|
|
76
|
+
this._generateNatural();
|
|
77
|
+
} else if (this._points[0].tangent && !this._points[1].tangent && this._points[this._points.length - 1].tangent && !this._points[this._points.length - 2].tangent) {
|
|
78
|
+
this._generateClamped();
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
HermiteSpline.hermiteCoefficientMatrix = new Matrix4(
|
|
83
|
+
2.0, -3.0, 0.0, 1.0,
|
|
84
|
+
-2.0, 3.0, 0.0, 0.0,
|
|
85
|
+
1.0, -2.0, 1.0, 0.0,
|
|
86
|
+
1.0, -1.0, 0.0, 0.0);
|
|
87
|
+
|
|
88
|
+
HermiteSpline.prototype._findIndex = function(time) {
|
|
89
|
+
// Take advantage of temporal coherence by checking current, next and previous intervals
|
|
90
|
+
// for containment of time.
|
|
91
|
+
var i = this._lastTimeIndex || 0;
|
|
92
|
+
if (time >= this._points[i].time) {
|
|
93
|
+
if (i + 1 < this._points.length && time < this._points[i + 1].time) {
|
|
94
|
+
return i;
|
|
95
|
+
} else if (i + 2 < this._points.length && time < this._points[i + 2].time) {
|
|
96
|
+
this._lastTimeIndex = i + 1;
|
|
97
|
+
return this._lastTimeIndex;
|
|
98
|
+
}
|
|
99
|
+
} else if (i - 1 >= 0 && time >= this._points[i - 1].time) {
|
|
100
|
+
this._lastTimeIndex = i - 1;
|
|
101
|
+
return this._lastTimeIndex;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// The above failed so do a linear search. For the use cases so far, the
|
|
105
|
+
// length of the list is less than 10. In the future, if there is a bottle neck,
|
|
106
|
+
// it might be here.
|
|
107
|
+
for (i = 0; i < this._points.length - 1; ++i) {
|
|
108
|
+
if (time >= this._points[i].time && time < this._points[i + 1].time) {
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (i === this._points.length - 1) {
|
|
114
|
+
i = this._points.length - 2;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
this._lastTimeIndex = i;
|
|
118
|
+
return this._lastTimeIndex;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
HermiteSpline.prototype._generateClamped = function() {
|
|
122
|
+
var l = [], d = [], u = [], r = [];
|
|
123
|
+
l.length = u.length = this._points.length - 1;
|
|
124
|
+
d.length = r.length = this._points.length;
|
|
125
|
+
|
|
126
|
+
var i;
|
|
127
|
+
l[0] = d[0] = 1.0;
|
|
128
|
+
u[0] = 0.0;
|
|
129
|
+
r[0] = this._points[0].tangent;
|
|
130
|
+
for (i = 1; i < l.length - 1; ++i) {
|
|
131
|
+
l[i] = u[i] = 1.0;
|
|
132
|
+
d[i] = 4.0;
|
|
133
|
+
r[i] = this._points[i + 1].point.subtract(this._points[i - 1].point).multiplyByScalar(3.0);
|
|
134
|
+
}
|
|
135
|
+
l[i] = 0.0;
|
|
136
|
+
u[i] = 1.0;
|
|
137
|
+
d[i] = 4.0;
|
|
138
|
+
r[i] = this._points[i + 1].point.subtract(this._points[i - 1].point).multiplyByScalar(3.0);
|
|
139
|
+
d[i + 1] = 1.0;
|
|
140
|
+
r[i + 1] = this._points[i + 1].tangent;
|
|
141
|
+
|
|
142
|
+
var tangents = TridiagonalSystemSolver.solve(l, d, u, r);
|
|
143
|
+
for (i = 0; i < this._points.length; ++i) {
|
|
144
|
+
this._points[i].tangent = tangents[i];
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
HermiteSpline.prototype._generateNatural = function() {
|
|
149
|
+
var l = [], d = [], u = [], r = [];
|
|
150
|
+
l.length = u.length = this._points.length - 1;
|
|
151
|
+
d.length = r.length = this._points.length;
|
|
152
|
+
|
|
153
|
+
var i;
|
|
154
|
+
l[0] = u[0] = 1.0;
|
|
155
|
+
d[0] = 2.0;
|
|
156
|
+
r[0] = this._points[1].point.subtract(this._points[0].point).multiplyByScalar(3.0);
|
|
157
|
+
for (i = 1; i < l.length; ++i) {
|
|
158
|
+
l[i] = u[i] = 1.0;
|
|
159
|
+
d[i] = 4.0;
|
|
160
|
+
r[i] = this._points[i + 1].point.subtract(this._points[i - 1].point).multiplyByScalar(3.0);
|
|
161
|
+
}
|
|
162
|
+
d[i] = 2.0;
|
|
163
|
+
r[i] = this._points[i].point.subtract(this._points[i - 1].point).multiplyByScalar(3.0);
|
|
164
|
+
|
|
165
|
+
var tangents = TridiagonalSystemSolver.solve(l, d, u, r);
|
|
166
|
+
for (i = 0; i < this._points.length; ++i) {
|
|
167
|
+
this._points[i].tangent = tangents[i];
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Returns the array of control points.
|
|
173
|
+
*
|
|
174
|
+
* @memberof HermiteSpline
|
|
175
|
+
* @return {Array} The array of control points.
|
|
176
|
+
*/
|
|
177
|
+
HermiteSpline.prototype.getControlPoints = function() {
|
|
178
|
+
return this._points;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Evaluates the curve at a given time.
|
|
183
|
+
*
|
|
184
|
+
* @memberof HermiteSpline
|
|
185
|
+
*
|
|
186
|
+
* @param {Number} time The time at which to evaluate the curve.
|
|
187
|
+
*
|
|
188
|
+
* @exception {DeveloperError} time is required.
|
|
189
|
+
* @exception {DeveloperError} time must be in the range <code>[a<sub>0</sub>, a<sub>n</sub>]</code>,
|
|
190
|
+
* where <code>a<sub>0</sub></code> and <code>a<sub>n</sub></code> are the time properties of first and
|
|
191
|
+
* last elements in the array given during construction, respectively.
|
|
192
|
+
*
|
|
193
|
+
* @return {Cartesian3} The point on the curve at the given <code>time</code>.
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* // spline above the earth from Philadelphia to Los Angeles
|
|
197
|
+
* var controlPoints = [
|
|
198
|
+
* {point: new Cartesian3(1235398.0, -4810983.0, 4146266.0), time: 0.0},
|
|
199
|
+
* {point: new Cartesian3(1372574.0, -5345182.0, 4606657.0), time: 1.5},
|
|
200
|
+
* {point: new Cartesian3(-757983.0, -5542796.0, 4514323.0), time: 3.0},
|
|
201
|
+
* {point: new Cartesian3(-2821260.0, -5248423.0, 4021290.0), time: 4.5},
|
|
202
|
+
* {point: new Cartesian3(-2539788.0, -4724797.0, 3620093.0), time: 6.0}
|
|
203
|
+
* ];
|
|
204
|
+
* var spline = new HermiteSpline(controlPoints);
|
|
205
|
+
*
|
|
206
|
+
* // some position above Los Angeles
|
|
207
|
+
* var position = spline.evaluate(5.0);
|
|
208
|
+
*/
|
|
209
|
+
HermiteSpline.prototype.evaluate = function(time) {
|
|
210
|
+
if (typeof time === 'undefined') {
|
|
211
|
+
throw new DeveloperError('time is required.');
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
if (time < this._points[0].time || time > this._points[this._points.length - 1].time) {
|
|
215
|
+
throw new DeveloperError('time is out of range.');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
var i = this._findIndex(time);
|
|
219
|
+
var u = (time - this._points[i].time) / (this._points[i + 1].time - this._points[i].time);
|
|
220
|
+
|
|
221
|
+
var timeVec = new Cartesian4(0.0, u * u, u);
|
|
222
|
+
timeVec.x = timeVec.y * u;
|
|
223
|
+
|
|
224
|
+
var coefs = HermiteSpline.hermiteCoefficientMatrix.multiplyByPoint(timeVec);
|
|
225
|
+
var p0 = this._points[i].point.multiplyByScalar(coefs.x);
|
|
226
|
+
var p1 = this._points[i + 1].point.multiplyByScalar(coefs.y);
|
|
227
|
+
var p2 = this._points[i].tangent.multiplyByScalar(coefs.z);
|
|
228
|
+
var p3 = this._points[i + 1].tangent.multiplyByScalar(coefs.w);
|
|
229
|
+
|
|
230
|
+
return p0.add(p1.add(p2.add(p3)));
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
return HermiteSpline;
|
|
234
|
+
});
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'./buildModuleUrl',
|
|
4
|
+
'./defaultValue',
|
|
5
|
+
'./loadJson',
|
|
6
|
+
'./Iau2006XysSample',
|
|
7
|
+
'./JulianDate',
|
|
8
|
+
'./TimeStandard',
|
|
9
|
+
'../ThirdParty/when'
|
|
10
|
+
],
|
|
11
|
+
function(
|
|
12
|
+
buildModuleUrl,
|
|
13
|
+
defaultValue,
|
|
14
|
+
loadJson,
|
|
15
|
+
Iau2006XysSample,
|
|
16
|
+
JulianDate,
|
|
17
|
+
TimeStandard,
|
|
18
|
+
when) {
|
|
19
|
+
"use strict";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* A set of IAU2006 XYS data that is used to evaluate the transformation between the International
|
|
23
|
+
* Celestial Reference Frame (ICRF) and the International Terrestrial Reference Frame (ITRF).
|
|
24
|
+
*
|
|
25
|
+
* @alias Iau2006XysData
|
|
26
|
+
* @constructor
|
|
27
|
+
*
|
|
28
|
+
* @param {String} [description.xysFileUrlTemplate='Assets/IAU2006_XYS/IAU2006_XYS_{0}.json'] A template URL for obtaining the XYS data. In the template,
|
|
29
|
+
* `{0}` will be replaced with the file index.
|
|
30
|
+
* @param {Number} [description.interpolationOrder=9] The order of interpolation to perform on the XYS data.
|
|
31
|
+
* @param {Number} [description.sampleZeroJulianEphemerisDate=2442396.5] The Julian ephemeris date (JED) of the
|
|
32
|
+
* first XYS sample.
|
|
33
|
+
* @param {Number} [description.stepSizeDays=1.0] The step size, in days, between successive XYS samples.
|
|
34
|
+
* @param {Number} [description.samplesPerXysFile=1000] The number of samples in each XYS file.
|
|
35
|
+
* @param {Number} [description.totalSamples=27426] The total number of samples in all XYS files.
|
|
36
|
+
*/
|
|
37
|
+
var Iau2006XysData = function Iau2006XysData(description) {
|
|
38
|
+
description = description || {};
|
|
39
|
+
|
|
40
|
+
this._xysFileUrlTemplate = defaultValue(description.xysFileUrlTemplate, buildModuleUrl('Assets/IAU2006_XYS/IAU2006_XYS_{0}.json'));
|
|
41
|
+
this._interpolationOrder = defaultValue(description.interpolationOrder, 9);
|
|
42
|
+
this._sampleZeroJulianEphemerisDate = defaultValue(description.sampleZeroJulianEphemerisDate, 2442396.5);
|
|
43
|
+
this._sampleZeroDateTT = new JulianDate(this._sampleZeroJulianEphemerisDate, 0.0, TimeStandard.TAI);
|
|
44
|
+
this._stepSizeDays = defaultValue(description.stepSizeDays, 1.0);
|
|
45
|
+
this._samplesPerXysFile = defaultValue(description.samplesPerXysFile, 1000);
|
|
46
|
+
this._totalSamples = defaultValue(description.totalSamples, 27426);
|
|
47
|
+
this._samples = new Array(this._totalSamples * 3);
|
|
48
|
+
this._chunkDownloadsInProgress = [];
|
|
49
|
+
|
|
50
|
+
var order = this._interpolationOrder;
|
|
51
|
+
|
|
52
|
+
// Compute denominators and X values for interpolation.
|
|
53
|
+
var denom = this._denominators = new Array(order + 1);
|
|
54
|
+
var xTable = this._xTable = new Array(order + 1);
|
|
55
|
+
|
|
56
|
+
var stepN = Math.pow(this._stepSizeDays, order);
|
|
57
|
+
|
|
58
|
+
for ( var i = 0; i <= order; ++i) {
|
|
59
|
+
denom[i] = stepN;
|
|
60
|
+
xTable[i] = i * this._stepSizeDays;
|
|
61
|
+
|
|
62
|
+
for ( var j = 0; j <= order; ++j) {
|
|
63
|
+
if (j !== i) {
|
|
64
|
+
denom[i] *= (i - j);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
denom[i] = 1.0 / denom[i];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Allocate scratch arrays for interpolation.
|
|
72
|
+
this._work = new Array(order + 1);
|
|
73
|
+
this._coef = new Array(order + 1);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
var julianDateScratch = new JulianDate(0, 0.0, TimeStandard.TAI);
|
|
77
|
+
|
|
78
|
+
function getDaysSinceEpoch(xys, dayTT, secondTT) {
|
|
79
|
+
var dateTT = julianDateScratch;
|
|
80
|
+
dateTT._julianDayNumber = dayTT;
|
|
81
|
+
dateTT._secondsOfDay = secondTT;
|
|
82
|
+
return xys._sampleZeroDateTT.getDaysDifference(dateTT);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Preloads XYS data for a specified date range.
|
|
87
|
+
*
|
|
88
|
+
* @memberof Iau2006XysData
|
|
89
|
+
*
|
|
90
|
+
* @param {Number} startDayTT The Julian day number of the beginning of the interval to preload, expressed in
|
|
91
|
+
* the Terrestrial Time (TT) time standard.
|
|
92
|
+
* @param {Number} startSecondTT The seconds past noon of the beginning of the interval to preload, expressed in
|
|
93
|
+
* the Terrestrial Time (TT) time standard.
|
|
94
|
+
* @param {Number} stopDayTT The Julian day number of the end of the interval to preload, expressed in
|
|
95
|
+
* the Terrestrial Time (TT) time standard.
|
|
96
|
+
* @param {Number} stopSecondTT The seconds past noon of the end of the interval to preload, expressed in
|
|
97
|
+
* the Terrestrial Time (TT) time standard.
|
|
98
|
+
|
|
99
|
+
* @returns {Promise} A promise that, when resolved, indicates that the requested interval has been
|
|
100
|
+
* preloaded.
|
|
101
|
+
*/
|
|
102
|
+
Iau2006XysData.prototype.preload = function(startDayTT, startSecondTT, stopDayTT, stopSecondTT) {
|
|
103
|
+
var startDaysSinceEpoch = getDaysSinceEpoch(this, startDayTT, startSecondTT);
|
|
104
|
+
var stopDaysSinceEpoch = getDaysSinceEpoch(this, stopDayTT, stopSecondTT);
|
|
105
|
+
|
|
106
|
+
var startIndex = (startDaysSinceEpoch / this._stepSizeDays - this._interpolationOrder / 2) | 0;
|
|
107
|
+
if (startIndex < 0) {
|
|
108
|
+
startIndex = 0;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
var stopIndex = (stopDaysSinceEpoch / this._stepSizeDays - this._interpolationOrder / 2) | 0 + this._interpolationOrder;
|
|
112
|
+
if (stopIndex >= this._totalSamples) {
|
|
113
|
+
stopIndex = this._totalSamples - 1;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
var startChunk = (startIndex / this._samplesPerXysFile) | 0;
|
|
117
|
+
var stopChunk = (stopIndex / this._samplesPerXysFile) | 0;
|
|
118
|
+
|
|
119
|
+
var promises = [];
|
|
120
|
+
for ( var i = startChunk; i <= stopChunk; ++i) {
|
|
121
|
+
promises.push(requestXysChunk(this, i));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return when.all(promises);
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Computes the XYS values for a given date by interpolating. If the required data is not yet downloaded,
|
|
129
|
+
* this method will return undefined.
|
|
130
|
+
*
|
|
131
|
+
* @memberof Iau2006XysData
|
|
132
|
+
*
|
|
133
|
+
* @param {Number} dayTT The Julian day number for which to compute the XYS value, expressed in
|
|
134
|
+
* the Terrestrial Time (TT) time standard.
|
|
135
|
+
* @param {Number} secondTT The seconds past noon of the date for which to compute the XYS value, expressed in
|
|
136
|
+
* the Terrestrial Time (TT) time standard.
|
|
137
|
+
* @param {Iau2006XysSample} [result] The instance to which to copy the interpolated result. If this parameter
|
|
138
|
+
* is undefined, a new instance is allocated and returned.
|
|
139
|
+
* @returns {Iau2006XysSample} The interpolated XYS values, or undefined if the required data for this
|
|
140
|
+
* computation has not yet been downloaded.
|
|
141
|
+
*
|
|
142
|
+
* @see Iau2006XysData#preload
|
|
143
|
+
*/
|
|
144
|
+
Iau2006XysData.prototype.computeXysRadians = function(dayTT, secondTT, result) {
|
|
145
|
+
var daysSinceEpoch = getDaysSinceEpoch(this, dayTT, secondTT);
|
|
146
|
+
if (daysSinceEpoch < 0.0) {
|
|
147
|
+
// Can't evaluate prior to the epoch of the data.
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
var centerIndex = (daysSinceEpoch / this._stepSizeDays) | 0;
|
|
152
|
+
if (centerIndex >= this._totalSamples) {
|
|
153
|
+
// Can't evaluate after the last sample in the data.
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
var degree = this._interpolationOrder;
|
|
158
|
+
|
|
159
|
+
var firstIndex = centerIndex - ((degree / 2) | 0);
|
|
160
|
+
if (firstIndex < 0) {
|
|
161
|
+
firstIndex = 0;
|
|
162
|
+
}
|
|
163
|
+
var lastIndex = firstIndex + degree;
|
|
164
|
+
if (lastIndex >= this._totalSamples) {
|
|
165
|
+
lastIndex = this._totalSamples - 1;
|
|
166
|
+
firstIndex = lastIndex - degree;
|
|
167
|
+
if (firstIndex < 0) {
|
|
168
|
+
firstIndex = 0;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Are all the samples we need present?
|
|
173
|
+
// We can assume so if the first and last are present
|
|
174
|
+
var isDataMissing = false;
|
|
175
|
+
var samples = this._samples;
|
|
176
|
+
if (typeof samples[firstIndex * 3] === 'undefined') {
|
|
177
|
+
requestXysChunk(this, (firstIndex / this._samplesPerXysFile) | 0);
|
|
178
|
+
isDataMissing = true;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (typeof samples[lastIndex * 3] === 'undefined') {
|
|
182
|
+
requestXysChunk(this, (lastIndex / this._samplesPerXysFile) | 0);
|
|
183
|
+
isDataMissing = true;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (isDataMissing) {
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if (typeof result === 'undefined') {
|
|
191
|
+
result = new Iau2006XysSample(0.0, 0.0, 0.0);
|
|
192
|
+
} else {
|
|
193
|
+
result.x = 0.0;
|
|
194
|
+
result.y = 0.0;
|
|
195
|
+
result.s = 0.0;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
var x = daysSinceEpoch - firstIndex * this._stepSizeDays;
|
|
199
|
+
|
|
200
|
+
var work = this._work;
|
|
201
|
+
var denom = this._denominators;
|
|
202
|
+
var coef = this._coef;
|
|
203
|
+
var xTable = this._xTable;
|
|
204
|
+
|
|
205
|
+
var i, j;
|
|
206
|
+
for (i = 0; i <= degree; ++i) {
|
|
207
|
+
work[i] = x - xTable[i];
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
for (i = 0; i <= degree; ++i) {
|
|
211
|
+
coef[i] = 1.0;
|
|
212
|
+
|
|
213
|
+
for (j = 0; j <= degree; ++j) {
|
|
214
|
+
if (j !== i) {
|
|
215
|
+
coef[i] *= work[j];
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
coef[i] *= denom[i];
|
|
220
|
+
|
|
221
|
+
var sampleIndex = (firstIndex + i) * 3;
|
|
222
|
+
result.x += coef[i] * samples[sampleIndex++];
|
|
223
|
+
result.y += coef[i] * samples[sampleIndex++];
|
|
224
|
+
result.s += coef[i] * samples[sampleIndex];
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
return result;
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
function requestXysChunk(xysData, chunkIndex) {
|
|
231
|
+
if (xysData._chunkDownloadsInProgress[chunkIndex]) {
|
|
232
|
+
// Chunk has already been requested.
|
|
233
|
+
return xysData._chunkDownloadsInProgress[chunkIndex];
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
var deferred = when.defer();
|
|
237
|
+
|
|
238
|
+
xysData._chunkDownloadsInProgress[chunkIndex] = deferred;
|
|
239
|
+
|
|
240
|
+
var chunkUrl = xysData._xysFileUrlTemplate.replace('{0}', chunkIndex);
|
|
241
|
+
when(loadJson(chunkUrl), function(chunk) {
|
|
242
|
+
xysData._chunkDownloadsInProgress[chunkIndex] = false;
|
|
243
|
+
|
|
244
|
+
var samples = xysData._samples;
|
|
245
|
+
var newSamples = chunk.samples;
|
|
246
|
+
var startIndex = chunkIndex * xysData._samplesPerXysFile * 3;
|
|
247
|
+
|
|
248
|
+
for ( var i = 0, len = newSamples.length; i < len; ++i) {
|
|
249
|
+
samples[startIndex + i] = newSamples[i];
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
deferred.resolve();
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
return deferred.promise;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return Iau2006XysData;
|
|
259
|
+
});
|