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,211 @@
1
+ /*global define*/
2
+ define([
3
+ './defaultValue',
4
+ './DeveloperError',
5
+ './freezeObject',
6
+ './Math'
7
+ ], function(
8
+ defaultValue,
9
+ DeveloperError,
10
+ freezeObject,
11
+ CesiumMath) {
12
+ "use strict";
13
+
14
+ /**
15
+ * A position defined by longitude, latitude, and height.
16
+ * @alias Cartographic
17
+ * @constructor
18
+ *
19
+ * @param {Number} [longitude=0.0] The longitude, in radians.
20
+ * @param {Number} [latitude=0.0] The latitude, in radians.
21
+ * @param {Number} [height=0.0] The height, in meters, above the ellipsoid.
22
+ *
23
+ * @see Ellipsoid
24
+ */
25
+ var Cartographic = function(longitude, latitude, height) {
26
+ /**
27
+ * The longitude, in radians.
28
+ * @type Number
29
+ */
30
+ this.longitude = defaultValue(longitude, 0.0);
31
+
32
+ /**
33
+ * The latitude, in radians.
34
+ * @type Number
35
+ */
36
+ this.latitude = defaultValue(latitude, 0.0);
37
+
38
+ /**
39
+ * The height, in meters, above the ellipsoid.
40
+ * @type Number
41
+ */
42
+ this.height = defaultValue(height, 0.0);
43
+ };
44
+
45
+ /**
46
+ * Creates a new Cartographic instance from longitude and latitude
47
+ * specified in degrees. The values in the resulting object will
48
+ * be in radians.
49
+ * @memberof Cartographic
50
+ *
51
+ * @param {Number} [longitude=0.0] The longitude, in degrees.
52
+ * @param {Number} [latitude=0.0] The latitude, in degrees.
53
+ * @param {Number} [height=0.0] The height, in meters, above the ellipsoid.
54
+ * @param {Cartographic} [result] The object onto which to store the result.
55
+ * @return {Cartographic} The modified result parameter or a new Cartographic instance if one was not provided.
56
+ */
57
+ Cartographic.fromDegrees = function(longitude, latitude, height, result) {
58
+ longitude = CesiumMath.toRadians(defaultValue(longitude, 0.0));
59
+ latitude = CesiumMath.toRadians(defaultValue(latitude, 0.0));
60
+ height = defaultValue(height, 0.0);
61
+
62
+ if (typeof result === 'undefined') {
63
+ return new Cartographic(longitude, latitude, height);
64
+ }
65
+
66
+ result.longitude = longitude;
67
+ result.latitude = latitude;
68
+ result.height = height;
69
+ return result;
70
+ };
71
+
72
+ /**
73
+ * Duplicates a Cartographic instance.
74
+ * @memberof Cartographic
75
+ *
76
+ * @param {Cartographic} cartographic The cartographic to duplicate.
77
+ * @param {Cartographic} [result] The object onto which to store the result.
78
+ * @return {Cartographic} The modified result parameter or a new Cartographic instance if one was not provided.
79
+ *
80
+ * @exception {DeveloperError} cartographic is required.
81
+ */
82
+ Cartographic.clone = function(cartographic, result) {
83
+ if (typeof cartographic === 'undefined') {
84
+ throw new DeveloperError('cartographic is required');
85
+ }
86
+ if (typeof result === 'undefined') {
87
+ return new Cartographic(cartographic.longitude, cartographic.latitude, cartographic.height);
88
+ }
89
+ result.longitude = cartographic.longitude;
90
+ result.latitude = cartographic.latitude;
91
+ result.height = cartographic.height;
92
+ return result;
93
+ };
94
+
95
+ /**
96
+ * Compares the provided cartographics componentwise and returns
97
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
98
+ * @memberof Cartographic
99
+ *
100
+ * @param {Cartographic} [left] The first cartographic.
101
+ * @param {Cartographic} [right] The second cartographic.
102
+ * @return {Boolean} <code>true</code> if left and right are equal, <code>false</code> otherwise.
103
+ */
104
+ Cartographic.equals = function(left, right) {
105
+ return (left === right) ||
106
+ ((typeof left !== 'undefined') &&
107
+ (typeof right !== 'undefined') &&
108
+ (left.longitude === right.longitude) &&
109
+ (left.latitude === right.latitude) &&
110
+ (left.height === right.height));
111
+ };
112
+
113
+ /**
114
+ * Compares the provided cartographics componentwise and returns
115
+ * <code>true</code> if they are within the provided epsilon,
116
+ * <code>false</code> otherwise.
117
+ * @memberof Cartographic
118
+ *
119
+ * @param {Cartographic} [left] The first cartographic.
120
+ * @param {Cartographic} [right] The second cartographic.
121
+ * @param {Number} epsilon The epsilon to use for equality testing.
122
+ * @return {Boolean} <code>true</code> if left and right are within the provided epsilon, <code>false</code> otherwise.
123
+ *
124
+ * @exception {DeveloperError} epsilon is required and must be a number.
125
+ */
126
+ Cartographic.equalsEpsilon = function(left, right, epsilon) {
127
+ if (typeof epsilon !== 'number') {
128
+ throw new DeveloperError('epsilon is required and must be a number.');
129
+ }
130
+ return (left === right) ||
131
+ ((typeof left !== 'undefined') &&
132
+ (typeof right !== 'undefined') &&
133
+ (Math.abs(left.longitude - right.longitude) <= epsilon) &&
134
+ (Math.abs(left.latitude - right.latitude) <= epsilon) &&
135
+ (Math.abs(left.height - right.height) <= epsilon));
136
+ };
137
+
138
+ /**
139
+ * Creates a string representing the provided cartographic in the format '(longitude, latitude, height)'.
140
+ * @memberof Cartographic
141
+ *
142
+ * @param {Cartographic} cartographic The cartographic to stringify.
143
+ * @return {String} A string representing the provided cartographic in the format '(longitude, latitude, height)'.
144
+ *
145
+ * @exception {DeveloperError} cartographic is required.
146
+ */
147
+ Cartographic.toString = function(cartographic) {
148
+ if (typeof cartographic === 'undefined') {
149
+ throw new DeveloperError('cartographic is required');
150
+ }
151
+ return '(' + cartographic.longitude + ', ' + cartographic.latitude + ', ' + cartographic.height + ')';
152
+ };
153
+
154
+ /**
155
+ * An immutable Cartographic instance initialized to (0.0, 0.0, 0.0).
156
+ *
157
+ * @memberof Cartographic
158
+ */
159
+ Cartographic.ZERO = freezeObject(new Cartographic(0.0, 0.0, 0.0));
160
+
161
+ /**
162
+ * Duplicates this instance.
163
+ * @memberof Cartographic
164
+ *
165
+ * @param {Cartographic} [result] The object onto which to store the result.
166
+ * @return {Cartographic} The modified result parameter or a new Cartographic instance if one was not provided.
167
+ */
168
+ Cartographic.prototype.clone = function(result) {
169
+ return Cartographic.clone(this, result);
170
+ };
171
+
172
+ /**
173
+ * Compares the provided against this cartographic componentwise and returns
174
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
175
+ * @memberof Cartographic
176
+ *
177
+ * @param {Cartographic} [right] The second cartographic.
178
+ * @return {Boolean} <code>true</code> if left and right are equal, <code>false</code> otherwise.
179
+ */
180
+ Cartographic.prototype.equals = function(right) {
181
+ return Cartographic.equals(this, right);
182
+ };
183
+
184
+ /**
185
+ * Compares the provided against this cartographic componentwise and returns
186
+ * <code>true</code> if they are within the provided epsilon,
187
+ * <code>false</code> otherwise.
188
+ * @memberof Cartographic
189
+ *
190
+ * @param {Cartographic} [right] The second cartographic.
191
+ * @param {Number} epsilon The epsilon to use for equality testing.
192
+ * @return {Boolean} <code>true</code> if left and right are within the provided epsilon, <code>false</code> otherwise.
193
+ *
194
+ * @exception {DeveloperError} epsilon is required and must be a number.
195
+ */
196
+ Cartographic.prototype.equalsEpsilon = function(right, epsilon) {
197
+ return Cartographic.equalsEpsilon(this, right, epsilon);
198
+ };
199
+
200
+ /**
201
+ * Creates a string representing this cartographic in the format '(longitude, latitude, height)'.
202
+ * @memberof Cartographic
203
+ *
204
+ * @return {String} A string representing the provided cartographic in the format '(longitude, latitude, height)'.
205
+ */
206
+ Cartographic.prototype.toString = function() {
207
+ return Cartographic.toString(this);
208
+ };
209
+
210
+ return Cartographic;
211
+ });
@@ -0,0 +1,232 @@
1
+ /*global define*/
2
+ define([
3
+ './DeveloperError',
4
+ './Matrix4',
5
+ './Cartesian3',
6
+ './Cartesian4',
7
+ './HermiteSpline'
8
+ ],
9
+ function(
10
+ DeveloperError,
11
+ Matrix4,
12
+ Cartesian3,
13
+ Cartesian4,
14
+ HermiteSpline) {
15
+ "use strict";
16
+
17
+ /**
18
+ * A Catmull-Rom spline is a cubic spline where the tangent at control points,
19
+ * except the first and last, are computed using the previous and next control points.
20
+ * Catmull-Rom splines are in the class C<sup>1</sup>.
21
+ *
22
+ * @alias CatmullRomSpline
23
+ * @constructor
24
+ *
25
+ * @param {Array} controlPoints The array of control points. Each element of the array should be an object with <code>point</code> and <code>time</code> properties.
26
+ * @param {Cartesian3} firstTangent The tangent of the curve at the first control point.
27
+ * If the tangent is not given, it will be estimated.
28
+ * @param {Cartesian3} lastTangent The tangent of the curve at the last control point.
29
+ * If the tangent is not given, it will be estimated.
30
+ *
31
+ * @exception {DeveloperError} controlPoints is required.
32
+ * @exception {DeveloperError} controlPoints must be an array of at least length 3.
33
+ *
34
+ * @see HermiteSpline
35
+ *
36
+ * @example
37
+ * // spline above the earth from Philadelphia to Los Angeles
38
+ * var controlPoints = [
39
+ * {point: new Cartesian3(1235398.0, -4810983.0, 4146266.0), time: 0.0},
40
+ * {point: new Cartesian3(1372574.0, -5345182.0, 4606657.0), time: 1.5},
41
+ * {point: new Cartesian3(-757983.0, -5542796.0, 4514323.0), time: 3.0},
42
+ * {point: new Cartesian3(-2821260.0, -5248423.0, 4021290.0), time: 4.5},
43
+ * {point: new Cartesian3(-2539788.0, -4724797.0, 3620093.0), time: 6.0}
44
+ * ];
45
+ * var spline = new CatmullRomSpline(controlPoints);
46
+ */
47
+ var CatmullRomSpline = function(controlPoints, firstTangent, lastTangent) {
48
+ if (!controlPoints || !(controlPoints instanceof Array) || controlPoints.length < 3) {
49
+ throw new DeveloperError('controlPoints is required and must be an array of objects with point and time properties, with a length of at least 3.');
50
+ }
51
+
52
+ this._points = controlPoints;
53
+ this._lastTimeIndex = 0;
54
+
55
+ if (firstTangent) {
56
+ this._ti = Cartesian3.clone(firstTangent);
57
+ } else {
58
+ var controlPoint0 = Cartesian3.clone(controlPoints[0].point);
59
+ var controlPoint1 = Cartesian3.clone(controlPoints[1].point);
60
+ var controlPoint2 = Cartesian3.clone(controlPoints[2].point);
61
+
62
+ this._ti = controlPoint1
63
+ .multiplyByScalar(2.0)
64
+ .subtract(controlPoint2)
65
+ .subtract(controlPoint0)
66
+ .multiplyByScalar(0.5);
67
+ }
68
+
69
+ if (firstTangent) {
70
+ this._to = Cartesian3.clone(lastTangent);
71
+ } else {
72
+ var n = controlPoints.length - 1;
73
+
74
+ var controlPointn0 = Cartesian3.clone(controlPoints[n].point);
75
+ var controlPointn1 = Cartesian3.clone(controlPoints[n - 1].point);
76
+ var controlPointn2 = Cartesian3.clone(controlPoints[n - 2].point);
77
+
78
+ this._to = controlPointn0
79
+ .subtract(controlPointn1.multiplyByScalar(2.0))
80
+ .add(controlPointn2)
81
+ .multiplyByScalar(0.5);
82
+ }
83
+ };
84
+
85
+ CatmullRomSpline.catmullRomCoefficientMatrix = new Matrix4(
86
+ -0.5, 1.0, -0.5, 0.0,
87
+ 1.5, -2.5, 0.0, 1.0,
88
+ -1.5, 2.0, 0.5, 0.0,
89
+ 0.5, -0.5, 0.0, 0.0);
90
+
91
+ /**
92
+ * Returns the array of control points.
93
+ *
94
+ * @memberof CatmullRomSpline
95
+ * @return {Array} The array of control points.
96
+ */
97
+ CatmullRomSpline.prototype.getControlPoints = function() {
98
+ return this._points;
99
+ };
100
+
101
+ /**
102
+ * Returns the tangent of the first control point.
103
+ *
104
+ * @memberof CatmullRomSpline
105
+ *
106
+ * @return {Cartesian3} The tangent of the first control point.
107
+ *
108
+ * @see CatmullRomSpline#getEndTangent
109
+ */
110
+ CatmullRomSpline.prototype.getStartTangent = function() {
111
+ return this._ti;
112
+ };
113
+
114
+ /**
115
+ * Returns the tangent of the last control point.
116
+ *
117
+ * @memberof CatmullRomSpline
118
+ *
119
+ * @return {Cartesian3} The tangent of the last control point.
120
+ *
121
+ * @see CatmullRomSpline#getStartTangent
122
+ */
123
+ CatmullRomSpline.prototype.getEndTangent = function() {
124
+ return this._to;
125
+ };
126
+
127
+ CatmullRomSpline.prototype._findIndex = function(time) {
128
+ // Take advantage of temporal coherence by checking current, next and previous intervals
129
+ // for containment of time.
130
+ var i = this._lastTimeIndex || 0;
131
+ if (time >= this._points[i].time) {
132
+ if (i + 1 < this._points.length && time < this._points[i + 1].time) {
133
+ return i;
134
+ } else if (i + 2 < this._points.length && time < this._points[i + 2].time) {
135
+ this._lastTimeIndex = i + 1;
136
+ return this._lastTimeIndex;
137
+ }
138
+ } else if (i - 1 >= 0 && time >= this._points[i - 1].time) {
139
+ this._lastTimeIndex = i - 1;
140
+ return this._lastTimeIndex;
141
+ }
142
+
143
+ // The above failed so do a linear search. For the use cases so far, the
144
+ // length of the list is less than 10. In the future, if there is a bottle neck,
145
+ // it might be here.
146
+ for (i = 0; i < this._points.length - 1; ++i) {
147
+ if (time >= this._points[i].time && time < this._points[i + 1].time) {
148
+ break;
149
+ }
150
+ }
151
+
152
+ if (i === this._points.length - 1) {
153
+ i = this._points.length - 2;
154
+ }
155
+
156
+ this._lastTimeIndex = i;
157
+ return this._lastTimeIndex;
158
+ };
159
+
160
+ /**
161
+ * Evaluates the curve at a given time.
162
+ *
163
+ * @memberof CatmullRomSpline
164
+ *
165
+ * @param {Number} time The time at which to evaluate the curve.
166
+ *
167
+ * @exception {DeveloperError} time is required.
168
+ * @exception {DeveloperError} time must be in the range <code>[a<sub>0</sub>, a<sub>n</sub>]</code>,
169
+ * where <code>a<sub>0</sub></code> and <code>a<sub>n</sub></code> are the time properties of first and
170
+ * last elements in the array given during construction, respectively.
171
+ *
172
+ * @return {Cartesian3} The point on the curve at the given <code>time</code>.
173
+ *
174
+ * @example
175
+ * // spline above the earth from Philadelphia to Los Angeles
176
+ * var controlPoints = [
177
+ * {point: new Cartesian3(1235398.0, -4810983.0, 4146266.0), time: 0.0},
178
+ * {point: new Cartesian3(1372574.0, -5345182.0, 4606657.0), time: 1.5},
179
+ * {point: new Cartesian3(-757983.0, -5542796.0, 4514323.0), time: 3.0},
180
+ * {point: new Cartesian3(-2821260.0, -5248423.0, 4021290.0), time: 4.5},
181
+ * {point: new Cartesian3(-2539788.0, -4724797.0, 3620093.0), time: 6.0}
182
+ * ];
183
+ * var spline = new CatmullRomSpline(controlPoints);
184
+ *
185
+ * // some position above Los Angeles
186
+ * var position = spline.evaluate(5.0);
187
+ */
188
+ CatmullRomSpline.prototype.evaluate = function(time) {
189
+ if (typeof time === 'undefined') {
190
+ throw new DeveloperError('time is required.');
191
+ }
192
+
193
+ if (time < this._points[0].time || time > this._points[this._points.length - 1].time) {
194
+ throw new DeveloperError('time is out of range.');
195
+ }
196
+
197
+ var i = this._findIndex(time);
198
+ var u = (time - this._points[i].time) / (this._points[i + 1].time - this._points[i].time);
199
+
200
+ var timeVec = new Cartesian3(0.0, u * u, u);
201
+ timeVec.x = timeVec.y * u;
202
+
203
+ var p0, p1, p2, p3, coefs;
204
+ if (i === 0) {
205
+ p0 = this._points[0].point;
206
+ p1 = this._points[1].point;
207
+ p2 = this._ti;
208
+ p3 = this._points[2].point.subtract(p0).multiplyByScalar(0.5);
209
+ coefs = HermiteSpline.hermiteCoefficientMatrix.multiplyByPoint(timeVec);
210
+ } else if (i === this._points.length - 2) {
211
+ p0 = this._points[i].point;
212
+ p1 = this._points[i + 1].point;
213
+ p2 = p1.subtract(this._points[i - 1].point).multiplyByScalar(0.5);
214
+ p3 = this._to;
215
+ coefs = HermiteSpline.hermiteCoefficientMatrix.multiplyByPoint(timeVec);
216
+ } else {
217
+ p0 = this._points[i - 1].point;
218
+ p1 = this._points[i].point;
219
+ p2 = this._points[i + 1].point;
220
+ p3 = this._points[i + 2].point;
221
+ coefs = CatmullRomSpline.catmullRomCoefficientMatrix.multiplyByPoint(timeVec);
222
+ }
223
+ p0 = p0.multiplyByScalar(coefs.x);
224
+ p1 = p1.multiplyByScalar(coefs.y);
225
+ p2 = p2.multiplyByScalar(coefs.z);
226
+ p3 = p3.multiplyByScalar(coefs.w);
227
+
228
+ return p0.add(p1.add(p2.add(p3)));
229
+ };
230
+
231
+ return CatmullRomSpline;
232
+ });
@@ -0,0 +1,195 @@
1
+ /*global define*/
2
+ define([
3
+ './DeveloperError',
4
+ './JulianDate',
5
+ './ClockStep',
6
+ './ClockRange'
7
+ ], function(
8
+ DeveloperError,
9
+ JulianDate,
10
+ ClockStep,
11
+ ClockRange) {
12
+ "use strict";
13
+
14
+ /**
15
+ * A simple clock for keeping track of simulated time.
16
+ * @alias Clock
17
+ * @constructor
18
+ *
19
+ * @param {Object} [template] The template object containing the properties to be set on the clock.
20
+ * @exception {DeveloperError} startTime must come before stopTime.
21
+ *
22
+ * @see ClockStep
23
+ * @see ClockRange
24
+ * @see JulianDate
25
+ * @see AnimationController
26
+ *
27
+ * @example
28
+ * //Create a clock that loops on Christmas day 2012 and runs
29
+ * //in real-time. currentTime will default to startTime.
30
+ * var clock = new Clock({
31
+ * startTime : JulianDate.fromIso8601("12-25-2012");
32
+ * stopTime : JulianDate.fromIso8601("12-26-2012");
33
+ * clockRange : ClockRange.LOOP;
34
+ * });
35
+ */
36
+ var Clock = function(template) {
37
+ var t = template;
38
+ if (typeof t === 'undefined') {
39
+ t = {};
40
+ }
41
+
42
+ var startTime = t.startTime;
43
+ var startTimeUndefined = typeof startTime === 'undefined';
44
+
45
+ var stopTime = t.stopTime;
46
+ var stopTimeUndefined = typeof stopTime === 'undefined';
47
+
48
+ var currentTime = t.currentTime;
49
+ var currentTimeUndefined = typeof currentTime === 'undefined';
50
+
51
+ if (startTimeUndefined && stopTimeUndefined && currentTimeUndefined) {
52
+ currentTime = new JulianDate();
53
+ startTime = currentTime.clone();
54
+ stopTime = currentTime.addDays(1.0);
55
+ } else if (startTimeUndefined && stopTimeUndefined) {
56
+ startTime = currentTime.clone();
57
+ stopTime = currentTime.addDays(1.0);
58
+ } else if (startTimeUndefined && currentTimeUndefined) {
59
+ startTime = stopTime.addDays(-1.0);
60
+ currentTime = startTime.clone();
61
+ } else if (currentTimeUndefined && stopTimeUndefined) {
62
+ currentTime = startTime.clone();
63
+ stopTime = startTime.addDays(1.0);
64
+ } else if (currentTimeUndefined) {
65
+ currentTime = startTime.clone();
66
+ } else if (stopTimeUndefined) {
67
+ stopTime = currentTime.addDays(1.0);
68
+ } else if (startTimeUndefined) {
69
+ startTime = currentTime.clone();
70
+ }
71
+
72
+ if (startTime.greaterThan(stopTime)) {
73
+ throw new DeveloperError('startTime must come before stopTime.');
74
+ }
75
+
76
+ var multiplier = t.multiplier;
77
+ if (typeof multiplier === 'undefined') {
78
+ multiplier = 1.0;
79
+ }
80
+
81
+ var clockStep = t.clockStep;
82
+ if (typeof clockStep === 'undefined') {
83
+ clockStep = ClockStep.SYSTEM_CLOCK_DEPENDENT;
84
+ }
85
+
86
+ var clockRange = t.clockRange;
87
+ if (typeof clockRange === 'undefined') {
88
+ clockRange = ClockRange.UNBOUNDED;
89
+ }
90
+
91
+ /**
92
+ * The start time of the clock.
93
+ * @type JulianDate
94
+ */
95
+ this.startTime = startTime;
96
+
97
+ /**
98
+ * The stop time of the clock.
99
+ * @type JulianDate
100
+ */
101
+ this.stopTime = stopTime;
102
+
103
+ /**
104
+ * The current time.
105
+ * @type JulianDate
106
+ */
107
+ this.currentTime = currentTime;
108
+
109
+ /**
110
+ * Determines how much time advances when tick is called, negative values allow for advancing backwards.
111
+ * If <code>clockStep</code> is set to ClockStep.TICK_DEPENDENT this is the number of seconds to advance.
112
+ * If <code>clockStep</code> is set to ClockStep.SYSTEM_CLOCK_DEPENDENT this value is multiplied by the
113
+ * elapsed system time since the last call to tick.
114
+ * @type Number
115
+ */
116
+ this.multiplier = multiplier;
117
+
118
+ /**
119
+ * Determines if calls to <code>tick</code> are frame dependent or system clock dependent.
120
+ * @type ClockStep
121
+ */
122
+ this.clockStep = clockStep;
123
+
124
+ /**
125
+ * Determines how tick should behave when <code>startTime</code> or <code>stopTime</code> is reached.
126
+ * @type ClockRange
127
+ */
128
+ this.clockRange = clockRange;
129
+
130
+ this._lastCpuTime = new Date().getTime();
131
+ };
132
+
133
+ /**
134
+ * Advances the clock from the currentTime based on the current configuration options.
135
+ * @memberof Clock
136
+ *
137
+ * @param {Number} [secondsToTick] optional parameter to force the clock to tick the provided number of seconds,
138
+ * regardless of the value of <code>clockStep</code> and <code>multiplier</code>.
139
+ * @returns {JulianDate} The new value of the <code>currentTime</code> property.
140
+ */
141
+ Clock.prototype.tick = function(secondsToTick) {
142
+ return this._tick(secondsToTick, this.multiplier);
143
+ };
144
+
145
+ /**
146
+ * Advances the clock in the opposite direction of the current <code>multiplier</code>.
147
+ * If <code>multiplier</code> is positive this will advance the clock backwards one tick.
148
+ * If <code>multiplier</code> is negative this will advance the clock forward one tick.
149
+ * @memberof Clock
150
+ *
151
+ * @returns {JulianDate} The new value of Clock.currentTime
152
+ */
153
+ Clock.prototype.reverseTick = function() {
154
+ return this._tick(undefined, -this.multiplier);
155
+ };
156
+
157
+ Clock.prototype._tick = function(secondsToTick, multiplier) {
158
+ var startTime = this.startTime;
159
+ var stopTime = this.stopTime;
160
+ var currentTime = this.currentTime;
161
+ var currentCpuTime = new Date().getTime();
162
+
163
+ if (typeof secondsToTick === 'undefined') {
164
+ if (this.clockStep === ClockStep.TICK_DEPENDENT) {
165
+ currentTime = currentTime.addSeconds(multiplier);
166
+ } else {
167
+ var milliseconds = currentCpuTime - this._lastCpuTime;
168
+ currentTime = currentTime.addSeconds(multiplier * (milliseconds / 1000.0));
169
+ }
170
+ } else {
171
+ currentTime = currentTime.addSeconds(secondsToTick);
172
+ }
173
+
174
+ if (this.clockRange === ClockRange.CLAMPED) {
175
+ if (currentTime.lessThan(startTime)) {
176
+ currentTime = startTime;
177
+ } else if (currentTime.greaterThan(stopTime)) {
178
+ currentTime = stopTime;
179
+ }
180
+ } else if (this.clockRange === ClockRange.LOOP) {
181
+ while (currentTime.lessThan(startTime)) {
182
+ currentTime = stopTime.addSeconds(startTime.getSecondsDifference(currentTime));
183
+ }
184
+ while (currentTime.greaterThan(stopTime)) {
185
+ currentTime = startTime.addSeconds(stopTime.getSecondsDifference(currentTime));
186
+ }
187
+ }
188
+
189
+ this.currentTime = currentTime;
190
+ this._lastCpuTime = currentCpuTime;
191
+ return currentTime;
192
+ };
193
+
194
+ return Clock;
195
+ });