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,31 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define(function() {
|
|
3
|
+
"use strict";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Provides the type of time standards which JulianDate can take as input.
|
|
7
|
+
*
|
|
8
|
+
* @exports TimeStandard
|
|
9
|
+
*
|
|
10
|
+
* @see JulianDate
|
|
11
|
+
*/
|
|
12
|
+
var TimeStandard = {
|
|
13
|
+
/**
|
|
14
|
+
* Represents the coordinated Universal Time (UTC) time standard.
|
|
15
|
+
*
|
|
16
|
+
* UTC is related to TAI according to the relationship
|
|
17
|
+
* <code>UTC = TAI - deltaT</code> where <code>deltaT</code> is the number of leap
|
|
18
|
+
* seconds which have been introduced as of the time in TAI.
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
UTC : 0,
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Represents the International Atomic Time (TAI) time standard.
|
|
25
|
+
* TAI is the principal time standard to which the other time standards are related.
|
|
26
|
+
*/
|
|
27
|
+
TAI : 1
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return TimeStandard;
|
|
31
|
+
});
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define(['./DeveloperError'], function(DeveloperError) {
|
|
3
|
+
"use strict";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Encapsulates an algorithm to optimize triangles for the post
|
|
7
|
+
* vertex-shader cache. This is based on the 2007 SIGGRAPH paper
|
|
8
|
+
* 'Fast Triangle Reordering for Vertex Locality and Reduced Overdraw.'
|
|
9
|
+
* The runtime is linear but several passes are made.
|
|
10
|
+
*
|
|
11
|
+
* @exports Tipsify
|
|
12
|
+
*
|
|
13
|
+
* @see <a href='http://gfx.cs.princeton.edu/pubs/Sander_2007_%3ETR/tipsy.pdf'>
|
|
14
|
+
* Fast Triangle Reordering for Vertex Locality and Reduced Overdraw</a>
|
|
15
|
+
* by Sander, Nehab, and Barczak
|
|
16
|
+
*/
|
|
17
|
+
var Tipsify = {};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Calculates the average cache miss ratio (ACMR) for a given set of indices.
|
|
21
|
+
*
|
|
22
|
+
* @param {Array} description.indices Lists triads of numbers corresponding to the indices of the vertices
|
|
23
|
+
* in the vertex buffer that define the mesh's triangles.
|
|
24
|
+
* @param {Number} [description.maximumIndex] The maximum value of the elements in <code>args.indices</code>.
|
|
25
|
+
* If not supplied, this value will be computed.
|
|
26
|
+
* @param {Number} [description.cacheSize=24] The number of vertices that can be stored in the cache at any one time.
|
|
27
|
+
*
|
|
28
|
+
* @exception {DeveloperError} indices is required.
|
|
29
|
+
* @exception {DeveloperError} indices length must be a multiple of three.
|
|
30
|
+
* @exception {DeveloperError} cacheSize must be greater than two.
|
|
31
|
+
*
|
|
32
|
+
* @return {Number} The average cache miss ratio (ACMR).
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* var indices = [0, 1, 2, 3, 4, 5];
|
|
36
|
+
* var maxIndex = 5;
|
|
37
|
+
* var cacheSize = 3;
|
|
38
|
+
* var acmr = Tipsify.calculateACMR(indices, maxIndex, cacheSize);
|
|
39
|
+
*/
|
|
40
|
+
Tipsify.calculateACMR = function(description) {
|
|
41
|
+
description = description || {};
|
|
42
|
+
var indices = description.indices;
|
|
43
|
+
var maximumIndex = description.maximumIndex;
|
|
44
|
+
var cacheSize = description.cacheSize || 24;
|
|
45
|
+
|
|
46
|
+
if (!indices) {
|
|
47
|
+
throw new DeveloperError('indices is required.');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
var numIndices = indices.length;
|
|
51
|
+
|
|
52
|
+
if ((numIndices < 3) || (numIndices % 3 !== 0)) {
|
|
53
|
+
throw new DeveloperError('indices length must be a multiple of three.');
|
|
54
|
+
}
|
|
55
|
+
if (maximumIndex <= 0) {
|
|
56
|
+
throw new DeveloperError('maximumIndex must be greater than zero.');
|
|
57
|
+
}
|
|
58
|
+
if (cacheSize < 3) {
|
|
59
|
+
throw new DeveloperError('cacheSize must be greater than two.');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Compute the maximumIndex if not given
|
|
63
|
+
if(!maximumIndex) {
|
|
64
|
+
maximumIndex = 0;
|
|
65
|
+
var currentIndex = 0;
|
|
66
|
+
var intoIndices = indices[currentIndex];
|
|
67
|
+
while (currentIndex < numIndices) {
|
|
68
|
+
if (intoIndices > maximumIndex) {
|
|
69
|
+
maximumIndex = intoIndices;
|
|
70
|
+
}
|
|
71
|
+
++currentIndex;
|
|
72
|
+
intoIndices = indices[currentIndex];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Vertex time stamps
|
|
77
|
+
var vertexTimeStamps = [];
|
|
78
|
+
for ( var i = 0; i < maximumIndex + 1; i++) {
|
|
79
|
+
vertexTimeStamps[i] = 0;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Cache processing
|
|
83
|
+
var s = cacheSize + 1;
|
|
84
|
+
for ( var j = 0; j < numIndices; ++j) {
|
|
85
|
+
if ((s - vertexTimeStamps[indices[j]]) > cacheSize) {
|
|
86
|
+
vertexTimeStamps[indices[j]] = s;
|
|
87
|
+
++s;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return (s - cacheSize + 1) / (numIndices / 3);
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Optimizes triangles for the post-vertex shader cache.
|
|
96
|
+
*
|
|
97
|
+
* @param {Array} description.indices Lists triads of numbers corresponding to the indices of the vertices
|
|
98
|
+
* in the vertex buffer that define the mesh's triangles.
|
|
99
|
+
* @param {Number} [description.maximumIndex] The maximum value of the elements in <code>args.indices</code>.
|
|
100
|
+
* If not supplied, this value will be computed.
|
|
101
|
+
* @param {Number} [description.cacheSize=24] The number of vertices that can be stored in the cache at any one time.
|
|
102
|
+
*
|
|
103
|
+
* @exception {DeveloperError} indices is required.
|
|
104
|
+
* @exception {DeveloperError} indices length must be a multiple of three.
|
|
105
|
+
* @exception {DeveloperError} cacheSize must be greater than two.
|
|
106
|
+
*
|
|
107
|
+
* @return {Array} A list of the input indices in an optimized order.
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* var indices = [0, 1, 2, 3, 4, 5];
|
|
111
|
+
* var maxIndex = 5;
|
|
112
|
+
* var cacheSize = 3;
|
|
113
|
+
* var reorderedIndices = Tipsify.tipsify(indices, maxIndex, cacheSize);
|
|
114
|
+
*/
|
|
115
|
+
Tipsify.tipsify = function(description) {
|
|
116
|
+
description = description || {};
|
|
117
|
+
var indices = description.indices;
|
|
118
|
+
var maximumIndex = description.maximumIndex;
|
|
119
|
+
var cacheSize = description.cacheSize || 24;
|
|
120
|
+
|
|
121
|
+
var cursor;
|
|
122
|
+
|
|
123
|
+
function skipDeadEnd(vertices, deadEnd, indices, maximumIndexPlusOne) {
|
|
124
|
+
while (deadEnd.length >= 1) {
|
|
125
|
+
// while the stack is not empty
|
|
126
|
+
var d = deadEnd[deadEnd.length - 1]; // top of the stack
|
|
127
|
+
deadEnd.splice(deadEnd.length - 1, 1); // pop the stack
|
|
128
|
+
|
|
129
|
+
if (vertices[d].numLiveTriangles > 0) {
|
|
130
|
+
return d;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
while (cursor < maximumIndexPlusOne) {
|
|
135
|
+
if (vertices[cursor].numLiveTriangles > 0) {
|
|
136
|
+
++cursor;
|
|
137
|
+
return cursor - 1;
|
|
138
|
+
}
|
|
139
|
+
++cursor;
|
|
140
|
+
}
|
|
141
|
+
return -1;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function getNextVertex(indices, cacheSize, oneRing, vertices, s, deadEnd, maximumIndexPlusOne) {
|
|
145
|
+
var n = -1;
|
|
146
|
+
var p;
|
|
147
|
+
var m = -1;
|
|
148
|
+
var itOneRing = 0;
|
|
149
|
+
while (itOneRing < oneRing.length) {
|
|
150
|
+
var index = oneRing[itOneRing];
|
|
151
|
+
if (vertices[index].numLiveTriangles) {
|
|
152
|
+
p = 0;
|
|
153
|
+
if ((s - vertices[index].timeStamp + (2 * vertices[index].numLiveTriangles)) <= cacheSize) {
|
|
154
|
+
p = s - vertices[index].timeStamp;
|
|
155
|
+
}
|
|
156
|
+
if ((p > m) || (m === -1)) {
|
|
157
|
+
m = p;
|
|
158
|
+
n = index;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
++itOneRing;
|
|
162
|
+
}
|
|
163
|
+
if (n === -1) {
|
|
164
|
+
return skipDeadEnd(vertices, deadEnd, indices, maximumIndexPlusOne);
|
|
165
|
+
}
|
|
166
|
+
return n;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (!indices) {
|
|
170
|
+
throw new DeveloperError('indices is required.');
|
|
171
|
+
}
|
|
172
|
+
var numIndices = indices.length;
|
|
173
|
+
|
|
174
|
+
if ((numIndices < 3) || (numIndices % 3 !== 0)) {
|
|
175
|
+
throw new DeveloperError('indices length must be a multiple of three.');
|
|
176
|
+
}
|
|
177
|
+
if (maximumIndex <= 0) {
|
|
178
|
+
throw new DeveloperError('maximumIndex must be greater than zero.');
|
|
179
|
+
}
|
|
180
|
+
if (cacheSize < 3) {
|
|
181
|
+
throw new DeveloperError('cacheSize must be greater than two.');
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Determine maximum index
|
|
185
|
+
var maximumIndexPlusOne = 0;
|
|
186
|
+
var currentIndex = 0;
|
|
187
|
+
var intoIndices = indices[currentIndex];
|
|
188
|
+
var endIndex = numIndices;
|
|
189
|
+
if (maximumIndex) {
|
|
190
|
+
maximumIndexPlusOne = maximumIndex + 1;
|
|
191
|
+
} else {
|
|
192
|
+
while (currentIndex < endIndex) {
|
|
193
|
+
if (intoIndices > maximumIndexPlusOne) {
|
|
194
|
+
maximumIndexPlusOne = intoIndices;
|
|
195
|
+
}
|
|
196
|
+
++currentIndex;
|
|
197
|
+
intoIndices = indices[currentIndex];
|
|
198
|
+
}
|
|
199
|
+
if (maximumIndexPlusOne === -1) {
|
|
200
|
+
return 0;
|
|
201
|
+
}
|
|
202
|
+
++maximumIndexPlusOne;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Vertices
|
|
206
|
+
var vertices = [];
|
|
207
|
+
for ( var i = 0; i < maximumIndexPlusOne; i++) {
|
|
208
|
+
vertices[i] = {
|
|
209
|
+
numLiveTriangles : 0,
|
|
210
|
+
timeStamp : 0,
|
|
211
|
+
vertexTriangles : []
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
currentIndex = 0;
|
|
215
|
+
var triangle = 0;
|
|
216
|
+
while (currentIndex < endIndex) {
|
|
217
|
+
(vertices[indices[currentIndex]]).vertexTriangles.push(triangle);
|
|
218
|
+
++(vertices[indices[currentIndex]]).numLiveTriangles;
|
|
219
|
+
(vertices[indices[currentIndex + 1]]).vertexTriangles.push(triangle);
|
|
220
|
+
++(vertices[indices[currentIndex + 1]]).numLiveTriangles;
|
|
221
|
+
(vertices[indices[currentIndex + 2]]).vertexTriangles.push(triangle);
|
|
222
|
+
++(vertices[indices[currentIndex + 2]]).numLiveTriangles;
|
|
223
|
+
++triangle;
|
|
224
|
+
currentIndex += 3;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Starting index
|
|
228
|
+
var f = 0;
|
|
229
|
+
|
|
230
|
+
// Time Stamp
|
|
231
|
+
var s = cacheSize + 1;
|
|
232
|
+
cursor = 1;
|
|
233
|
+
|
|
234
|
+
// Process
|
|
235
|
+
var oneRing = [];
|
|
236
|
+
var deadEnd = []; //Stack
|
|
237
|
+
var vertex;
|
|
238
|
+
var intoVertices;
|
|
239
|
+
var currentOutputIndex = 0;
|
|
240
|
+
var outputIndices = [];
|
|
241
|
+
var numTriangles = numIndices / 3;
|
|
242
|
+
var triangleEmitted = [];
|
|
243
|
+
for (i = 0; i < numTriangles; i++) {
|
|
244
|
+
triangleEmitted[i] = false;
|
|
245
|
+
}
|
|
246
|
+
var index;
|
|
247
|
+
var limit;
|
|
248
|
+
while (f !== -1) {
|
|
249
|
+
oneRing = [];
|
|
250
|
+
intoVertices = vertices[f];
|
|
251
|
+
limit = intoVertices.vertexTriangles.length;
|
|
252
|
+
for ( var k = 0; k < limit; ++k) {
|
|
253
|
+
triangle = intoVertices.vertexTriangles[k];
|
|
254
|
+
if (!triangleEmitted[triangle]) {
|
|
255
|
+
triangleEmitted[triangle] = true;
|
|
256
|
+
currentIndex = triangle + triangle + triangle;
|
|
257
|
+
for ( var j = 0; j < 3; ++j) {
|
|
258
|
+
// Set this index as a possible next index
|
|
259
|
+
index = indices[currentIndex];
|
|
260
|
+
oneRing.push(index);
|
|
261
|
+
deadEnd.push(index);
|
|
262
|
+
|
|
263
|
+
// Output index
|
|
264
|
+
outputIndices[currentOutputIndex] = index;
|
|
265
|
+
++currentOutputIndex;
|
|
266
|
+
|
|
267
|
+
// Cache processing
|
|
268
|
+
vertex = vertices[index];
|
|
269
|
+
--vertex.numLiveTriangles;
|
|
270
|
+
if ((s - vertex.timeStamp) > cacheSize) {
|
|
271
|
+
vertex.timeStamp = s;
|
|
272
|
+
++s;
|
|
273
|
+
}
|
|
274
|
+
++currentIndex;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
f = getNextVertex(indices, cacheSize, oneRing, vertices, s, deadEnd, maximumIndexPlusOne);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
return outputIndices;
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
return Tipsify;
|
|
285
|
+
});
|
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'./defaultValue',
|
|
4
|
+
'./DeveloperError',
|
|
5
|
+
'./Iau2006XysData',
|
|
6
|
+
'./Iau2006XysSample',
|
|
7
|
+
'./Math',
|
|
8
|
+
'./Matrix3',
|
|
9
|
+
'./Matrix4',
|
|
10
|
+
'./Cartesian2',
|
|
11
|
+
'./Cartesian3',
|
|
12
|
+
'./Cartesian4',
|
|
13
|
+
'./TimeConstants',
|
|
14
|
+
'./Ellipsoid',
|
|
15
|
+
'./JulianDate',
|
|
16
|
+
'./EarthOrientationParameters',
|
|
17
|
+
'./EarthOrientationParametersSample',
|
|
18
|
+
'../ThirdParty/when'
|
|
19
|
+
],
|
|
20
|
+
function(
|
|
21
|
+
defaultValue,
|
|
22
|
+
DeveloperError,
|
|
23
|
+
Iau2006XysData,
|
|
24
|
+
Iau2006XysSample,
|
|
25
|
+
CesiumMath,
|
|
26
|
+
Matrix3,
|
|
27
|
+
Matrix4,
|
|
28
|
+
Cartesian2,
|
|
29
|
+
Cartesian3,
|
|
30
|
+
Cartesian4,
|
|
31
|
+
TimeConstants,
|
|
32
|
+
Ellipsoid,
|
|
33
|
+
JulianDate,
|
|
34
|
+
EarthOrientationParameters,
|
|
35
|
+
EarthOrientationParametersSample,
|
|
36
|
+
when) {
|
|
37
|
+
"use strict";
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Contains functions for transforming positions to various reference frames.
|
|
41
|
+
* @alias Transforms
|
|
42
|
+
*/
|
|
43
|
+
var Transforms = {};
|
|
44
|
+
|
|
45
|
+
var eastNorthUpToFixedFrameNormal = new Cartesian3();
|
|
46
|
+
var eastNorthUpToFixedFrameTangent = new Cartesian3();
|
|
47
|
+
var eastNorthUpToFixedFrameBitangent = new Cartesian3();
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Computes a 4x4 transformation matrix from a reference frame with an east-north-up axes
|
|
51
|
+
* centered at the provided origin to the provided ellipsoid's fixed reference frame.
|
|
52
|
+
* The local axes are defined as:
|
|
53
|
+
* <ul>
|
|
54
|
+
* <li>The <code>x</code> axis points in the local east direction.</li>
|
|
55
|
+
* <li>The <code>y</code> axis points in the local north direction.</li>
|
|
56
|
+
* <li>The <code>z</code> axis points in the direction of the ellipsoid surface normal which passes through the position.</li>
|
|
57
|
+
* </ul>
|
|
58
|
+
*
|
|
59
|
+
* @memberof Transforms
|
|
60
|
+
*
|
|
61
|
+
* @param {Cartesian3} origin The center point of the local reference frame.
|
|
62
|
+
* @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid whose fixed frame is used in the transformation.
|
|
63
|
+
* @param {Matrix4} [result] The object onto which to store the result.
|
|
64
|
+
* @return {Matrix4} The modified result parameter or a new Matrix4 instance if none was provided.
|
|
65
|
+
*
|
|
66
|
+
* @exception {DeveloperError} origin is required.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* // Get the transform from local east-north-up at cartographic (0.0, 0.0) to Earth's fixed frame.
|
|
70
|
+
* var ellipsoid = Ellipsoid.WGS84;
|
|
71
|
+
* var center = ellipsoid.cartographicToCartesian(Cartographic.ZERO);
|
|
72
|
+
* var transform = Transforms.eastNorthUpToFixedFrame(center);
|
|
73
|
+
*/
|
|
74
|
+
Transforms.eastNorthUpToFixedFrame = function(origin, ellipsoid, result) {
|
|
75
|
+
if (typeof origin === 'undefined') {
|
|
76
|
+
throw new DeveloperError('origin is required.');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// If x and y are zero, assume origin is at a pole, which is a special case.
|
|
80
|
+
if (CesiumMath.equalsEpsilon(origin.x, 0.0, CesiumMath.EPSILON14) &&
|
|
81
|
+
CesiumMath.equalsEpsilon(origin.y, 0.0, CesiumMath.EPSILON14)) {
|
|
82
|
+
var sign = CesiumMath.sign(origin.z);
|
|
83
|
+
if (typeof result === 'undefined') {
|
|
84
|
+
return new Matrix4(
|
|
85
|
+
0.0, -sign, 0.0, origin.x,
|
|
86
|
+
1.0, 0.0, 0.0, origin.y,
|
|
87
|
+
0.0, 0.0, sign, origin.z,
|
|
88
|
+
0.0, 0.0, 0.0, 1.0);
|
|
89
|
+
}
|
|
90
|
+
result[0] = 0.0;
|
|
91
|
+
result[1] = 1.0;
|
|
92
|
+
result[2] = 0.0;
|
|
93
|
+
result[3] = 0.0;
|
|
94
|
+
result[4] = -sign;
|
|
95
|
+
result[5] = 0.0;
|
|
96
|
+
result[6] = 0.0;
|
|
97
|
+
result[7] = 0.0;
|
|
98
|
+
result[8] = 0.0;
|
|
99
|
+
result[9] = 0.0;
|
|
100
|
+
result[10] = sign;
|
|
101
|
+
result[11] = 0.0;
|
|
102
|
+
result[12] = origin.x;
|
|
103
|
+
result[13] = origin.y;
|
|
104
|
+
result[14] = origin.z;
|
|
105
|
+
result[15] = 1.0;
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
var normal = eastNorthUpToFixedFrameNormal;
|
|
110
|
+
var tangent = eastNorthUpToFixedFrameTangent;
|
|
111
|
+
var bitangent = eastNorthUpToFixedFrameBitangent;
|
|
112
|
+
|
|
113
|
+
ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);
|
|
114
|
+
ellipsoid.geodeticSurfaceNormal(origin, normal);
|
|
115
|
+
|
|
116
|
+
tangent.x = -origin.y;
|
|
117
|
+
tangent.y = origin.x;
|
|
118
|
+
tangent.z = 0.0;
|
|
119
|
+
Cartesian3.normalize(tangent, tangent);
|
|
120
|
+
|
|
121
|
+
normal.cross(tangent, bitangent);
|
|
122
|
+
|
|
123
|
+
if (typeof result === 'undefined') {
|
|
124
|
+
return new Matrix4(
|
|
125
|
+
tangent.x, bitangent.x, normal.x, origin.x,
|
|
126
|
+
tangent.y, bitangent.y, normal.y, origin.y,
|
|
127
|
+
tangent.z, bitangent.z, normal.z, origin.z,
|
|
128
|
+
0.0, 0.0, 0.0, 1.0);
|
|
129
|
+
}
|
|
130
|
+
result[0] = tangent.x;
|
|
131
|
+
result[1] = tangent.y;
|
|
132
|
+
result[2] = tangent.z;
|
|
133
|
+
result[3] = 0.0;
|
|
134
|
+
result[4] = bitangent.x;
|
|
135
|
+
result[5] = bitangent.y;
|
|
136
|
+
result[6] = bitangent.z;
|
|
137
|
+
result[7] = 0.0;
|
|
138
|
+
result[8] = normal.x;
|
|
139
|
+
result[9] = normal.y;
|
|
140
|
+
result[10] = normal.z;
|
|
141
|
+
result[11] = 0.0;
|
|
142
|
+
result[12] = origin.x;
|
|
143
|
+
result[13] = origin.y;
|
|
144
|
+
result[14] = origin.z;
|
|
145
|
+
result[15] = 1.0;
|
|
146
|
+
return result;
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
var northEastDownToFixedFrameNormal = new Cartesian3();
|
|
150
|
+
var northEastDownToFixedFrameTangent = new Cartesian3();
|
|
151
|
+
var northEastDownToFixedFrameBitangent = new Cartesian3();
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Computes a 4x4 transformation matrix from a reference frame with an north-east-down axes
|
|
155
|
+
* centered at the provided origin to the provided ellipsoid's fixed reference frame.
|
|
156
|
+
* The local axes are defined as:
|
|
157
|
+
* <ul>
|
|
158
|
+
* <li>The <code>x</code> axis points in the local north direction.</li>
|
|
159
|
+
* <li>The <code>y</code> axis points in the local east direction.</li>
|
|
160
|
+
* <li>The <code>z</code> axis points in the opposite direction of the ellipsoid surface normal which passes through the position.</li>
|
|
161
|
+
* </ul>
|
|
162
|
+
*
|
|
163
|
+
* @memberof Transforms
|
|
164
|
+
*
|
|
165
|
+
* @param {Cartesian3} origin The center point of the local reference frame.
|
|
166
|
+
* @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid whose fixed frame is used in the transformation.
|
|
167
|
+
* @param {Matrix4} [result] The object onto which to store the result.
|
|
168
|
+
* @return {Matrix4} The modified result parameter or a new Matrix4 instance if none was provided.
|
|
169
|
+
*
|
|
170
|
+
* @exception {DeveloperError} origin is required.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* // Get the transform from local north-east-down at cartographic (0.0, 0.0) to Earth's fixed frame.
|
|
174
|
+
* var ellipsoid = Ellipsoid.WGS84;
|
|
175
|
+
* var center = ellipsoid.cartographicToCartesian(Cartographic.ZERO);
|
|
176
|
+
* var transform = Transforms.northEastDownToFixedFrame(center);
|
|
177
|
+
*/
|
|
178
|
+
Transforms.northEastDownToFixedFrame = function(origin, ellipsoid, result) {
|
|
179
|
+
if (typeof origin === 'undefined') {
|
|
180
|
+
throw new DeveloperError('origin is required.');
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (CesiumMath.equalsEpsilon(origin.x, 0.0, CesiumMath.EPSILON14) &&
|
|
184
|
+
CesiumMath.equalsEpsilon(origin.y, 0.0, CesiumMath.EPSILON14)) {
|
|
185
|
+
// The poles are special cases. If x and y are zero, assume origin is at a pole.
|
|
186
|
+
var sign = CesiumMath.sign(origin.z);
|
|
187
|
+
if (typeof result === 'undefined') {
|
|
188
|
+
return new Matrix4(
|
|
189
|
+
-sign, 0.0, 0.0, origin.x,
|
|
190
|
+
0.0, 1.0, 0.0, origin.y,
|
|
191
|
+
0.0, 0.0, -sign, origin.z,
|
|
192
|
+
0.0, 0.0, 0.0, 1.0);
|
|
193
|
+
}
|
|
194
|
+
result[0] = -sign;
|
|
195
|
+
result[1] = 0.0;
|
|
196
|
+
result[2] = 0.0;
|
|
197
|
+
result[3] = 0.0;
|
|
198
|
+
result[4] = 0.0;
|
|
199
|
+
result[5] = 1.0;
|
|
200
|
+
result[6] = 0.0;
|
|
201
|
+
result[7] = 0.0;
|
|
202
|
+
result[8] = 0.0;
|
|
203
|
+
result[9] = 0.0;
|
|
204
|
+
result[10] = -sign;
|
|
205
|
+
result[11] = 0.0;
|
|
206
|
+
result[12] = origin.x;
|
|
207
|
+
result[13] = origin.y;
|
|
208
|
+
result[14] = origin.z;
|
|
209
|
+
result[15] = 1.0;
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
var normal = northEastDownToFixedFrameNormal;
|
|
214
|
+
var tangent = northEastDownToFixedFrameTangent;
|
|
215
|
+
var bitangent = northEastDownToFixedFrameBitangent;
|
|
216
|
+
|
|
217
|
+
ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);
|
|
218
|
+
ellipsoid.geodeticSurfaceNormal(origin, normal);
|
|
219
|
+
|
|
220
|
+
tangent.x = -origin.y;
|
|
221
|
+
tangent.y = origin.x;
|
|
222
|
+
tangent.z = 0.0;
|
|
223
|
+
Cartesian3.normalize(tangent, tangent);
|
|
224
|
+
|
|
225
|
+
normal.cross(tangent, bitangent);
|
|
226
|
+
|
|
227
|
+
if (typeof result === 'undefined') {
|
|
228
|
+
return new Matrix4(
|
|
229
|
+
bitangent.x, tangent.x, -normal.x, origin.x,
|
|
230
|
+
bitangent.y, tangent.y, -normal.y, origin.y,
|
|
231
|
+
bitangent.z, tangent.z, -normal.z, origin.z,
|
|
232
|
+
0.0, 0.0, 0.0, 1.0);
|
|
233
|
+
}
|
|
234
|
+
result[0] = bitangent.x;
|
|
235
|
+
result[1] = bitangent.y;
|
|
236
|
+
result[2] = bitangent.z;
|
|
237
|
+
result[3] = 0.0;
|
|
238
|
+
result[4] = tangent.x;
|
|
239
|
+
result[5] = tangent.y;
|
|
240
|
+
result[6] = tangent.z;
|
|
241
|
+
result[7] = 0.0;
|
|
242
|
+
result[8] = -normal.x;
|
|
243
|
+
result[9] = -normal.y;
|
|
244
|
+
result[10] = -normal.z;
|
|
245
|
+
result[11] = 0.0;
|
|
246
|
+
result[12] = origin.x;
|
|
247
|
+
result[13] = origin.y;
|
|
248
|
+
result[14] = origin.z;
|
|
249
|
+
result[15] = 1.0;
|
|
250
|
+
return result;
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
var gmstConstant0 = 6 * 3600 + 41 * 60 + 50.54841;
|
|
254
|
+
var gmstConstant1 = 8640184.812866;
|
|
255
|
+
var gmstConstant2 = 0.093104;
|
|
256
|
+
var gmstConstant3 = -6.2E-6;
|
|
257
|
+
var rateCoef = 1.1772758384668e-19;
|
|
258
|
+
var wgs84WRPrecessing = 7.2921158553E-5;
|
|
259
|
+
var twoPiOverSecondsInDay = CesiumMath.TWO_PI / 86400.0;
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Computes a rotation matrix to transform a point or vector from True Equator Mean Equinox (TEME) axes to the
|
|
263
|
+
* pseudo-fixed axes at a given time. This method treats the UT1 time standard as equivalent to UTC.
|
|
264
|
+
*
|
|
265
|
+
* @memberof Transforms
|
|
266
|
+
*
|
|
267
|
+
* @param {JulianDate} date The time at which to compute the rotation matrix.
|
|
268
|
+
* @param {Matrix3} [result] The object onto which to store the result.
|
|
269
|
+
* @return {Matrix3} The modified result parameter or a new Matrix3 instance if none was provided.
|
|
270
|
+
*
|
|
271
|
+
* @exception {DeveloperError} date is required.
|
|
272
|
+
*
|
|
273
|
+
* @example
|
|
274
|
+
* //Set the view to in the inertial frame.
|
|
275
|
+
* function updateAndRender() {
|
|
276
|
+
* var now = new JulianDate();
|
|
277
|
+
* scene.initializeFrame();
|
|
278
|
+
* scene.setSunPosition(computeSunPosition(now));
|
|
279
|
+
* scene.getCamera().transform = Matrix4.fromRotationTranslation(Transforms.computeTemeToPseudoFixedMatrix(now), Cartesian3.ZERO);
|
|
280
|
+
* scene.render();
|
|
281
|
+
* requestAnimationFrame(updateAndRender);
|
|
282
|
+
* }
|
|
283
|
+
* updateAndRender();
|
|
284
|
+
*/
|
|
285
|
+
Transforms.computeTemeToPseudoFixedMatrix = function (date, result) {
|
|
286
|
+
if (typeof date === 'undefined') {
|
|
287
|
+
throw new DeveloperError('date is required.');
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// GMST is actually computed using UT1. We're using UTC as an approximation of UT1.
|
|
291
|
+
// We do not want to use the function like convertTaiToUtc in JulianDate because
|
|
292
|
+
// we explicitly do not want to fail when inside the leap second.
|
|
293
|
+
|
|
294
|
+
var dateInUtc = date.addSeconds(-date.getTaiMinusUtc());
|
|
295
|
+
var utcDayNumber = dateInUtc.getJulianDayNumber();
|
|
296
|
+
var utcSecondsIntoDay = dateInUtc.getSecondsOfDay();
|
|
297
|
+
|
|
298
|
+
var t;
|
|
299
|
+
var diffDays = utcDayNumber - 2451545;
|
|
300
|
+
if (utcSecondsIntoDay >= 43200.0) {
|
|
301
|
+
t = (diffDays + 0.5) / TimeConstants.DAYS_PER_JULIAN_CENTURY;
|
|
302
|
+
} else {
|
|
303
|
+
t = (diffDays - 0.5) / TimeConstants.DAYS_PER_JULIAN_CENTURY;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
var gmst0 = gmstConstant0 + t * (gmstConstant1 + t * (gmstConstant2 + t * gmstConstant3));
|
|
307
|
+
var angle = (gmst0 * twoPiOverSecondsInDay) % CesiumMath.TWO_PI;
|
|
308
|
+
var ratio = wgs84WRPrecessing + rateCoef * (utcDayNumber - 2451545.5);
|
|
309
|
+
var secondsSinceMidnight = (utcSecondsIntoDay + TimeConstants.SECONDS_PER_DAY * 0.5) % TimeConstants.SECONDS_PER_DAY;
|
|
310
|
+
var gha = angle + (ratio * secondsSinceMidnight);
|
|
311
|
+
var cosGha = Math.cos(gha);
|
|
312
|
+
var sinGha = Math.sin(gha);
|
|
313
|
+
|
|
314
|
+
if (typeof result === 'undefined') {
|
|
315
|
+
return new Matrix3(cosGha, sinGha, 0.0,
|
|
316
|
+
-sinGha, cosGha, 0.0,
|
|
317
|
+
0.0, 0.0, 1.0);
|
|
318
|
+
}
|
|
319
|
+
result[0] = cosGha;
|
|
320
|
+
result[1] = -sinGha;
|
|
321
|
+
result[2] = 0.0;
|
|
322
|
+
result[3] = sinGha;
|
|
323
|
+
result[4] = cosGha;
|
|
324
|
+
result[5] = 0.0;
|
|
325
|
+
result[6] = 0.0;
|
|
326
|
+
result[7] = 0.0;
|
|
327
|
+
result[8] = 1.0;
|
|
328
|
+
return result;
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* The source of IAU 2006 XYS data, used for computing the transformation between the
|
|
333
|
+
* Fixed and ICRF axes.
|
|
334
|
+
* @type {Iau2006XysData}
|
|
335
|
+
*
|
|
336
|
+
* @memberof Transforms
|
|
337
|
+
*
|
|
338
|
+
* @see Transforms#computeIcrfToFixedMatrix
|
|
339
|
+
* @see Transforms#computeFixedToIcrfMatrix
|
|
340
|
+
*/
|
|
341
|
+
Transforms.iau2006XysData = new Iau2006XysData();
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* The source of Earth Orientation Parameters (EOP) data, used for computing the transformation
|
|
345
|
+
* between the Fixed and ICRF axes. By default, zero values are used for all EOP values,
|
|
346
|
+
* yielding a reasonable but not completely accurate representation of the ICRF axes.
|
|
347
|
+
* @type {EarthOrientationParameters}
|
|
348
|
+
*
|
|
349
|
+
* @memberof Transforms
|
|
350
|
+
*
|
|
351
|
+
* @see Transforms#computeIcrfToFixedMatrix
|
|
352
|
+
* @see Transforms#computeFixedToIcrfMatrix
|
|
353
|
+
*/
|
|
354
|
+
Transforms.earthOrientationParameters = EarthOrientationParameters.NONE;
|
|
355
|
+
|
|
356
|
+
var ttMinusTai = 32.184;
|
|
357
|
+
var j2000ttDays = 2451545.0;
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Preloads the data necessary to transform between the ICRF and Fixed axes, in either
|
|
361
|
+
* direction, over a given interval. This function returns a promise that, when resolved,
|
|
362
|
+
* indicates that the preload has completed.
|
|
363
|
+
*
|
|
364
|
+
* @memberof Transforms
|
|
365
|
+
*
|
|
366
|
+
* @param {TimeInterval} timeInterval The interval to preload.
|
|
367
|
+
* @returns {Promise} A promise that, when resolved, indicates that the preload has completed
|
|
368
|
+
* and evaluation of the transformation between the fixed and ICRF axes will
|
|
369
|
+
* no longer return undefined for a time inside the interval.
|
|
370
|
+
*
|
|
371
|
+
* @see Transforms#computeIcrfToFixedMatrix
|
|
372
|
+
* @see Transforms#computeFixedToIcrfMatrix
|
|
373
|
+
* @see when
|
|
374
|
+
*
|
|
375
|
+
* @example
|
|
376
|
+
* var interval = new TimeInterval(...);
|
|
377
|
+
* when(preloadIcrfFixed(interval), function() {
|
|
378
|
+
* // the data is now loaded
|
|
379
|
+
* });
|
|
380
|
+
*/
|
|
381
|
+
Transforms.preloadIcrfFixed = function(timeInterval) {
|
|
382
|
+
var startDayTT = timeInterval.start.getJulianDayNumber();
|
|
383
|
+
var startSecondTT = timeInterval.start.getSecondsOfDay() + ttMinusTai;
|
|
384
|
+
var stopDayTT = timeInterval.stop.getJulianDayNumber();
|
|
385
|
+
var stopSecondTT = timeInterval.stop.getSecondsOfDay() + ttMinusTai;
|
|
386
|
+
|
|
387
|
+
var xysPromise = Transforms.iau2006XysData.preload(startDayTT, startSecondTT, stopDayTT, stopSecondTT);
|
|
388
|
+
var eopPromise = Transforms.earthOrientationParameters.getPromiseToLoad();
|
|
389
|
+
|
|
390
|
+
return when.all([xysPromise, eopPromise]);
|
|
391
|
+
};
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Computes a rotation matrix to transform a point or vector from the International Celestial
|
|
395
|
+
* Reference Frame (GCRF/ICRF) inertial frame axes to the Earth-Fixed frame axes (ITRF)
|
|
396
|
+
* at a given time. This function may return undefined if the data necessary to
|
|
397
|
+
* do the transformation is not yet loaded.
|
|
398
|
+
*
|
|
399
|
+
* @memberof Transforms
|
|
400
|
+
*
|
|
401
|
+
* @param {JulianDate} date The time at which to compute the rotation matrix.
|
|
402
|
+
* @param {Matrix3} [result] The object onto which to store the result. If this parameter is
|
|
403
|
+
* not specified, a new instance is created and returned.
|
|
404
|
+
* @return {Matrix3} The rotation matrix, or undefined if the data necessary to do the
|
|
405
|
+
* transformation is not yet loaded.
|
|
406
|
+
*
|
|
407
|
+
* @exception {DeveloperError} date is required.
|
|
408
|
+
*
|
|
409
|
+
* @see Transforms#preloadIcrfFixed
|
|
410
|
+
*
|
|
411
|
+
* @example
|
|
412
|
+
* //Set the view to the inertial frame.
|
|
413
|
+
* function updateAndRender() {
|
|
414
|
+
* var now = new JulianDate();
|
|
415
|
+
* scene.initializeFrame();
|
|
416
|
+
* scene.setSunPosition(computeSunPosition(now));
|
|
417
|
+
* var icrfToFixed = Transforms.computeIcrfToFixedMatrix(now);
|
|
418
|
+
* if (typeof icrfToFixed !== 'undefined') {
|
|
419
|
+
* scene.getCamera().transform = Matrix4.fromRotationTranslation(icrfToFixed, Cartesian3.ZERO);
|
|
420
|
+
* }
|
|
421
|
+
* scene.render();
|
|
422
|
+
* requestAnimationFrame(updateAndRender);
|
|
423
|
+
* }
|
|
424
|
+
* updateAndRender();
|
|
425
|
+
*/
|
|
426
|
+
Transforms.computeIcrfToFixedMatrix = function(date, result) {
|
|
427
|
+
if (typeof date === 'undefined') {
|
|
428
|
+
throw new DeveloperError('date is required.');
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
var fixedToIcrfMtx = Transforms.computeFixedToIcrfMatrix(date, result);
|
|
432
|
+
if (typeof fixedToIcrfMtx === 'undefined') {
|
|
433
|
+
return undefined;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
return fixedToIcrfMtx.transpose(result);
|
|
437
|
+
};
|
|
438
|
+
|
|
439
|
+
var xysScratch = new Iau2006XysSample(0.0, 0.0, 0.0);
|
|
440
|
+
var eopScratch = new EarthOrientationParametersSample(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
|
|
441
|
+
var rotation1Scratch = new Matrix3();
|
|
442
|
+
var rotation2Scratch = new Matrix3();
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* Computes a rotation matrix to transform a point or vector from the Earth-Fixed frame axes (ITRF)
|
|
446
|
+
* to the International Celestial Reference Frame (GCRF/ICRF) inertial frame axes
|
|
447
|
+
* at a given time. This function may return undefined if the data necessary to
|
|
448
|
+
* do the transformation is not yet loaded.
|
|
449
|
+
*
|
|
450
|
+
* @memberof Transforms
|
|
451
|
+
*
|
|
452
|
+
* @param {JulianDate} date The time at which to compute the rotation matrix.
|
|
453
|
+
* @param {Matrix3} [result] The object onto which to store the result. If this parameter is
|
|
454
|
+
* not specified, a new instance is created and returned.
|
|
455
|
+
* @return {Matrix3} The rotation matrix, or undefined if the data necessary to do the
|
|
456
|
+
* transformation is not yet loaded.
|
|
457
|
+
*
|
|
458
|
+
* @exception {DeveloperError} date is required.
|
|
459
|
+
*
|
|
460
|
+
* @see Transforms#preloadIcrfFixed
|
|
461
|
+
*
|
|
462
|
+
* @example
|
|
463
|
+
* // Transform a point from the ICRF axes to the Fixed axes.
|
|
464
|
+
* var now = new JulianDate();
|
|
465
|
+
* var pointInFixed = new Cartesian3(...);
|
|
466
|
+
* var fixedToIcrf = Transforms.computeIcrfToFixedMatrix(now);
|
|
467
|
+
* var pointInInertial;
|
|
468
|
+
* if (typeof fixedToIcrf !== 'undefined') {
|
|
469
|
+
* pointInInertial = fixedToIcrf.multiplyByVector(pointInFixed);
|
|
470
|
+
* }
|
|
471
|
+
*/
|
|
472
|
+
Transforms.computeFixedToIcrfMatrix = function(date, result) {
|
|
473
|
+
if (typeof date === 'undefined') {
|
|
474
|
+
throw new DeveloperError('date is required.');
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
// Compute pole wander
|
|
478
|
+
var eop = Transforms.earthOrientationParameters.compute(date, eopScratch);
|
|
479
|
+
if (typeof eop === 'undefined') {
|
|
480
|
+
return undefined;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
// There is no external conversion to Terrestrial Time (TT).
|
|
484
|
+
// So use International Atomic Time (TAI) and convert using offsets.
|
|
485
|
+
// Here we are assuming that dayTT and secondTT are positive
|
|
486
|
+
var dayTT = date.getJulianDayNumber();
|
|
487
|
+
// It's possible here that secondTT could roll over 86400
|
|
488
|
+
// This does not seem to affect the precision (unit tests check for this)
|
|
489
|
+
var secondTT = date.getSecondsOfDay() + ttMinusTai;
|
|
490
|
+
|
|
491
|
+
var xys = Transforms.iau2006XysData.computeXysRadians(dayTT, secondTT, xysScratch);
|
|
492
|
+
if (typeof xys === 'undefined') {
|
|
493
|
+
return undefined;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
var x = xys.x + eop.xPoleOffset;
|
|
497
|
+
var y = xys.y + eop.yPoleOffset;
|
|
498
|
+
|
|
499
|
+
// Compute XYS rotation
|
|
500
|
+
var a = 1.0 / (1.0 + Math.sqrt(1.0 - x * x - y * y));
|
|
501
|
+
|
|
502
|
+
var rotation1 = rotation1Scratch;
|
|
503
|
+
rotation1[0] = 1.0 - a * x * x;
|
|
504
|
+
rotation1[3] = -a * x * y;
|
|
505
|
+
rotation1[6] = x;
|
|
506
|
+
rotation1[1] = -a * x * y;
|
|
507
|
+
rotation1[4] = 1 - a * y * y;
|
|
508
|
+
rotation1[7] = y;
|
|
509
|
+
rotation1[2] = -x;
|
|
510
|
+
rotation1[5] = -y;
|
|
511
|
+
rotation1[8] = 1 - a * (x * x + y * y);
|
|
512
|
+
|
|
513
|
+
var rotation2 = Matrix3.fromRotationZ(-xys.s, rotation2Scratch);
|
|
514
|
+
var matrixQ = rotation1.multiply(rotation2, rotation1Scratch);
|
|
515
|
+
|
|
516
|
+
// Similar to TT conversions above
|
|
517
|
+
// It's possible here that secondTT could roll over 86400
|
|
518
|
+
// This does not seem to affect the precision (unit tests check for this)
|
|
519
|
+
var dateUt1day = date.getJulianDayNumber();
|
|
520
|
+
var dateUt1sec = date.getSecondsOfDay() - date.getTaiMinusUtc() + eop.ut1MinusUtc;
|
|
521
|
+
|
|
522
|
+
// Compute Earth rotation angle
|
|
523
|
+
// The IERS standard for era is
|
|
524
|
+
// era = 0.7790572732640 + 1.00273781191135448 * Tu
|
|
525
|
+
// where
|
|
526
|
+
// Tu = JulianDateInUt1 - 2451545.0
|
|
527
|
+
// However, you get much more precision if you make the following simplification
|
|
528
|
+
// era = a + (1 + b) * (JulianDayNumber + FractionOfDay - 2451545)
|
|
529
|
+
// era = a + (JulianDayNumber - 2451545) + FractionOfDay + b (JulianDayNumber - 2451545 + FractionOfDay)
|
|
530
|
+
// era = a + FractionOfDay + b (JulianDayNumber - 2451545 + FractionOfDay)
|
|
531
|
+
// since (JulianDayNumber - 2451545) represents an integer number of revolutions which will be discarded anyway.
|
|
532
|
+
var daysSinceJ2000 = dateUt1day - 2451545;
|
|
533
|
+
var fractionOfDay = dateUt1sec / TimeConstants.SECONDS_PER_DAY;
|
|
534
|
+
var era = 0.7790572732640 + fractionOfDay + 0.00273781191135448 * (daysSinceJ2000 + fractionOfDay);
|
|
535
|
+
era = (era % 1.0) * CesiumMath.TWO_PI;
|
|
536
|
+
|
|
537
|
+
var earthRotation = Matrix3.fromRotationZ(era, rotation2Scratch);
|
|
538
|
+
|
|
539
|
+
// pseudoFixed to ICRF
|
|
540
|
+
var pfToIcrf = matrixQ.multiply(earthRotation, rotation1Scratch);
|
|
541
|
+
|
|
542
|
+
// Compute pole wander matrix
|
|
543
|
+
var cosxp = Math.cos(eop.xPoleWander);
|
|
544
|
+
var cosyp = Math.cos(eop.yPoleWander);
|
|
545
|
+
var sinxp = Math.sin(eop.xPoleWander);
|
|
546
|
+
var sinyp = Math.sin(eop.yPoleWander);
|
|
547
|
+
|
|
548
|
+
var ttt = (dayTT - j2000ttDays) + secondTT / TimeConstants.SECONDS_PER_DAY;
|
|
549
|
+
ttt /= 36525.0;
|
|
550
|
+
|
|
551
|
+
// approximate sp value in rad
|
|
552
|
+
var sp = -47.0e-6 * ttt * CesiumMath.RADIANS_PER_DEGREE / 3600.0;
|
|
553
|
+
var cossp = Math.cos(sp);
|
|
554
|
+
var sinsp = Math.sin(sp);
|
|
555
|
+
|
|
556
|
+
var fToPfMtx = rotation2Scratch;
|
|
557
|
+
fToPfMtx[0] = cosxp * cossp;
|
|
558
|
+
fToPfMtx[1] = cosxp * sinsp;
|
|
559
|
+
fToPfMtx[2] = sinxp;
|
|
560
|
+
fToPfMtx[3] = -cosyp * sinsp + sinyp * sinxp * cossp;
|
|
561
|
+
fToPfMtx[4] = cosyp * cossp + sinyp * sinxp * sinsp;
|
|
562
|
+
fToPfMtx[5] = -sinyp * cosxp;
|
|
563
|
+
fToPfMtx[6] = -sinyp * sinsp - cosyp * sinxp * cossp;
|
|
564
|
+
fToPfMtx[7] = sinyp * cossp - cosyp * sinxp * sinsp;
|
|
565
|
+
fToPfMtx[8] = cosyp * cosxp;
|
|
566
|
+
|
|
567
|
+
return pfToIcrf.multiply(fToPfMtx, result);
|
|
568
|
+
};
|
|
569
|
+
|
|
570
|
+
var pointToWindowCoordinatesTemp = new Cartesian4();
|
|
571
|
+
|
|
572
|
+
/**
|
|
573
|
+
* Transform a point from model coordinates to window coordinates.
|
|
574
|
+
*
|
|
575
|
+
* @memberof Transforms
|
|
576
|
+
*
|
|
577
|
+
* @param {Matrix4} modelViewProjectionMatrix The 4x4 model-view-projection matrix.
|
|
578
|
+
* @param {Matrix4} viewportTransformation The 4x4 viewport transformation.
|
|
579
|
+
* @param {Cartesian3} point The point to transform.
|
|
580
|
+
* @param {Cartesian2} [result] The object onto which to store the result.
|
|
581
|
+
* @return {Cartesian2} The modified result parameter or a new Cartesian2 instance if none was provided.
|
|
582
|
+
*
|
|
583
|
+
* @exception {DeveloperError} modelViewProjectionMatrix is required.
|
|
584
|
+
* @exception {DeveloperError} viewportTransformation is required.
|
|
585
|
+
* @exception {DeveloperError} point is required.
|
|
586
|
+
*
|
|
587
|
+
* @see UniformState#getModelViewProjection
|
|
588
|
+
* @see czm_modelViewProjection
|
|
589
|
+
* @see UniformState#getViewportTransformation
|
|
590
|
+
* @see czm_viewportTransformation
|
|
591
|
+
*/
|
|
592
|
+
Transforms.pointToWindowCoordinates = function (modelViewProjectionMatrix, viewportTransformation, point, result) {
|
|
593
|
+
if (typeof modelViewProjectionMatrix === 'undefined') {
|
|
594
|
+
throw new DeveloperError('modelViewProjectionMatrix is required.');
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
if (typeof viewportTransformation === 'undefined') {
|
|
598
|
+
throw new DeveloperError('viewportTransformation is required.');
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
if (typeof point === 'undefined') {
|
|
602
|
+
throw new DeveloperError('point is required.');
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
var tmp = pointToWindowCoordinatesTemp;
|
|
606
|
+
|
|
607
|
+
Matrix4.multiplyByPoint(modelViewProjectionMatrix, point, tmp);
|
|
608
|
+
Cartesian4.multiplyByScalar(tmp, 1.0 / tmp.w, tmp);
|
|
609
|
+
Matrix4.multiplyByVector(viewportTransformation, tmp, tmp);
|
|
610
|
+
return Cartesian2.fromCartesian4(tmp, result);
|
|
611
|
+
};
|
|
612
|
+
|
|
613
|
+
return Transforms;
|
|
614
|
+
});
|