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,352 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ '../Core/JulianDate',
5
+ '../Core/TimeInterval',
6
+ '../Core/TimeIntervalCollection',
7
+ '../Core/Iso8601',
8
+ '../Core/binarySearch',
9
+ '../Core/HermitePolynomialApproximation',
10
+ '../Core/LinearApproximation',
11
+ '../Core/LagrangePolynomialApproximation'
12
+ ], function(
13
+ DeveloperError,
14
+ JulianDate,
15
+ TimeInterval,
16
+ TimeIntervalCollection,
17
+ Iso8601,
18
+ binarySearch,
19
+ HermitePolynomialApproximation,
20
+ LinearApproximation,
21
+ LagrangePolynomialApproximation) {
22
+ "use strict";
23
+
24
+
25
+ //CZML_TODO This is more of an idea than a to-do, but currently DynamicProperty requires
26
+ //you know the type of data being loaded up-front by passing valueType. We could take
27
+ //a similar approach to DynamicMaterialProperty and have a list of potential valueTypes
28
+ //that we check for when we encounter data. This would make it possible to support
29
+ //properties that are defined in a CZML document but not part of the official spec. This
30
+ //would be helpful in cases where a CZML document has $ or # links to other properties,
31
+ //but that property itself is not part of another to-spec CZML object. We could still
32
+ //allow the user to pass a default valueType if they want to make sure the data
33
+ //being processed is only the data of the expected type.
34
+
35
+ //Map CZML interval types to their implementation.
36
+ var interpolators = {
37
+ HERMITE : HermitePolynomialApproximation,
38
+ LAGRANGE : LagrangePolynomialApproximation,
39
+ LINEAR : LinearApproximation
40
+ };
41
+
42
+ //The data associated with each DynamicProperty interval.
43
+ function IntervalData() {
44
+ this.interpolationAlgorithm = LinearApproximation;
45
+ this.numberOfPoints = LinearApproximation.getRequiredDataPoints(1);
46
+ this.interpolationDegree = 1;
47
+ this.times = undefined;
48
+ this.values = undefined;
49
+ this.isSampled = false;
50
+ this.xTable = undefined;
51
+ this.yTable = undefined;
52
+ }
53
+
54
+ //Converts a CZML defined data into a JulianDate, regardless of whether it was
55
+ //specified in epoch seconds or as an ISO8601 string.
56
+ function czmlDateToJulianDate(date, epoch) {
57
+ if (typeof date === 'string') {
58
+ return JulianDate.fromIso8601(date);
59
+ }
60
+ return epoch.addSeconds(date);
61
+ }
62
+
63
+ /**
64
+ * <p>
65
+ * DynamicProperty represents a single value that changes over time.
66
+ * Rather than creating instances of this object directly, it's typically
67
+ * created and managed via loading CZML data into a DynamicObjectCollection.
68
+ * Instances of this type are exposed via DynamicObject and it's sub-objects
69
+ * and are responsible for interpreting and interpolating the data for visualization.
70
+ * </p>
71
+ * <p>
72
+ * The type of value exposed by this property must be provided during construction
73
+ * by passing in an object which performs all the necessary operations needed to
74
+ * properly store, retrieve, and interpolate the data. For more specialized needs
75
+ * other types of dynamic properties exist, such as DynamicMaterialProperty,
76
+ * which as the name implies, handles materials.
77
+ * </p>
78
+ *
79
+ * @alias DynamicProperty
80
+ * @constructor
81
+ *
82
+ * @param {Object} valueType A CZML type object which contains the methods needed to interpret and interpolate CZML data of the same type.
83
+ *
84
+ * @see CzmlBoolean
85
+ * @see CzmlCartesian2
86
+ * @see CzmlCartesian3
87
+ * @see CzmlCartographic
88
+ * @see CzmlColor
89
+ * @see CzmlHorizontalOrigin
90
+ * @see CzmlLabelStyle
91
+ * @see CzmlNumber
92
+ * @see CzmlString
93
+ * @see CzmlUnitCartesian3
94
+ * @see CzmlUnitQuaternion
95
+ * @see CzmlUnitSpherical
96
+ * @see CzmlVerticalOrigin
97
+ * @see DynamicObject
98
+ * @see ReferenceProperty
99
+ * @see DynamicMaterialProperty
100
+ * @see DynamicPositionProperty
101
+ * @see DynamicDirectionsProperty
102
+ * @see DynamicVertexPositionsProperty
103
+ */
104
+ var DynamicProperty = function(valueType) {
105
+ if (typeof valueType === 'undefined') {
106
+ throw new DeveloperError('valueType is required.');
107
+ }
108
+ this.valueType = valueType;
109
+ this._intervals = new TimeIntervalCollection();
110
+ this._cachedDate = undefined;
111
+ this._cachedInterval = undefined;
112
+ };
113
+
114
+ /**
115
+ * Processes the provided CZML interval or intervals into this property.
116
+ *
117
+ * @memberof DynamicProperty
118
+ *
119
+ * @param {Object} czmlIntervals The CZML data to process.
120
+ * @param {TimeInterval} [constrainedInterval] Constrains the processing so that any times outside of this interval are ignored.
121
+ * @param {String} [sourceUri] The originating url of the CZML being processed.
122
+ */
123
+ DynamicProperty.prototype.processCzmlIntervals = function(czmlIntervals, constrainedInterval, sourceUri) {
124
+ if (Array.isArray(czmlIntervals)) {
125
+ for ( var i = 0, len = czmlIntervals.length; i < len; i++) {
126
+ this._addCzmlInterval(czmlIntervals[i], constrainedInterval, sourceUri);
127
+ }
128
+ } else {
129
+ this._addCzmlInterval(czmlIntervals, constrainedInterval, sourceUri);
130
+ }
131
+ };
132
+
133
+ /**
134
+ * Returns the value of the property at the specified time.
135
+ * @memberof DynamicProperty
136
+ *
137
+ * @param {JulianDate} time The time for which to retrieve the value.
138
+ * @param {Object} [result] The object to store the value into, if omitted, a new instance is created and returned.
139
+ * @returns The modified result parameter or a new instance if the result parameter was not supplied.
140
+ */
141
+ DynamicProperty.prototype.getValue = function(time, result) {
142
+ var interval = this._cachedInterval;
143
+ var thisValueType = this.valueType;
144
+ var doublesPerValue = thisValueType.doublesPerValue;
145
+
146
+ if (this._cachedDate !== time) {
147
+ this._cachedDate = time;
148
+ if (typeof interval === 'undefined' || !interval.contains(time)) {
149
+ interval = this._intervals.findIntervalContainingDate(time);
150
+ this._cachedInterval = interval;
151
+ }
152
+ }
153
+
154
+ if (typeof interval === 'undefined') {
155
+ return undefined;
156
+ }
157
+
158
+ var intervalData = interval.data;
159
+ var times = intervalData.times;
160
+ var values = intervalData.values;
161
+ if (intervalData.isSampled && times.length >= 0 && values.length > 0) {
162
+ var index = binarySearch(times, time, JulianDate.compare);
163
+ if (index < 0) {
164
+ if (intervalData.numberOfPoints < 2) {
165
+ return undefined;
166
+ }
167
+ index = ~index;
168
+
169
+ if (index >= times.length) {
170
+ index = times.length - 1;
171
+ }
172
+
173
+ var firstIndex = 0;
174
+ var lastIndex = times.length - 1;
175
+
176
+ var degree = intervalData.numberOfPoints - 1;
177
+ var pointsInCollection = lastIndex - firstIndex + 1;
178
+
179
+ if (pointsInCollection < degree + 1) {
180
+ // Use the entire range.
181
+ } else {
182
+ var computedFirstIndex = index - ((degree / 2) | 0) - 1;
183
+ if (computedFirstIndex < firstIndex) {
184
+ computedFirstIndex = firstIndex;
185
+ }
186
+ var computedLastIndex = computedFirstIndex + degree;
187
+ if (computedLastIndex > lastIndex) {
188
+ computedLastIndex = lastIndex;
189
+ computedFirstIndex = computedLastIndex - degree;
190
+ if (computedFirstIndex < firstIndex) {
191
+ computedFirstIndex = firstIndex;
192
+ }
193
+ }
194
+
195
+ firstIndex = computedFirstIndex;
196
+ lastIndex = computedLastIndex;
197
+ }
198
+
199
+ var length = lastIndex - firstIndex + 1;
200
+
201
+ var doublesPerInterpolationValue = thisValueType.doublesPerInterpolationValue;
202
+ var xTable = intervalData.xTable;
203
+ var yTable = intervalData.yTable;
204
+
205
+ if (typeof xTable === 'undefined') {
206
+ xTable = intervalData.xTable = new Array(intervalData.numberOfPoints);
207
+ yTable = intervalData.yTable = new Array(intervalData.numberOfPoints * doublesPerInterpolationValue);
208
+ }
209
+
210
+ // Build the tables
211
+ for ( var i = 0; i < length; ++i) {
212
+ xTable[i] = times[lastIndex].getSecondsDifference(times[firstIndex + i]);
213
+ }
214
+ var specializedPackFunction = thisValueType.packValuesForInterpolation;
215
+ if (typeof specializedPackFunction === 'undefined') {
216
+ var destinationIndex = 0;
217
+ var sourceIndex = firstIndex * doublesPerValue;
218
+ var stop = (lastIndex + 1) * doublesPerValue;
219
+
220
+ while (sourceIndex < stop) {
221
+ yTable[destinationIndex] = values[sourceIndex];
222
+ sourceIndex++;
223
+ destinationIndex++;
224
+ }
225
+ } else {
226
+ specializedPackFunction(values, yTable, firstIndex, lastIndex);
227
+ }
228
+
229
+ // Interpolate!
230
+ var x = times[lastIndex].getSecondsDifference(time);
231
+ var interpolationResult = intervalData.interpolationAlgorithm.interpolateOrderZero(x, xTable, yTable, doublesPerInterpolationValue);
232
+
233
+ var specializedGetFunction = thisValueType.getValueFromInterpolationResult;
234
+ if (typeof specializedGetFunction === 'undefined') {
235
+ return thisValueType.getValueFromArray(interpolationResult, 0, result);
236
+ }
237
+ return specializedGetFunction(interpolationResult, result, values, firstIndex, lastIndex);
238
+ }
239
+ return thisValueType.getValueFromArray(intervalData.values, index * doublesPerValue, result);
240
+ }
241
+ return thisValueType.getValue(intervalData.values, result);
242
+ };
243
+
244
+ DynamicProperty._mergeNewSamples = function(epoch, times, values, newData, doublesPerValue, valueType) {
245
+ var newDataIndex = 0, i, prevItem, timesInsertionPoint, valuesInsertionPoint, timesSpliceArgs, valuesSpliceArgs, currentTime, nextTime;
246
+ while (newDataIndex < newData.length) {
247
+ currentTime = czmlDateToJulianDate(newData[newDataIndex], epoch);
248
+ timesInsertionPoint = binarySearch(times, currentTime, JulianDate.compare);
249
+
250
+ if (timesInsertionPoint < 0) {
251
+ //Doesn't exist, insert as many additional values as we can.
252
+ timesInsertionPoint = ~timesInsertionPoint;
253
+ timesSpliceArgs = [timesInsertionPoint, 0];
254
+
255
+ valuesInsertionPoint = timesInsertionPoint * doublesPerValue;
256
+ valuesSpliceArgs = [valuesInsertionPoint, 0];
257
+ prevItem = undefined;
258
+ nextTime = times[timesInsertionPoint + 1];
259
+ while (newDataIndex < newData.length) {
260
+ currentTime = czmlDateToJulianDate(newData[newDataIndex], epoch);
261
+ if ((typeof prevItem !== 'undefined' && JulianDate.compare(prevItem, currentTime) >= 0) ||
262
+ (typeof nextTime !== 'undefined' && JulianDate.compare(currentTime, nextTime) >= 0)) {
263
+ break;
264
+ }
265
+ timesSpliceArgs.push(currentTime);
266
+ newDataIndex = newDataIndex + 1;
267
+ for (i = 0; i < doublesPerValue; i++) {
268
+ valuesSpliceArgs.push(newData[newDataIndex]);
269
+ newDataIndex = newDataIndex + 1;
270
+ }
271
+ prevItem = currentTime;
272
+ }
273
+
274
+ Array.prototype.splice.apply(values, valuesSpliceArgs);
275
+ Array.prototype.splice.apply(times, timesSpliceArgs);
276
+ } else {
277
+ //Found an exact match
278
+ for (i = 0; i < doublesPerValue; i++) {
279
+ newDataIndex++;
280
+ values[(timesInsertionPoint * doublesPerValue) + i] = newData[newDataIndex];
281
+ }
282
+ newDataIndex++;
283
+ }
284
+ }
285
+ };
286
+
287
+ DynamicProperty.prototype._addCzmlInterval = function(czmlInterval, constrainedInterval, sourceUri) {
288
+ var iso8601Interval = czmlInterval.interval;
289
+ if (typeof iso8601Interval === 'undefined') {
290
+ iso8601Interval = Iso8601.MAXIMUM_INTERVAL;
291
+ } else {
292
+ iso8601Interval = TimeInterval.fromIso8601(iso8601Interval);
293
+ }
294
+
295
+ if (typeof constrainedInterval !== 'undefined') {
296
+ iso8601Interval = iso8601Interval.intersect(constrainedInterval);
297
+ }
298
+
299
+ var unwrappedInterval = this.valueType.unwrapInterval(czmlInterval, sourceUri);
300
+ if (typeof unwrappedInterval !== 'undefined') {
301
+ this._addCzmlIntervalUnwrapped(iso8601Interval.start, iso8601Interval.stop, unwrappedInterval, czmlInterval.epoch, czmlInterval.interpolationAlgorithm, czmlInterval.interpolationDegree);
302
+ }
303
+ };
304
+
305
+ DynamicProperty.prototype._addCzmlIntervalUnwrapped = function(start, stop, unwrappedInterval, epoch, interpolationAlgorithmType, interpolationDegree) {
306
+ var thisIntervals = this._intervals;
307
+ var existingInterval = thisIntervals.findInterval(start, stop);
308
+ this._cachedDate = undefined;
309
+ this._cachedInterval = undefined;
310
+
311
+ var intervalData;
312
+ if (typeof existingInterval === 'undefined') {
313
+ intervalData = new IntervalData();
314
+ existingInterval = new TimeInterval(start, stop, true, true, intervalData);
315
+ thisIntervals.addInterval(existingInterval);
316
+ } else {
317
+ intervalData = existingInterval.data;
318
+ }
319
+
320
+ var thisValueType = this.valueType;
321
+ if (thisValueType.isSampled(unwrappedInterval)) {
322
+ var interpolationAlgorithm;
323
+ if (typeof interpolationAlgorithmType !== 'undefined') {
324
+ interpolationAlgorithm = interpolators[interpolationAlgorithmType];
325
+ intervalData.interpolationAlgorithm = interpolationAlgorithm;
326
+ }
327
+ if (typeof interpolationAlgorithm !== 'undefined' && typeof interpolationDegree !== 'undefined') {
328
+ intervalData.interpolationDegree = interpolationDegree;
329
+ intervalData.xTable = undefined;
330
+ intervalData.yTable = undefined;
331
+ }
332
+
333
+ if (!intervalData.isSampled) {
334
+ intervalData.times = [];
335
+ intervalData.values = [];
336
+ intervalData.isSampled = true;
337
+ }
338
+ if (typeof epoch !== 'undefined') {
339
+ epoch = JulianDate.fromIso8601(epoch);
340
+ }
341
+ DynamicProperty._mergeNewSamples(epoch, intervalData.times, intervalData.values, unwrappedInterval, thisValueType.doublesPerValue, thisValueType);
342
+ intervalData.numberOfPoints = Math.min(intervalData.interpolationAlgorithm.getRequiredDataPoints(intervalData.interpolationDegree), intervalData.times.length);
343
+ } else {
344
+ //Packet itself is a constant value
345
+ intervalData.times = undefined;
346
+ intervalData.values = unwrappedInterval;
347
+ intervalData.isSampled = false;
348
+ }
349
+ };
350
+
351
+ return DynamicProperty;
352
+ });
@@ -0,0 +1,204 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/TimeInterval',
4
+ '../Core/defaultValue',
5
+ './CzmlBoolean',
6
+ './CzmlNumber',
7
+ './CzmlColor',
8
+ './DynamicProperty',
9
+ './DynamicDirectionsProperty',
10
+ './DynamicMaterialProperty'
11
+ ], function(
12
+ TimeInterval,
13
+ defaultValue,
14
+ CzmlBoolean,
15
+ CzmlNumber,
16
+ CzmlColor,
17
+ DynamicProperty,
18
+ DynamicDirectionsProperty,
19
+ DynamicMaterialProperty) {
20
+ "use strict";
21
+
22
+ /**
23
+ * Represents a time-dynamic pyramid, typically used in conjunction with DynamicPyramidVisualizer and
24
+ * DynamicObjectCollection to visualize CZML.
25
+ *
26
+ * @alias DynamicPyramid
27
+ * @constructor
28
+ *
29
+ * @see DynamicObject
30
+ * @see DynamicProperty
31
+ * @see DynamicObjectCollection
32
+ * @see DynamicPyramidVisualizer
33
+ * @see VisualizerCollection
34
+ * @see CustomSensor
35
+ * @see CzmlDefaults
36
+ */
37
+ var DynamicPyramid = function() {
38
+ /**
39
+ * A DynamicProperty of type CzmlBoolean which determines the pyramid's visibility.
40
+ * @type DynamicProperty
41
+ */
42
+ this.show = undefined;
43
+ /**
44
+ * A DynamicDirectionsProperty which determines the projection of the pyramid.
45
+ * @type DynamicDirectionsProperty
46
+ */
47
+ this.directions = undefined;
48
+ /**
49
+ * A DynamicProperty of type CzmlNumber which determines the pyramid's radius.
50
+ * @type DynamicProperty
51
+ */
52
+ this.radius = undefined;
53
+ /**
54
+ * A DynamicProperty of type CzmlBoolean which determines the pyramid's intersection visibility.
55
+ * @type DynamicProperty
56
+ */
57
+ this.showIntersection = undefined;
58
+ /**
59
+ * A DynamicProperty of type CzmlColor which determines the color of the line formed by the intersection of the pyramid and other central bodies.
60
+ * @type DynamicProperty
61
+ */
62
+ this.intersectionColor = undefined;
63
+ /**
64
+ * A DynamicMaterialProperty which determines the material.
65
+ * @type DynamicMaterialProperty
66
+ */
67
+ this.material = undefined;
68
+ };
69
+
70
+ /**
71
+ * Processes a single CZML packet and merges its data into the provided DynamicObject's pyramid.
72
+ * If the DynamicObject does not have a pyramid, one is created. This method is not
73
+ * normally called directly, but is part of the array of CZML processing functions that is
74
+ * passed into the DynamicObjectCollection constructor.
75
+ *
76
+ * @param {DynamicObject} dynamicObject The DynamicObject which will contain the pyramid data.
77
+ * @param {Object} packet The CZML packet to process.
78
+ * @param {DynamicObject} dynamicObjectCollection The DynamicObjectCollection to which the DynamicObject belongs.
79
+ *
80
+ * @returns {Boolean} true if any new properties were created while processing the packet, false otherwise.
81
+ *
82
+ * @see DynamicObject
83
+ * @see DynamicProperty
84
+ * @see DynamicObjectCollection
85
+ * @see CzmlDefaults#updaters
86
+ */
87
+ DynamicPyramid.processCzmlPacket = function(dynamicObject, packet, dynamicObjectCollection) {
88
+ var pyramidData = packet.pyramid;
89
+ if (typeof pyramidData === 'undefined') {
90
+ return false;
91
+ }
92
+
93
+ var pyramidUpdated = false;
94
+ var pyramid = dynamicObject.pyramid;
95
+ pyramidUpdated = typeof pyramid === 'undefined';
96
+ if (pyramidUpdated) {
97
+ dynamicObject.pyramid = pyramid = new DynamicPyramid();
98
+ }
99
+
100
+ var interval = pyramidData.interval;
101
+ if (typeof interval !== 'undefined') {
102
+ interval = TimeInterval.fromIso8601(interval);
103
+ }
104
+
105
+ if (typeof pyramidData.show !== 'undefined') {
106
+ var show = pyramid.show;
107
+ if (typeof show === 'undefined') {
108
+ pyramid.show = show = new DynamicProperty(CzmlBoolean);
109
+ pyramidUpdated = true;
110
+ }
111
+ show.processCzmlIntervals(pyramidData.show, interval);
112
+ }
113
+
114
+ if (typeof pyramidData.radius !== 'undefined') {
115
+ var radius = pyramid.radius;
116
+ if (typeof radius === 'undefined') {
117
+ pyramid.radius = radius = new DynamicProperty(CzmlNumber);
118
+ pyramidUpdated = true;
119
+ }
120
+ radius.processCzmlIntervals(pyramidData.radius, interval);
121
+ }
122
+
123
+ if (typeof pyramidData.showIntersection !== 'undefined') {
124
+ var showIntersection = pyramid.showIntersection;
125
+ if (typeof showIntersection === 'undefined') {
126
+ pyramid.showIntersection = showIntersection = new DynamicProperty(CzmlBoolean);
127
+ pyramidUpdated = true;
128
+ }
129
+ showIntersection.processCzmlIntervals(pyramidData.showIntersection, interval);
130
+ }
131
+
132
+ if (typeof pyramidData.intersectionColor !== 'undefined') {
133
+ var intersectionColor = pyramid.intersectionColor;
134
+ if (typeof intersectionColor === 'undefined') {
135
+ pyramid.intersectionColor = intersectionColor = new DynamicProperty(CzmlColor);
136
+ pyramidUpdated = true;
137
+ }
138
+ intersectionColor.processCzmlIntervals(pyramidData.intersectionColor, interval);
139
+ }
140
+
141
+ if (typeof pyramidData.material !== 'undefined') {
142
+ var material = pyramid.material;
143
+ if (typeof material === 'undefined') {
144
+ pyramid.material = material = new DynamicMaterialProperty();
145
+ pyramidUpdated = true;
146
+ }
147
+ material.processCzmlIntervals(pyramidData.material, interval);
148
+ }
149
+
150
+ if (typeof pyramidData.directions !== 'undefined') {
151
+ var directions = pyramid.directions;
152
+ if (typeof directions === 'undefined') {
153
+ pyramid.directions = directions = new DynamicDirectionsProperty();
154
+ pyramidUpdated = true;
155
+ }
156
+ directions.processCzmlIntervals(pyramidData.directions, interval);
157
+ }
158
+ return pyramidUpdated;
159
+ };
160
+
161
+ /**
162
+ * Given two DynamicObjects, takes the pyramid properties from the second
163
+ * and assigns them to the first, assuming such a property did not already exist.
164
+ * This method is not normally called directly, but is part of the array of CZML processing
165
+ * functions that is passed into the CompositeDynamicObjectCollection constructor.
166
+ *
167
+ * @param {DynamicObject} targetObject The DynamicObject which will have properties merged onto it.
168
+ * @param {DynamicObject} objectToMerge The DynamicObject containing properties to be merged.
169
+ *
170
+ * @see CzmlDefaults
171
+ */
172
+ DynamicPyramid.mergeProperties = function(targetObject, objectToMerge) {
173
+ var pyramidToMerge = objectToMerge.pyramid;
174
+ if (typeof pyramidToMerge !== 'undefined') {
175
+
176
+ var targetPyramid = targetObject.pyramid;
177
+ if (typeof targetPyramid === 'undefined') {
178
+ targetObject.pyramid = targetPyramid = new DynamicPyramid();
179
+ }
180
+
181
+ targetPyramid.show = defaultValue(targetPyramid.show, pyramidToMerge.show);
182
+ targetPyramid.directions = defaultValue(targetPyramid.directions, pyramidToMerge.directions);
183
+ targetPyramid.radius = defaultValue(targetPyramid.radius, pyramidToMerge.radius);
184
+ targetPyramid.showIntersection = defaultValue(targetPyramid.showIntersection, pyramidToMerge.showIntersection);
185
+ targetPyramid.intersectionColor = defaultValue(targetPyramid.intersectionColor, pyramidToMerge.intersectionColor);
186
+ targetPyramid.material = defaultValue(targetPyramid.material, pyramidToMerge.material);
187
+ }
188
+ };
189
+
190
+ /**
191
+ * Given a DynamicObject, undefines the pyramid associated with it.
192
+ * This method is not normally called directly, but is part of the array of CZML processing
193
+ * functions that is passed into the CompositeDynamicObjectCollection constructor.
194
+ *
195
+ * @param {DynamicObject} dynamicObject The DynamicObject to remove the pyramid from.
196
+ *
197
+ * @see CzmlDefaults
198
+ */
199
+ DynamicPyramid.undefineProperties = function(dynamicObject) {
200
+ dynamicObject.pyramid = undefined;
201
+ };
202
+
203
+ return DynamicPyramid;
204
+ });