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.
Files changed (491) hide show
  1. data/LICENSE.md +259 -0
  2. data/README.rdoc +90 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
  5. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  6. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  7. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  8. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  9. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  10. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  11. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  12. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  13. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  14. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  15. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  16. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  17. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  18. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  19. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  20. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  21. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  22. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  23. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  24. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  25. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  26. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  27. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  28. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  29. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  30. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  31. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  32. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  33. data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
  34. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  35. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  36. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  37. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  38. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  39. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  40. data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
  41. data/app/assets/javascripts/Assets/package.json +6 -0
  42. data/app/assets/javascripts/Cesium.js +320 -0
  43. data/app/assets/javascripts/Core/AnimationController.js +148 -0
  44. data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
  45. data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
  46. data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
  47. data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
  48. data/app/assets/javascripts/Core/Cartesian2.js +762 -0
  49. data/app/assets/javascripts/Core/Cartesian3.js +861 -0
  50. data/app/assets/javascripts/Core/Cartesian4.js +762 -0
  51. data/app/assets/javascripts/Core/Cartographic.js +211 -0
  52. data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
  53. data/app/assets/javascripts/Core/Clock.js +195 -0
  54. data/app/assets/javascripts/Core/ClockRange.js +37 -0
  55. data/app/assets/javascripts/Core/ClockStep.js +32 -0
  56. data/app/assets/javascripts/Core/Color.js +1629 -0
  57. data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
  58. data/app/assets/javascripts/Core/Core.profile.js +8 -0
  59. data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
  60. data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
  61. data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
  62. data/app/assets/javascripts/Core/DeveloperError.js +60 -0
  63. data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
  64. data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
  65. data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
  66. data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
  67. data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
  68. data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
  69. data/app/assets/javascripts/Core/Enumeration.js +67 -0
  70. data/app/assets/javascripts/Core/Event.js +122 -0
  71. data/app/assets/javascripts/Core/Extent.js +383 -0
  72. data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
  73. data/app/assets/javascripts/Core/FAR.js +13 -0
  74. data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
  75. data/app/assets/javascripts/Core/Fullscreen.js +235 -0
  76. data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
  77. data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
  78. data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
  79. data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
  80. data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
  81. data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
  82. data/app/assets/javascripts/Core/Intersect.js +40 -0
  83. data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
  84. data/app/assets/javascripts/Core/Interval.js +27 -0
  85. data/app/assets/javascripts/Core/Iso8601.js +46 -0
  86. data/app/assets/javascripts/Core/JulianDate.js +1228 -0
  87. data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
  88. data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
  89. data/app/assets/javascripts/Core/LeapSecond.js +158 -0
  90. data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
  91. data/app/assets/javascripts/Core/Math.js +532 -0
  92. data/app/assets/javascripts/Core/Matrix2.js +833 -0
  93. data/app/assets/javascripts/Core/Matrix3.js +1099 -0
  94. data/app/assets/javascripts/Core/Matrix4.js +2164 -0
  95. data/app/assets/javascripts/Core/MeshFilters.js +568 -0
  96. data/app/assets/javascripts/Core/Occluder.js +474 -0
  97. data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
  98. data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
  99. data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
  100. data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
  101. data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
  102. data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
  103. data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
  104. data/app/assets/javascripts/Core/Quaternion.js +947 -0
  105. data/app/assets/javascripts/Core/Queue.js +95 -0
  106. data/app/assets/javascripts/Core/Ray.js +64 -0
  107. data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
  108. data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
  109. data/app/assets/javascripts/Core/RuntimeError.js +59 -0
  110. data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
  111. data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
  112. data/app/assets/javascripts/Core/Shapes.js +230 -0
  113. data/app/assets/javascripts/Core/Spherical.js +192 -0
  114. data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
  115. data/app/assets/javascripts/Core/TimeConstants.js +85 -0
  116. data/app/assets/javascripts/Core/TimeInterval.js +305 -0
  117. data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
  118. data/app/assets/javascripts/Core/TimeStandard.js +31 -0
  119. data/app/assets/javascripts/Core/Tipsify.js +285 -0
  120. data/app/assets/javascripts/Core/Transforms.js +614 -0
  121. data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
  122. data/app/assets/javascripts/Core/Visibility.js +38 -0
  123. data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
  124. data/app/assets/javascripts/Core/WindingOrder.js +40 -0
  125. data/app/assets/javascripts/Core/binarySearch.js +69 -0
  126. data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
  127. data/app/assets/javascripts/Core/clone.js +21 -0
  128. data/app/assets/javascripts/Core/combine.js +81 -0
  129. data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
  130. data/app/assets/javascripts/Core/createGuid.js +25 -0
  131. data/app/assets/javascripts/Core/defaultValue.js +22 -0
  132. data/app/assets/javascripts/Core/destroyObject.js +61 -0
  133. data/app/assets/javascripts/Core/freezeObject.js +20 -0
  134. data/app/assets/javascripts/Core/getImagePixels.js +46 -0
  135. data/app/assets/javascripts/Core/isLeapYear.js +30 -0
  136. data/app/assets/javascripts/Core/jsonp.js +116 -0
  137. data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
  138. data/app/assets/javascripts/Core/loadImage.js +85 -0
  139. data/app/assets/javascripts/Core/loadJson.js +54 -0
  140. data/app/assets/javascripts/Core/loadText.js +78 -0
  141. data/app/assets/javascripts/Core/loadXML.js +76 -0
  142. data/app/assets/javascripts/Core/package.json +6 -0
  143. data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
  144. data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
  145. data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
  146. data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
  147. data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
  148. data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
  149. data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
  150. data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
  151. data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
  152. data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
  153. data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
  154. data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
  155. data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
  156. data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
  157. data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
  158. data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
  159. data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
  160. data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
  161. data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
  162. data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
  163. data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
  164. data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
  165. data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
  166. data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
  167. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
  168. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
  169. data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
  170. data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
  171. data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
  172. data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
  173. data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
  174. data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
  175. data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
  176. data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
  177. data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
  178. data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
  179. data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
  180. data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
  181. data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
  182. data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
  183. data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
  184. data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
  185. data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
  186. data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
  187. data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
  188. data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
  189. data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
  190. data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
  191. data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
  192. data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
  193. data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
  194. data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
  195. data/app/assets/javascripts/DynamicScene/package.json +6 -0
  196. data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
  197. data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
  198. data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
  199. data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
  200. data/app/assets/javascripts/Renderer/Buffer.js +141 -0
  201. data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
  202. data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
  203. data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
  204. data/app/assets/javascripts/Renderer/Context.js +2805 -0
  205. data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
  206. data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
  207. data/app/assets/javascripts/Renderer/CullFace.js +50 -0
  208. data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
  209. data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
  210. data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
  211. data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
  212. data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
  213. data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
  214. data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
  215. data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
  216. data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
  217. data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
  218. data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
  219. data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
  220. data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
  221. data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
  222. data/app/assets/javascripts/Renderer/Texture.js +395 -0
  223. data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
  224. data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
  225. data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
  226. data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
  227. data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
  228. data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
  229. data/app/assets/javascripts/Renderer/UniformState.js +799 -0
  230. data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
  231. data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
  232. data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
  233. data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
  234. data/app/assets/javascripts/Renderer/package.json +6 -0
  235. data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
  236. data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
  237. data/app/assets/javascripts/Scene/Billboard.js +680 -0
  238. data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
  239. data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
  240. data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
  241. data/app/assets/javascripts/Scene/Camera.js +358 -0
  242. data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
  243. data/app/assets/javascripts/Scene/CameraController.js +1258 -0
  244. data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
  245. data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
  246. data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
  247. data/app/assets/javascripts/Scene/CentralBody.js +817 -0
  248. data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
  249. data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
  250. data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
  251. data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
  252. data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
  253. data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
  254. data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
  255. data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
  256. data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
  257. data/app/assets/javascripts/Scene/FrameState.js +86 -0
  258. data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
  259. data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
  260. data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
  261. data/app/assets/javascripts/Scene/Imagery.js +85 -0
  262. data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
  263. data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
  264. data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
  265. data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
  266. data/app/assets/javascripts/Scene/ImageryState.js +20 -0
  267. data/app/assets/javascripts/Scene/Label.js +706 -0
  268. data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
  269. data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
  270. data/app/assets/javascripts/Scene/Material.js +1177 -0
  271. data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
  272. data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
  273. data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
  274. data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
  275. data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
  276. data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
  277. data/app/assets/javascripts/Scene/Polygon.js +886 -0
  278. data/app/assets/javascripts/Scene/Polyline.js +441 -0
  279. data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
  280. data/app/assets/javascripts/Scene/Projections.js +93 -0
  281. data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
  282. data/app/assets/javascripts/Scene/Scene.js +632 -0
  283. data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
  284. data/app/assets/javascripts/Scene/SceneMode.js +51 -0
  285. data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
  286. data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
  287. data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
  288. data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
  289. data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
  290. data/app/assets/javascripts/Scene/SkyBox.js +231 -0
  291. data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
  292. data/app/assets/javascripts/Scene/TexturePool.js +154 -0
  293. data/app/assets/javascripts/Scene/Tile.js +322 -0
  294. data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
  295. data/app/assets/javascripts/Scene/TileImagery.js +36 -0
  296. data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
  297. data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
  298. data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
  299. data/app/assets/javascripts/Scene/TileState.js +19 -0
  300. data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
  301. data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
  302. data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
  303. data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
  304. data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
  305. data/app/assets/javascripts/Scene/package.json +6 -0
  306. data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
  307. data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
  308. data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
  309. data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
  310. data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
  311. data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
  312. data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
  313. data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
  314. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
  315. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
  316. data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
  317. data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
  318. data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
  319. data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
  320. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
  321. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
  322. data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
  323. data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
  324. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
  325. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
  326. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
  327. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
  328. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
  329. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
  330. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
  331. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
  332. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
  333. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
  334. data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
  335. data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
  336. data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
  337. data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
  338. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
  339. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
  340. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
  341. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
  342. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
  343. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
  344. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  345. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
  346. data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
  347. data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
  348. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
  349. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
  350. data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
  351. data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
  352. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
  353. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
  354. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
  355. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
  356. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
  357. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
  358. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
  359. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
  360. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  361. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
  362. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
  363. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
  364. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
  365. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
  366. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
  367. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
  368. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
  369. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
  370. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
  371. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
  372. data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
  373. data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
  374. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
  375. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
  376. data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
  377. data/app/assets/javascripts/Shaders/Noise.js +242 -0
  378. data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
  379. data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
  380. data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
  381. data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
  382. data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
  383. data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
  384. data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
  385. data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
  386. data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
  387. data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
  388. data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
  389. data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
  390. data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
  391. data/app/assets/javascripts/Shaders/Ray.js +357 -0
  392. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
  393. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
  394. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
  395. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
  396. data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
  397. data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
  398. data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
  399. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
  400. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
  401. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
  402. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
  403. data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
  404. data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
  405. data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
  406. data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
  407. data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
  408. data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
  409. data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
  410. data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
  411. data/app/assets/javascripts/Shaders/package.json +6 -0
  412. data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
  413. data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
  414. data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
  415. data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
  416. data/app/assets/javascripts/ThirdParty/package.json +6 -0
  417. data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
  418. data/app/assets/javascripts/ThirdParty/when.js +748 -0
  419. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
  420. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
  421. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
  422. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
  423. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
  424. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
  425. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
  426. data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
  427. data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
  428. data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
  429. data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
  430. data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
  431. data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
  432. data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
  433. data/app/assets/javascripts/Widgets/Timeline.css +113 -0
  434. data/app/assets/javascripts/Widgets/Timeline.js +629 -0
  435. data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
  436. data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
  437. data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
  438. data/app/assets/javascripts/Widgets/package.json +6 -0
  439. data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
  440. data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
  441. data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
  442. data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
  443. data/app/assets/javascripts/Workers/package.json +6 -0
  444. data/app/assets/javascripts/copyrightHeader.js +22 -0
  445. data/app/assets/javascripts/main.js +10 -0
  446. data/app/assets/stylesheets/cesium.css +4 -0
  447. data/app/controllers/cesium_controller.rb +4 -0
  448. data/app/helpers/cesium_helper.rb +2 -0
  449. data/app/views/cesium/index.html.erb +3 -0
  450. data/config/routes.rb +3 -0
  451. data/lib/cesium.rb +4 -0
  452. data/lib/cesium/engine.rb +4 -0
  453. data/lib/cesium/version.rb +3 -0
  454. data/lib/tasks/cesium_tasks.rake +4 -0
  455. data/test/cesium_test.rb +7 -0
  456. data/test/dummy/README.rdoc +261 -0
  457. data/test/dummy/Rakefile +7 -0
  458. data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
  459. data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
  460. data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
  461. data/test/dummy/app/assets/stylesheets/application.css +12 -0
  462. data/test/dummy/app/controllers/application_controller.rb +4 -0
  463. data/test/dummy/app/helpers/application_helper.rb +2 -0
  464. data/test/dummy/app/views/layouts/application.html.erb +21 -0
  465. data/test/dummy/config.ru +4 -0
  466. data/test/dummy/config/application.rb +59 -0
  467. data/test/dummy/config/boot.rb +10 -0
  468. data/test/dummy/config/database.yml +25 -0
  469. data/test/dummy/config/environment.rb +5 -0
  470. data/test/dummy/config/environments/development.rb +37 -0
  471. data/test/dummy/config/environments/production.rb +67 -0
  472. data/test/dummy/config/environments/test.rb +37 -0
  473. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  474. data/test/dummy/config/initializers/inflections.rb +15 -0
  475. data/test/dummy/config/initializers/mime_types.rb +5 -0
  476. data/test/dummy/config/initializers/secret_token.rb +7 -0
  477. data/test/dummy/config/initializers/session_store.rb +8 -0
  478. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  479. data/test/dummy/config/locales/en.yml +5 -0
  480. data/test/dummy/config/requirejs.yml +10 -0
  481. data/test/dummy/config/routes.rb +3 -0
  482. data/test/dummy/public/404.html +26 -0
  483. data/test/dummy/public/422.html +26 -0
  484. data/test/dummy/public/500.html +25 -0
  485. data/test/dummy/public/favicon.ico +0 -0
  486. data/test/dummy/script/rails +6 -0
  487. data/test/functional/cesium_controller_test.rb +9 -0
  488. data/test/integration/navigation_test.rb +10 -0
  489. data/test/test_helper.rb +15 -0
  490. data/test/unit/helpers/cesium_helper_test.rb +4 -0
  491. 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
+ });