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,525 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ '../Core/Ellipsoid',
5
+ '../Core/JulianDate',
6
+ '../Core/TimeInterval',
7
+ '../Core/TimeIntervalCollection',
8
+ '../Core/Iso8601',
9
+ '../Core/Cartesian3',
10
+ '../Core/Cartographic',
11
+ '../Core/Matrix3',
12
+ '../Core/ReferenceFrame',
13
+ '../Core/Transforms',
14
+ './CzmlCartesian3',
15
+ './CzmlCartographic',
16
+ './DynamicProperty'
17
+ ], function(
18
+ DeveloperError,
19
+ Ellipsoid,
20
+ JulianDate,
21
+ TimeInterval,
22
+ TimeIntervalCollection,
23
+ Iso8601,
24
+ Cartesian3,
25
+ Cartographic,
26
+ Matrix3,
27
+ ReferenceFrame,
28
+ Transforms,
29
+ CzmlCartesian3,
30
+ CzmlCartographic,
31
+ DynamicProperty) {
32
+ "use strict";
33
+
34
+ var scratchMatrix3 = new Matrix3();
35
+ var wgs84 = Ellipsoid.WGS84;
36
+ var potentialTypes = [CzmlCartesian3, CzmlCartographic];
37
+
38
+ /**
39
+ * A dynamic property which stores both Cartesian and Cartographic data
40
+ * and can convert and return the desired type of data for a desired time.
41
+ * Rather than creating instances of this object directly, it's typically
42
+ * created and managed via loading CZML data into a DynamicObjectCollection.
43
+ * Instances of this type are exposed via DynamicObject and it's sub-objects
44
+ * and are responsible for interpreting and interpolating the data for visualization.
45
+ *
46
+ * @alias DynamicPositionProperty
47
+ * @constructor
48
+ *
49
+ * @see DynamicObject
50
+ * @see DynamicProperty
51
+ * @see ReferenceProperty
52
+ * @see DynamicMaterialProperty
53
+ * @see DynamicDirectionsProperty
54
+ * @see DynamicVertexPositionsProperty
55
+ */
56
+ var DynamicPositionProperty = function() {
57
+ this._dynamicProperties = [];
58
+ this._propertyIntervals = new TimeIntervalCollection();
59
+ this._cachedTime = undefined;
60
+ this._cachedInterval = undefined;
61
+ };
62
+
63
+ /**
64
+ * Processes the provided CZML interval or intervals into this property.
65
+ *
66
+ * @memberof DynamicPositionProperty
67
+ *
68
+ * @param {Object} czmlIntervals The CZML data to process.
69
+ * @param {TimeInterval} [constrainedInterval] Constrains the processing so that any times outside of this interval are ignored.
70
+ */
71
+ DynamicPositionProperty.prototype.processCzmlIntervals = function(czmlIntervals, constrainedInterval) {
72
+ if (Array.isArray(czmlIntervals)) {
73
+ for ( var i = 0, len = czmlIntervals.length; i < len; i++) {
74
+ this._addCzmlInterval(czmlIntervals[i], constrainedInterval);
75
+ }
76
+ } else {
77
+ this._addCzmlInterval(czmlIntervals, constrainedInterval);
78
+ }
79
+ };
80
+
81
+ /**
82
+ * Retrieves the value of the object at the supplied time as a Cartographic.
83
+ * @memberof DynamicPositionProperty
84
+ *
85
+ * @param {JulianDate} time The time for which to retrieve the value.
86
+ * @param {Cartographic} [result] The object to store the result onto, if undefined a new instance will be created.
87
+ * @returns The modified result property, or a new instance if result was undefined.
88
+ */
89
+ DynamicPositionProperty.prototype.getValueCartographic = function(time, result) {
90
+ if (typeof time === 'undefined') {
91
+ throw new DeveloperError('time is required.');
92
+ }
93
+
94
+ var interval = this._cachedInterval;
95
+ if (this._cachedTime !== time) {
96
+ this._cachedTime = time;
97
+ if (typeof interval === 'undefined' || !interval.contains(time)) {
98
+ interval = this._propertyIntervals.findIntervalContainingDate(time);
99
+ this._cachedInterval = interval;
100
+ }
101
+ }
102
+
103
+ if (typeof interval === 'undefined') {
104
+ return undefined;
105
+ }
106
+ var property = interval.data;
107
+ var valueType = property.valueType;
108
+ if (valueType === CzmlCartographic) {
109
+ return property.getValue(time, result);
110
+ }
111
+ result = interval.cachedValue = property.getValue(time, interval.cachedValue);
112
+ if (typeof result !== 'undefined') {
113
+ if (interval.referenceFrame === ReferenceFrame.INERTIAL) {
114
+ var icrfToFixed = Transforms.computeIcrfToFixedMatrix(time, scratchMatrix3);
115
+ if (typeof icrfToFixed === 'undefined') {
116
+ return undefined;
117
+ }
118
+ result = icrfToFixed.multiplyByVector(result, result);
119
+ }
120
+ result = wgs84.cartesianToCartographic(result);
121
+ }
122
+ return result;
123
+ };
124
+
125
+ /**
126
+ * Retrieves the value of the object at the supplied time as a Cartesian3.
127
+ * @memberof DynamicPositionProperty
128
+ *
129
+ * @param {JulianDate} time The time for which to retrieve the value.
130
+ * @param {Cartesian3} [result] The object to store the result onto, if undefined a new instance will be created.
131
+ * @returns The modified result property, or a new instance if result was undefined.
132
+ */
133
+ DynamicPositionProperty.prototype.getValueCartesian = function(time, result) {
134
+ if (typeof time === 'undefined') {
135
+ throw new DeveloperError('time is required.');
136
+ }
137
+
138
+ var interval = this._cachedInterval;
139
+ if (this._cachedTime !== time) {
140
+ this._cachedTime = time;
141
+ if (typeof interval === 'undefined' || !interval.contains(time)) {
142
+ interval = this._propertyIntervals.findIntervalContainingDate(time);
143
+ this._cachedInterval = interval;
144
+ }
145
+ }
146
+
147
+ if (typeof interval === 'undefined') {
148
+ return undefined;
149
+ }
150
+ var property = interval.data;
151
+ var valueType = property.valueType;
152
+ if (valueType === CzmlCartesian3) {
153
+ result = property.getValue(time, result);
154
+ if (interval.referenceFrame === ReferenceFrame.INERTIAL) {
155
+ var icrfToFixed = Transforms.computeIcrfToFixedMatrix(time, scratchMatrix3);
156
+ if (typeof icrfToFixed === 'undefined') {
157
+ return undefined;
158
+ }
159
+ return icrfToFixed.multiplyByVector(result, result);
160
+ }
161
+ return result;
162
+ }
163
+ result = interval.cachedValue = property.getValue(time, interval.cachedValue);
164
+ if (typeof result !== 'undefined') {
165
+ result = wgs84.cartographicToCartesian(result);
166
+ }
167
+ return result;
168
+ };
169
+
170
+ /**
171
+ * Retrieves all values in the provided time range. Rather than sampling, this
172
+ * method returns the actual data points used in the source data, with the exception
173
+ * of start, stop and currentTime parameters, which will be sampled.
174
+ *
175
+ * @param {JulianDate} start The first time to retrieve values for.
176
+ * @param {JulianDate} stop The last time to retrieve values for .
177
+ * @param {JulianDate} [currentTime] If provided, causes the algorithm to always sample the provided time, assuming it is between start and stop.
178
+ * @param {Array} [result] The array into which to store the result.
179
+ * @returns The modified result array or a new instance if one was not provided.
180
+ */
181
+ DynamicPositionProperty.prototype.getValueRangeCartesian = function(start, stop, currentTime, result) {
182
+ if (typeof start === 'undefined') {
183
+ throw new DeveloperError('start is required');
184
+ }
185
+
186
+ if (typeof stop === 'undefined') {
187
+ throw new DeveloperError('stop is required');
188
+ }
189
+
190
+ if (typeof result === 'undefined') {
191
+ result = [];
192
+ }
193
+
194
+ var propertyIntervals = this._propertyIntervals;
195
+
196
+ var startIndex = typeof start === 'undefined' ? 0 : propertyIntervals.indexOf(start);
197
+ var stopIndex = typeof stop === 'undefined' ? propertyIntervals.length - 1 : propertyIntervals.indexOf(stop);
198
+ if (startIndex < 0) {
199
+ startIndex = ~startIndex;
200
+ }
201
+
202
+ if (startIndex === propertyIntervals.getLength()) {
203
+ result.length = 0;
204
+ return result;
205
+ }
206
+
207
+ if (stopIndex < 0) {
208
+ stopIndex = ~stopIndex;
209
+ if (stopIndex !== propertyIntervals.getLength()) {
210
+ result.length = 0;
211
+ return result;
212
+ }
213
+ stopIndex -= 1;
214
+ }
215
+
216
+ var r = 0;
217
+ //Always step exactly on start (but only use it if it exists.)
218
+ var tmp;
219
+ tmp = this.getValueCartesian(start, result[r]);
220
+ if (typeof tmp !== 'undefined') {
221
+ result[r++] = tmp;
222
+ }
223
+
224
+ var scratchCartographic;
225
+ var steppedOnNow = typeof currentTime === 'undefined' || currentTime.lessThan(start) || currentTime.greaterThan(stop);
226
+ for ( var i = startIndex; i < stopIndex + 1; i++) {
227
+ var current;
228
+ var interval = propertyIntervals.get(i);
229
+ var nextInterval = propertyIntervals.get(i + 1);
230
+ var loopStop = stop;
231
+ if (typeof nextInterval !== 'undefined' && stop.greaterThan(nextInterval.start)) {
232
+ loopStop = nextInterval.start;
233
+ }
234
+ var property = interval.data;
235
+ var valueType = property.valueType;
236
+ var currentInterval = property._intervals.get(0);
237
+ var times = currentInterval.data.times;
238
+ if (typeof times !== 'undefined') {
239
+ //Iterate over all interval times and add the ones that fall in our
240
+ //time range. Note that times can contain data outside of
241
+ //the intervals range. This is by design for use with interpolation.
242
+ var t;
243
+ if (valueType === CzmlCartesian3) {
244
+ for (t = 0; t < times.length; t++) {
245
+ current = times[t];
246
+ if (!steppedOnNow && current.greaterThanOrEquals(currentTime)) {
247
+ tmp = property.getValue(currentTime, result[r]);
248
+ if (typeof tmp !== 'undefined') {
249
+ result[r++] = tmp;
250
+ }
251
+ steppedOnNow = true;
252
+ }
253
+ if (current.greaterThan(start) && current.lessThan(loopStop)) {
254
+ tmp = property.getValue(current, result[r]);
255
+ if (typeof tmp !== 'undefined') {
256
+ result[r++] = tmp;
257
+ }
258
+ }
259
+ }
260
+ } else {
261
+ for (t = 0; t < times.length; t++) {
262
+ current = times[t];
263
+ if (!steppedOnNow && current.greaterThanOrEquals(currentTime)) {
264
+ scratchCartographic = property.getValue(currentTime, scratchCartographic);
265
+ result[r++] = wgs84.cartographicToCartesian(scratchCartographic);
266
+ steppedOnNow = true;
267
+ }
268
+ if (current.greaterThan(start) && current.lessThan(loopStop)) {
269
+ scratchCartographic = property.getValue(current, scratchCartographic);
270
+ result[r++] = wgs84.cartographicToCartesian(scratchCartographic);
271
+ }
272
+ }
273
+ }
274
+ } else {
275
+ //If times is undefined, it's because the interval contains a single position
276
+ //at which it stays for the duration of the interval.
277
+ current = interval.start;
278
+
279
+ //We don't need to actually step on now in this case, since the next value
280
+ //will be the same; but we do still need to check for it.
281
+ steppedOnNow = steppedOnNow || current.greaterThanOrEquals(currentTime);
282
+
283
+ //Finally, get the value at this non-sampled interval.
284
+ if (current.lessThan(loopStop)) {
285
+ if (valueType === CzmlCartesian3) {
286
+ tmp = property.getValue(current, result[r]);
287
+ if (typeof tmp !== 'undefined') {
288
+ result[r++] = tmp;
289
+ }
290
+ } else {
291
+ scratchCartographic = property.getValue(current, scratchCartographic);
292
+ result[r++] = wgs84.cartographicToCartesian(scratchCartographic);
293
+ }
294
+ }
295
+ }
296
+ }
297
+
298
+ //Always step exactly on stop (but only use it if it exists.)
299
+ tmp = this.getValueCartesian(stop, result[r]);
300
+ if (typeof tmp !== 'undefined') {
301
+ result[r++] = tmp;
302
+ }
303
+
304
+ result.length = r;
305
+ return result;
306
+ };
307
+
308
+ DynamicPositionProperty.prototype._addCzmlInterval = function(czmlInterval, constrainedInterval) {
309
+ this._cachedTime = undefined;
310
+ this._cachedInterval = undefined;
311
+
312
+ var iso8601Interval = czmlInterval.interval, property, valueType, unwrappedInterval;
313
+ if (typeof iso8601Interval === 'undefined') {
314
+ iso8601Interval = Iso8601.MAXIMUM_INTERVAL.clone();
315
+ } else {
316
+ iso8601Interval = TimeInterval.fromIso8601(iso8601Interval);
317
+ }
318
+
319
+ if (typeof constrainedInterval !== 'undefined') {
320
+ iso8601Interval = iso8601Interval.intersect(constrainedInterval);
321
+ }
322
+
323
+ //See if we already have data at that interval.
324
+ var thisIntervals = this._propertyIntervals;
325
+ var existingInterval = thisIntervals.findInterval(iso8601Interval.start, iso8601Interval.stop);
326
+
327
+ if (typeof existingInterval !== 'undefined') {
328
+ //If so, see if the new data is the same type.
329
+ property = existingInterval.data;
330
+ if (typeof property !== 'undefined') {
331
+ valueType = property.valueType;
332
+ unwrappedInterval = valueType.unwrapInterval(czmlInterval);
333
+ }
334
+ } else {
335
+ //If not, create it.
336
+ existingInterval = iso8601Interval;
337
+ existingInterval.referenceFrame = ReferenceFrame.FIXED;
338
+ thisIntervals.addInterval(existingInterval);
339
+ }
340
+
341
+ //If the new data was a different type, unwrapping fails, look for a valueType for this type.
342
+ if (typeof unwrappedInterval === 'undefined') {
343
+ for ( var i = 0, len = potentialTypes.length; i < len; i++) {
344
+ valueType = potentialTypes[i];
345
+ unwrappedInterval = valueType.unwrapInterval(czmlInterval);
346
+ if (typeof unwrappedInterval !== 'undefined') {
347
+ property = new DynamicProperty(valueType);
348
+ this._dynamicProperties.push(property);
349
+ existingInterval.data = property;
350
+ break;
351
+ }
352
+ }
353
+ }
354
+
355
+ //We could handle the data, add it to the property.
356
+ if (typeof unwrappedInterval !== 'undefined') {
357
+ if (typeof czmlInterval.referenceFrame !== 'undefined') {
358
+ existingInterval.referenceFrame = ReferenceFrame[czmlInterval.referenceFrame];
359
+ }
360
+ property._addCzmlIntervalUnwrapped(iso8601Interval.start, iso8601Interval.stop, unwrappedInterval, czmlInterval.epoch, czmlInterval.interpolationAlgorithm, czmlInterval.interpolationDegree);
361
+ }
362
+ };
363
+
364
+ DynamicPositionProperty.prototype._getReferenceFrame = function() {
365
+ var propertyIntervals = this._propertyIntervals;
366
+ if (propertyIntervals.getLength() > 0) {
367
+ return propertyIntervals.get(0).referenceFrame;
368
+ }
369
+ return undefined;
370
+ };
371
+
372
+ DynamicPositionProperty.prototype._getValueInReferenceFrame = function(time, referenceFrame, result) {
373
+ if (typeof time === 'undefined') {
374
+ throw new DeveloperError('time is required.');
375
+ }
376
+
377
+ var interval = this._cachedInterval;
378
+ if (this._cachedTime !== time) {
379
+ this._cachedTime = time;
380
+ if (typeof interval === 'undefined' || !interval.contains(time)) {
381
+ interval = this._propertyIntervals.findIntervalContainingDate(time);
382
+ this._cachedInterval = interval;
383
+ }
384
+ }
385
+
386
+ if (typeof interval === 'undefined') {
387
+ return undefined;
388
+ }
389
+ var property = interval.data;
390
+ var valueType = property.valueType;
391
+ if (valueType === CzmlCartesian3) {
392
+ result = property.getValue(time, result);
393
+ } else {
394
+ result = interval.cachedValue = property.getValue(time, interval.cachedValue);
395
+ if (typeof result !== 'undefined') {
396
+ result = wgs84.cartographicToCartesian(result);
397
+ }
398
+ }
399
+
400
+ if (interval.referenceFrame !== referenceFrame) {
401
+ if (referenceFrame === ReferenceFrame.FIXED) {
402
+ var icrfToFixed = Transforms.computeIcrfToFixedMatrix(time, scratchMatrix3);
403
+ if (typeof icrfToFixed === 'undefined') {
404
+ return undefined;
405
+ }
406
+ return icrfToFixed.multiplyByVector(result, result);
407
+ }
408
+ if (referenceFrame === ReferenceFrame.INERTIAL) {
409
+ var fixedToIcrf = Transforms.computeFixedToIcrfMatrix(time, scratchMatrix3);
410
+ if (typeof fixedToIcrf === 'undefined') {
411
+ return undefined;
412
+ }
413
+ return fixedToIcrf.multiplyByVector(result, result);
414
+ }
415
+ }
416
+ return result;
417
+ };
418
+
419
+ DynamicPositionProperty.prototype._getValueRangeInReferenceFrame = function(start, stop, currentTime, referenceFrame, result) {
420
+ if (typeof start === 'undefined') {
421
+ throw new DeveloperError('start is required');
422
+ }
423
+
424
+ if (typeof stop === 'undefined') {
425
+ throw new DeveloperError('stop is required');
426
+ }
427
+
428
+ if (typeof result === 'undefined') {
429
+ result = [];
430
+ }
431
+
432
+ var propertyIntervals = this._propertyIntervals;
433
+
434
+ var startIndex = typeof start === 'undefined' ? 0 : propertyIntervals.indexOf(start);
435
+ var stopIndex = typeof stop === 'undefined' ? propertyIntervals.length - 1 : propertyIntervals.indexOf(stop);
436
+ if (startIndex < 0) {
437
+ startIndex = ~startIndex;
438
+ }
439
+
440
+ if (startIndex === propertyIntervals.getLength()) {
441
+ result.length = 0;
442
+ return result;
443
+ }
444
+
445
+ if (stopIndex < 0) {
446
+ stopIndex = ~stopIndex;
447
+ if (stopIndex !== propertyIntervals.getLength()) {
448
+ result.length = 0;
449
+ return result;
450
+ }
451
+ stopIndex -= 1;
452
+ }
453
+
454
+ var r = 0;
455
+ //Always step exactly on start (but only use it if it exists.)
456
+ var tmp;
457
+ tmp = this._getValueInReferenceFrame(start, referenceFrame, result[r]);
458
+ if (typeof tmp !== 'undefined') {
459
+ result[r++] = tmp;
460
+ }
461
+
462
+ var steppedOnNow = typeof currentTime === 'undefined' || currentTime.lessThan(start) || currentTime.greaterThan(stop);
463
+ for ( var i = startIndex; i < stopIndex + 1; i++) {
464
+ var current;
465
+ var interval = propertyIntervals.get(i);
466
+ var nextInterval = propertyIntervals.get(i + 1);
467
+ var loopStop = stop;
468
+ if (typeof nextInterval !== 'undefined' && stop.greaterThan(nextInterval.start)) {
469
+ loopStop = nextInterval.start;
470
+ }
471
+ var property = interval.data;
472
+ var currentInterval = property._intervals.get(0);
473
+ var times = currentInterval.data.times;
474
+ if (typeof times !== 'undefined') {
475
+ //Iterate over all interval times and add the ones that fall in our
476
+ //time range. Note that times can contain data outside of
477
+ //the intervals range. This is by design for use with interpolation.
478
+ var t;
479
+ for (t = 0; t < times.length; t++) {
480
+ current = times[t];
481
+ if (!steppedOnNow && current.greaterThanOrEquals(currentTime)) {
482
+ tmp = this._getValueInReferenceFrame(currentTime, referenceFrame, result[r]);
483
+ if (typeof tmp !== 'undefined') {
484
+ result[r++] = tmp;
485
+ }
486
+ steppedOnNow = true;
487
+ }
488
+ if (current.greaterThan(start) && current.lessThan(loopStop)) {
489
+ tmp = this._getValueInReferenceFrame(current, referenceFrame, result[r]);
490
+ if (typeof tmp !== 'undefined') {
491
+ result[r++] = tmp;
492
+ }
493
+ }
494
+ }
495
+ } else {
496
+ //If times is undefined, it's because the interval contains a single position
497
+ //at which it stays for the duration of the interval.
498
+ current = interval.start;
499
+
500
+ //We don't need to actually step on now in this case, since the next value
501
+ //will be the same; but we do still need to check for it.
502
+ steppedOnNow = steppedOnNow || current.greaterThanOrEquals(currentTime);
503
+
504
+ //Finally, get the value at this non-sampled interval.
505
+ if (current.lessThan(loopStop)) {
506
+ tmp = this._getValueInReferenceFrame(current, referenceFrame, result[r]);
507
+ if (typeof tmp !== 'undefined') {
508
+ result[r++] = tmp;
509
+ }
510
+ }
511
+ }
512
+ }
513
+
514
+ //Always step exactly on stop (but only use it if it exists.)
515
+ tmp = this._getValueInReferenceFrame(stop, referenceFrame, result[r]);
516
+ if (typeof tmp !== 'undefined') {
517
+ result[r++] = tmp;
518
+ }
519
+
520
+ result.length = r;
521
+ return result;
522
+ };
523
+
524
+ return DynamicPositionProperty;
525
+ });