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,38 @@
1
+ /*global define*/
2
+ define(['./Enumeration'], function(Enumeration) {
3
+ "use strict";
4
+
5
+ /**
6
+ * This enumerated type is for representing keyboard modifiers. These are keys
7
+ * that are held down in addition to other event types.
8
+ *
9
+ * @exports KeyboardEventModifier
10
+ */
11
+ var KeyboardEventModifier = {
12
+ /**
13
+ * Represents the shift key being held down.
14
+ *
15
+ * @constant
16
+ * @type {Enumeration}
17
+ */
18
+ SHIFT : new Enumeration(0, 'SHIFT'),
19
+
20
+ /**
21
+ * Represents the control key being held down.
22
+ *
23
+ * @constant
24
+ * @type {Enumeration}
25
+ */
26
+ CTRL : new Enumeration(1, 'CTRL'),
27
+
28
+ /**
29
+ * Represents the alt key being held down.
30
+ *
31
+ * @constant
32
+ * @type {Enumeration}
33
+ */
34
+ ALT : new Enumeration(2, 'ALT')
35
+ };
36
+
37
+ return KeyboardEventModifier;
38
+ });
@@ -0,0 +1,96 @@
1
+ /*global define*/
2
+ define(function() {
3
+ "use strict";
4
+
5
+ /**
6
+ * Functions for performing Lagrange interpolation.
7
+ * @exports LagrangePolynomialApproximation
8
+ *
9
+ * @see LinearApproximation
10
+ * @see HermitePolynomialApproximation
11
+ */
12
+ var LagrangePolynomialApproximation = {
13
+ type : 'Lagrange'
14
+ };
15
+
16
+ /**
17
+ * Given the desired degree, returns the number of data points required for interpolation.
18
+ *
19
+ * @memberof LagrangePolynomialApproximation
20
+ *
21
+ * @param degree The desired degree of interpolation.
22
+ *
23
+ * @returns The number of required data points needed for the desired degree of interpolation.
24
+ */
25
+ LagrangePolynomialApproximation.getRequiredDataPoints = function(degree) {
26
+ return Math.max(degree + 1.0, 2);
27
+ };
28
+
29
+ /**
30
+ * <p>
31
+ * Interpolates values using the supplied interpolation algorithm. The appropriate subset of input
32
+ * values to use for the interpolation is determined automatically from an interpolation given
33
+ * degree.
34
+ * </p>
35
+ * <p>
36
+ * The xTable array can contain any number of elements, and the appropriate subset will be
37
+ * selected according to the degree of interpolation requested. For example, if degree is 5,
38
+ * the 6 elements surrounding x will be used for interpolation. When using
39
+ * {@link LinearApproximation} the degree should be 1 since it always deals with only 2 elements
40
+ * surrounding x. The yTable array should contain a number of elements equal to:
41
+ * <code>xTable.length * yStride</code>. If insufficient elements are provided
42
+ * to perform the requested degree of interpolation, the highest possible degree of interpolation
43
+ * will be performed.
44
+ * </p>
45
+ *
46
+ * @param {Number} x The independent variable for which the dependent variables will be interpolated.
47
+ *
48
+ * @param {Array} xTable The array of independent variables to use to interpolate. The values
49
+ * in this array must be in increasing order and the same value must not occur twice in the array.
50
+ *
51
+ * @param {Array} yTable The array of dependent variables to use to interpolate. For a set of three
52
+ * dependent values (p,q,w) and their derivatives (dp, dq, dw) at time 1 and time 2 this should be
53
+ * as follows: {p1, q1, w1, dp1, dq1, dw1, p2, q2, w2, dp2, dq2, dw2}.
54
+ *
55
+ * @param {Number} yStride The number of dependent variable values in yTable corresponding to
56
+ * each independent variable value in xTable.
57
+ *
58
+ * @returns An array of interpolated values. The array contains at least yStride elements, each
59
+ * of which is an interpolated dependent variable value.
60
+ *
61
+ * @see LinearApproximation
62
+ * @see HermitePolynomialApproximation
63
+ *
64
+ * @memberof LagrangePolynomialApproximation
65
+ *
66
+ */
67
+ LagrangePolynomialApproximation.interpolateOrderZero = function(x, xTable, yTable, yStride) {
68
+ var i;
69
+ var j;
70
+ var length = xTable.length;
71
+ var result = new Array(yStride);
72
+
73
+ for (i = 0; i < yStride; i++) {
74
+ result[i] = 0;
75
+ }
76
+
77
+ for (i = 0; i < length; i++) {
78
+ var coefficient = 1;
79
+
80
+ for (j = 0; j < length; j++) {
81
+ if (j !== i) {
82
+ var diffX = xTable[i] - xTable[j];
83
+ coefficient *= (x - xTable[j]) / diffX;
84
+ }
85
+ }
86
+
87
+ for (j = 0; j < yStride; j++) {
88
+ result[j] += coefficient * yTable[i * yStride + j];
89
+ }
90
+ }
91
+
92
+ return result;
93
+ };
94
+
95
+ return LagrangePolynomialApproximation;
96
+ });
@@ -0,0 +1,158 @@
1
+ /*global define*/
2
+ define([
3
+ './DeveloperError'
4
+ ], function(
5
+ DeveloperError) {
6
+ "use strict";
7
+
8
+ /**
9
+ * Describes a single leap second, which is constructed from a {@link JulianDate} and a
10
+ * numerical offset representing the number of seconds TAI is ahead of the UTC time standard.
11
+ *
12
+ * @alias LeapSecond
13
+ * @constructor
14
+ *
15
+ * @param {JulianDate} date A Julian date representing the time of the leap second.
16
+ * @param {Number} offset The cumulative number of seconds, that TAI is ahead of UTC at provided date.
17
+ *
18
+ * @exception {DeveloperError} <code>date</code> is required.
19
+ * @exception {DeveloperError} <code>offset</code> is required.
20
+ *
21
+ * @see JulianDate
22
+ * @see TimeStandard
23
+ *
24
+ * @example
25
+ * // Example 1. Construct a LeapSecond using a JulianDate
26
+ * var date = new Date('January 1, 1990 00:00:00 UTC');
27
+ * var leapSecond = new LeapSecond(JulianDate.fromDate(date), 25.0);
28
+ * var offset = leapSecond.offset; // 25.0
29
+ *
30
+ * //////////////////////////////////////////////////////////////////
31
+ *
32
+ * // Example 2. Construct a LeapSecond using a date string
33
+ * var date = 'January 1, 1990 00:00:00 UTC';
34
+ * var leapSecond = new LeapSecond(date, 25.0);
35
+ */
36
+ var LeapSecond = function(date, offset) {
37
+ if (typeof date === 'undefined') {
38
+ throw new DeveloperError('date is required.');
39
+ }
40
+
41
+ if (offset === null || isNaN(offset)) {
42
+ throw new DeveloperError('offset is required and must be a number.');
43
+ }
44
+
45
+ /**
46
+ * The Julian date at which this leap second occurs.
47
+ *
48
+ * @type {JulianDate}
49
+ */
50
+ this.julianDate = date;
51
+
52
+ /**
53
+ * The cumulative number of seconds between the UTC and TAI time standards at the time
54
+ * of this leap second.
55
+ *
56
+ * @type {Number}
57
+ */
58
+ this.offset = offset;
59
+ };
60
+
61
+ /**
62
+ * Sets the list of leap seconds used throughout Cesium.
63
+ *
64
+ * @memberof LeapSecond
65
+ *
66
+ * @param {Array} leapSeconds An array of {@link LeapSecond} objects.
67
+ * @exception {DeveloperErrpr} leapSeconds is required and must be an array.
68
+ *
69
+ * @see LeapSecond.setLeapSeconds
70
+ *
71
+ * @example
72
+ * LeapSecond.setLeapSeconds([
73
+ * new LeapSecond(new JulianDate(2453736, 43233.0, TimeStandard.TAI), 33), // January 1, 2006 00:00:00 UTC
74
+ * new LeapSecond(new JulianDate(2454832, 43234.0, TimeStandard.TAI), 34), // January 1, 2009 00:00:00 UTC
75
+ * new LeapSecond(new JulianDate(2456109, 43235.0, TimeStandard.TAI), 35) // July 1, 2012 00:00:00 UTC
76
+ * ]);
77
+ */
78
+ LeapSecond.setLeapSeconds = function(leapSeconds) {
79
+ if (!Array.isArray(leapSeconds)) {
80
+ throw new DeveloperError("leapSeconds is required and must be an array.");
81
+ }
82
+ LeapSecond._leapSeconds = leapSeconds;
83
+ LeapSecond._leapSeconds.sort(LeapSecond.compareLeapSecondDate);
84
+ };
85
+
86
+ /**
87
+ * Returns a copy of the array of leap seconds used throughout Cesium. By default, this is the
88
+ * official list of leap seconds that was available when Cesium was released.
89
+ *
90
+ * @memberof LeapSecond
91
+ *
92
+ * @return {Array} A list of {@link LeapSecond} objects.
93
+ *
94
+ * @see LeapSecond.setLeapSeconds
95
+ */
96
+ LeapSecond.getLeapSeconds = function() {
97
+ return LeapSecond._leapSeconds;
98
+ };
99
+
100
+ /**
101
+ * Checks whether two leap seconds are equivalent to each other.
102
+ *
103
+ * @memberof LeapSecond
104
+ *
105
+ * @param {LeapSecond} other The leap second to compare against.
106
+ *
107
+ * @return {Boolean} <code>true</code> if the leap seconds are equal; otherwise, <code>false</code>.
108
+ *
109
+ * @example
110
+ * var date = new Date('January 1, 1990 00:00:00 UTC');
111
+ * var leapSecond1 = new LeapSecond(JulianDate.fromDate(date), 25.0);
112
+ * var leapSecond2 = new LeapSecond(JulianDate.fromDate(date), 25.0);
113
+ * leapSecond1.equals(leapSecond2); // true
114
+ */
115
+ LeapSecond.prototype.equals = function(other) {
116
+ return this.julianDate.equals(other.julianDate) && (this.offset === other.offset);
117
+ };
118
+
119
+ /**
120
+ * Given two leap seconds, determines which comes before the other by comparing
121
+ * their respective Julian dates.
122
+ *
123
+ * @memberof LeapSecond
124
+ *
125
+ * @param {LeapSecond} leapSecond1 The first leap second to be compared.
126
+ * @param {LeapSecond} leapSecond2 The second leap second to be compared.
127
+ *
128
+ * @return {Number} A negative value if the first leap second is earlier than the second,
129
+ * a positive value if the first leap second is later than the second, or
130
+ * zero if the two leap seconds are equal (ignoring their offsets).
131
+ *
132
+ * @see JulianDate#lessThan
133
+ * @see JulianDate#isAfter
134
+ *
135
+ * @example
136
+ * var date = new Date('January 1, 2006 00:00:00 UTC');
137
+ * var leapSecond1 = new LeapSecond(JulianDate.fromDate(date), 33.0);
138
+ * var leapSecond2 = new LeapSecond(JulianDate.fromDate(date), 34.0);
139
+ * LeapSecond.compareLeapSecondDate(leapSecond1, leapSecond2); // returns 0
140
+ */
141
+ LeapSecond.compareLeapSecondDate = function(leapSecond1, leapSecond2) {
142
+ var julianDayNum1 = leapSecond1.julianDate.getJulianDayNumber();
143
+ var julianDayNum2 = leapSecond2.julianDate.getJulianDayNumber();
144
+ if (julianDayNum1 !== julianDayNum2) {
145
+ return julianDayNum1 < julianDayNum2 ? -1 : 1;
146
+ }
147
+ var secondsOfDay1 = leapSecond1.julianDate.getSecondsOfDay();
148
+ var secondsOfDay2 = leapSecond2.julianDate.getSecondsOfDay();
149
+ if (secondsOfDay1 !== secondsOfDay2) {
150
+ return secondsOfDay1 < secondsOfDay2 ? -1 : 1;
151
+ }
152
+ return 0;
153
+ };
154
+
155
+ LeapSecond._leapSeconds = [];
156
+
157
+ return LeapSecond;
158
+ });
@@ -0,0 +1,98 @@
1
+ /*global define*/
2
+ define([
3
+ './DeveloperError'
4
+ ],function(
5
+ DeveloperError) {
6
+ "use strict";
7
+
8
+
9
+ /**
10
+ * Functions for performing linear interpolation.
11
+ * @exports LinearApproximation
12
+ *
13
+ * @see LagrangePolynomialApproximation
14
+ * @see HermitePolynomialApproximation
15
+ */
16
+ var LinearApproximation = {
17
+ type : 'Linear'
18
+ };
19
+
20
+ /**
21
+ * Given the desired degree, returns the number of data points required for interpolation.
22
+ *
23
+ * @memberof LinearApproximation
24
+ *
25
+ * @param degree The desired degree of interpolation.
26
+ *
27
+ * @exception {DeveloperError} Linear interpolation can only generate a first degree polynomial.
28
+ *
29
+ * @returns The number of required data points needed for the desired degree of interpolation.
30
+ */
31
+ LinearApproximation.getRequiredDataPoints = function(degree) {
32
+ if (degree !== 1) {
33
+ throw new DeveloperError('Linear interpolation can only generate a first degree polynomial.');
34
+ }
35
+ return 2;
36
+ };
37
+
38
+ /**
39
+ * <p>
40
+ * Interpolates values using the supplied interpolation algorithm. The appropriate subset of input
41
+ * values to use for the interpolation is determined automatically from an interpolation given
42
+ * degree.
43
+ * </p>
44
+ * <p>
45
+ * The xTable array can contain any number of elements, and the appropriate subset will be
46
+ * selected according to the degree of interpolation requested. For example, if degree is 5,
47
+ * the 6 elements surrounding x will be used for interpolation. When using
48
+ * {@link LinearApproximation} the degree should be 1 since it always deals with only 2 elements
49
+ * surrounding x. The yTable array should contain a number of elements equal to:
50
+ * <code>xTable.length * yStride</code>. If insufficient elements are provided
51
+ * to perform the requested degree of interpolation, the highest possible degree of interpolation
52
+ * will be performed.
53
+ * </p>
54
+ *
55
+ * @param {Number} x The independent variable for which the dependent variables will be interpolated.
56
+ *
57
+ * @param {Array} xTable The array of independent variables to use to interpolate. The values
58
+ * in this array must be in increasing order and the same value must not occur twice in the array.
59
+ *
60
+ * @param {Array} yTable The array of dependent variables to use to interpolate. For a set of three
61
+ * dependent values (p,q,w) and their derivatives (dp, dq, dw) at time 1 and time 2 this should be
62
+ * as follows: {p1, q1, w1, dp1, dq1, dw1, p2, q2, w2, dp2, dq2, dw2}.
63
+ *
64
+ * @param {Number} yStride The number of dependent variable values in yTable corresponding to
65
+ * each independent variable value in xTable.
66
+ *
67
+ * @returns An array of interpolated values. The array contains at least yStride elements, each
68
+ * of which is an interpolated dependent variable value.
69
+ *
70
+ * @see LagrangePolynomialApproximation
71
+ * @see HermitePolynomialApproximation
72
+ *
73
+ *
74
+ * @memberof LinearApproximation
75
+ */
76
+ LinearApproximation.interpolateOrderZero = function(x, xTable, yTable, yStride) {
77
+ if (xTable.length !== 2) {
78
+ throw new DeveloperError('The xTable provided to the linear interpolator must have exactly two elements.');
79
+ } else if (yStride <= 0) {
80
+ throw new DeveloperError('There must be at least 1 dependent variable for each independent variable.');
81
+ }
82
+
83
+ var result = new Array(yStride), x0 = xTable[0], x1 = xTable[1], i, y0, y1;
84
+
85
+ for (i = 0; i < yStride; i++) {
86
+ //calculates the interpolated values
87
+
88
+ y0 = yTable[i];
89
+ y1 = yTable[i + yStride];
90
+
91
+ result[i] = (((y1 - y0) * x) + (x1 * y0) - (x0 * y1)) / (x1 - x0);
92
+ }
93
+
94
+ return result;
95
+ };
96
+
97
+ return LinearApproximation;
98
+ });
@@ -0,0 +1,532 @@
1
+ /*global define*/
2
+ define([
3
+ './defaultValue',
4
+ './DeveloperError'
5
+ ], function(
6
+ defaultValue,
7
+ DeveloperError) {
8
+ "use strict";
9
+
10
+ /**
11
+ * Math functions.
12
+ * @exports CesiumMath
13
+ */
14
+ var CesiumMath = {};
15
+
16
+ /**
17
+ * 0.1
18
+ * @constant
19
+ * @type Number
20
+ */
21
+ CesiumMath.EPSILON1 = 0.1;
22
+
23
+ /**
24
+ * 0.01
25
+ * @constant
26
+ * @type Number
27
+ */
28
+ CesiumMath.EPSILON2 = 0.01;
29
+
30
+ /**
31
+ * 0.001
32
+ * @constant
33
+ * @type Number
34
+ */
35
+ CesiumMath.EPSILON3 = 0.001;
36
+
37
+ /**
38
+ * 0.0001
39
+ * @constant
40
+ * @type Number
41
+ */
42
+ CesiumMath.EPSILON4 = 0.0001;
43
+
44
+ /**
45
+ * 0.00001
46
+ * @constant
47
+ * @type Number
48
+ */
49
+ CesiumMath.EPSILON5 = 0.00001;
50
+
51
+ /**
52
+ * 0.000001
53
+ * @constant
54
+ * @type Number
55
+ */
56
+ CesiumMath.EPSILON6 = 0.000001;
57
+
58
+ /**
59
+ * 0.0000001
60
+ * @constant
61
+ * @type Number
62
+ */
63
+ CesiumMath.EPSILON7 = 0.0000001;
64
+
65
+ /**
66
+ * 0.00000001
67
+ * @constant
68
+ * @type Number
69
+ */
70
+ CesiumMath.EPSILON8 = 0.00000001;
71
+
72
+ /**
73
+ * 0.000000001
74
+ * @constant
75
+ * @type Number
76
+ */
77
+ CesiumMath.EPSILON9 = 0.000000001;
78
+
79
+ /**
80
+ * 0.0000000001
81
+ * @constant
82
+ * @type Number
83
+ */
84
+ CesiumMath.EPSILON10 = 0.0000000001;
85
+
86
+ /**
87
+ * 0.00000000001
88
+ * @constant
89
+ * @type Number
90
+ */
91
+ CesiumMath.EPSILON11 = 0.00000000001;
92
+
93
+ /**
94
+ * 0.000000000001
95
+ * @constant
96
+ * @type Number
97
+ */
98
+ CesiumMath.EPSILON12 = 0.000000000001;
99
+
100
+ /**
101
+ * 0.0000000000001
102
+ * @constant
103
+ * @type Number
104
+ */
105
+ CesiumMath.EPSILON13 = 0.0000000000001;
106
+
107
+ /**
108
+ * 0.00000000000001
109
+ * @constant
110
+ * @type Number
111
+ */
112
+ CesiumMath.EPSILON14 = 0.00000000000001;
113
+
114
+ /**
115
+ * 0.000000000000001
116
+ * @constant
117
+ * @type Number
118
+ */
119
+ CesiumMath.EPSILON15 = 0.000000000000001;
120
+
121
+ /**
122
+ * 0.0000000000000001
123
+ * @constant
124
+ * @type Number
125
+ */
126
+ CesiumMath.EPSILON16 = 0.0000000000000001;
127
+
128
+ /**
129
+ * 0.00000000000000001
130
+ * @constant
131
+ * @type Number
132
+ */
133
+ CesiumMath.EPSILON17 = 0.00000000000000001;
134
+
135
+ /**
136
+ * 0.000000000000000001
137
+ * @constant
138
+ * @type Number
139
+ */
140
+ CesiumMath.EPSILON18 = 0.000000000000000001;
141
+
142
+ /**
143
+ * 0.0000000000000000001
144
+ * @constant
145
+ * @type Number
146
+ */
147
+ CesiumMath.EPSILON19 = 0.0000000000000000001;
148
+
149
+ /**
150
+ * 0.00000000000000000001
151
+ * @constant
152
+ * @type Number
153
+ */
154
+ CesiumMath.EPSILON20 = 0.00000000000000000001;
155
+
156
+ /**
157
+ * 3.986004418e14
158
+ * @constant
159
+ * @type Number
160
+ */
161
+ CesiumMath.GRAVITATIONALPARAMETER = 3.986004418e14;
162
+
163
+ /**
164
+ * Returns the sign of the value; 1 if the value is positive, -1 if the value is
165
+ * negative, or 0 if the value is 0.
166
+ *
167
+ * @param {Number} value The value to return the sign of.
168
+ *
169
+ * @return {Number} The sign of value.
170
+ */
171
+ CesiumMath.sign = function(value) {
172
+ if (value > 0) {
173
+ return 1;
174
+ }
175
+ if (value < 0) {
176
+ return -1;
177
+ }
178
+
179
+ return 0;
180
+ };
181
+
182
+ /**
183
+ * Returns the hyperbolic sine of a {@code Number}.
184
+ * The hyperbolic sine of <em>value</em> is defined to be
185
+ * (<em>e<sup>x</sup>&nbsp;-&nbsp;e<sup>-x</sup></em>)/2.0
186
+ * where <i>e</i> is Euler's number, approximately 2.71828183.
187
+ *
188
+ * <p>Special cases:
189
+ * <ul>
190
+ * <li>If the argument is NaN, then the result is NaN.</li>
191
+ *
192
+ * <li>If the argument is infinite, then the result is an infinity
193
+ * with the same sign as the argument.</li>
194
+ *
195
+ * <li>If the argument is zero, then the result is a zero with the
196
+ * same sign as the argument.</li>
197
+ * </ul>
198
+ *</p>
199
+ *
200
+ * @param value The number whose hyperbolic sine is to be returned.
201
+ *
202
+ * @return The hyperbolic sine of {@code value}.
203
+ *
204
+ */
205
+ CesiumMath.sinh = function(value) {
206
+ var part1 = Math.pow(Math.E, value);
207
+ var part2 = Math.pow(Math.E, -1.0 * value);
208
+
209
+ return (part1 - part2) * 0.5;
210
+ };
211
+
212
+ /**
213
+ * Returns the hyperbolic cosine of a {@code Number}.
214
+ * The hyperbolic cosine of <strong>value</strong> is defined to be
215
+ * (<em>e<sup>x</sup>&nbsp;+&nbsp;e<sup>-x</sup></em>)/2.0
216
+ * where <i>e</i> is Euler's number, approximately 2.71828183.
217
+ *
218
+ * <p>Special cases:
219
+ * <ul>
220
+ * <li>If the argument is NaN, then the result is NaN.</li>
221
+ *
222
+ * <li>If the argument is infinite, then the result is positive infinity.</li>
223
+ *
224
+ * <li>If the argument is zero, then the result is {@code 1.0}.</li>
225
+ * </ul>
226
+ *</p>
227
+ *
228
+ * @param value The number whose hyperbolic cosine is to be returned.
229
+ *
230
+ * @return The hyperbolic cosine of {@code value}.
231
+ */
232
+ CesiumMath.cosh = function(value) {
233
+ var part1 = Math.pow(Math.E, value);
234
+ var part2 = Math.pow(Math.E, -1.0 * value);
235
+
236
+ return (part1 + part2) * 0.5;
237
+ };
238
+
239
+ /**
240
+ * DOC_TBA
241
+ */
242
+ CesiumMath.lerp = function(p, q, time) {
243
+ return ((1.0 - time) * p) + (time * q);
244
+ };
245
+
246
+ /**
247
+ * 1/pi
248
+ *
249
+ * @constant
250
+ * @type {Number}
251
+ * @see czm_pi
252
+ */
253
+ CesiumMath.PI = Math.PI;
254
+
255
+ /**
256
+ * 1/pi
257
+ *
258
+ * @constant
259
+ * @type {Number}
260
+ * @see czm_oneOverPi
261
+ */
262
+ CesiumMath.ONE_OVER_PI = 1.0 / Math.PI;
263
+
264
+ /**
265
+ * pi/2
266
+ *
267
+ * @constant
268
+ * @type {Number}
269
+ * @see czm_piOverTwo
270
+ */
271
+ CesiumMath.PI_OVER_TWO = Math.PI * 0.5;
272
+
273
+ /**
274
+ * pi/3
275
+ * <br /><br />
276
+ *
277
+ * @constant
278
+ * @type {Number}
279
+ * @see czm_piOverThree
280
+ */
281
+ CesiumMath.PI_OVER_THREE = Math.PI / 3.0;
282
+
283
+ /**
284
+ * pi/4
285
+ *
286
+ * @constant
287
+ * @type {Number}
288
+ * @see czm_piOverFour
289
+ */
290
+ CesiumMath.PI_OVER_FOUR = Math.PI / 4.0;
291
+
292
+ /**
293
+ * pi/6
294
+ *
295
+ * @constant
296
+ * @type {Number}
297
+ * @see czm_piOverSix
298
+ */
299
+ CesiumMath.PI_OVER_SIX = Math.PI / 6.0;
300
+
301
+ /**
302
+ * 3pi/2
303
+ *
304
+ * @constant
305
+ * @type {Number}
306
+ * @see czm_threePiOver2
307
+ */
308
+ CesiumMath.THREE_PI_OVER_TWO = (3.0 * Math.PI) * 0.5;
309
+
310
+ /**
311
+ * 2pi
312
+ *
313
+ * @constant
314
+ * @type {Number}
315
+ * @see czm_twoPi
316
+ */
317
+ CesiumMath.TWO_PI = 2.0 * Math.PI;
318
+
319
+ /**
320
+ * 1/2pi
321
+ *
322
+ * @constant
323
+ * @type {Number}
324
+ * @see czm_oneOverTwoPi
325
+ */
326
+ CesiumMath.ONE_OVER_TWO_PI = 1.0 / (2.0 * Math.PI);
327
+
328
+ /**
329
+ * The number of radians in a degree.
330
+ *
331
+ * @constant
332
+ * @type {Number}
333
+ * @see czm_radiansPerDegree
334
+ */
335
+ CesiumMath.RADIANS_PER_DEGREE = Math.PI / 180.0;
336
+
337
+ /**
338
+ * The number of degrees in a radian.
339
+ *
340
+ * @constant
341
+ * @type {Number}
342
+ * @see czm_degreesPerRadian
343
+ */
344
+ CesiumMath.DEGREES_PER_RADIAN = 180.0 / Math.PI;
345
+
346
+ /**
347
+ * The number of radians in an arc second.
348
+ *
349
+ * @constant
350
+ * @type {Number}
351
+ * @see czm_radiansPerArcSecond
352
+ */
353
+ CesiumMath.RADIANS_PER_ARCSECOND = CesiumMath.RADIANS_PER_DEGREE / 3600.0;
354
+
355
+ /**
356
+ * Converts degrees to radians.
357
+ * @param {Number} degrees The angle to convert in degrees.
358
+ * @return {Number} The corresponding angle in radians.
359
+ */
360
+ CesiumMath.toRadians = function(degrees) {
361
+ return degrees * CesiumMath.RADIANS_PER_DEGREE;
362
+ };
363
+
364
+ /**
365
+ * Converts radians to degrees.
366
+ * @param {Number} radians The angle to convert in radians.
367
+ * @return {Number} The corresponding angle in degrees.
368
+ */
369
+ CesiumMath.toDegrees = function(radians) {
370
+ return radians * CesiumMath.DEGREES_PER_RADIAN;
371
+ };
372
+
373
+ /**
374
+ * Converts a longitude value, in radians, to the range [<code>-Math.PI</code>, <code>Math.PI</code>).
375
+ *
376
+ * @param {Number} angle The longitude value, in radians, to convert to the range [<code>-Math.PI</code>, <code>Math.PI</code>).
377
+ *
378
+ * @return {Number} The equivalent longitude value in the range [<code>-Math.PI</code>, <code>Math.PI</code>).
379
+ *
380
+ * @example
381
+ * // Convert 270 degrees to -90 degrees longitude
382
+ * var longitude = CesiumMath.convertLongitudeRange(CesiumMath.toRadians(270.0));
383
+ */
384
+ CesiumMath.convertLongitudeRange = function(angle) {
385
+ var twoPi = CesiumMath.TWO_PI;
386
+
387
+ var simplified = angle - Math.floor(angle / twoPi) * twoPi;
388
+
389
+ if (simplified < -Math.PI) {
390
+ return simplified + twoPi;
391
+ }
392
+ if (simplified >= Math.PI) {
393
+ return simplified - twoPi;
394
+ }
395
+
396
+ return simplified;
397
+ };
398
+
399
+ /**
400
+ * Alters the value of input x such that <code>-CesiumMath.PI</code> <= x <= <code>CesiumMath.PI</code>
401
+ * @param {Number} angle in radians
402
+ * @return {Number} The angle in the range ()<code>-CesiumMath.PI</code>, <code>CesiumMath.PI</code>).
403
+ */
404
+ CesiumMath.negativePiToPi = function(x) {
405
+ var epsilon10 = CesiumMath.EPSILON10;
406
+ var pi = CesiumMath.PI;
407
+ var two_pi = CesiumMath.TWO_PI;
408
+ while (x < -(pi + epsilon10)) {
409
+ x += two_pi;
410
+ }
411
+ if (x < -pi) {
412
+ return -pi;
413
+ }
414
+ while (x > pi + epsilon10) {
415
+ x -= two_pi;
416
+ }
417
+ return x > pi ? pi : x;
418
+ };
419
+
420
+ /**
421
+ * DOC_TBA
422
+ */
423
+ CesiumMath.equalsEpsilon = function(left, right, epsilon) {
424
+ epsilon = epsilon || 0.0;
425
+ return Math.abs(left - right) <= epsilon;
426
+ };
427
+
428
+ var factorials = [1];
429
+
430
+ /**
431
+ * Computes the factorial of the provided number.
432
+ *
433
+ * @memberof CesiumMath
434
+ *
435
+ * @param {Number} n The number whose factorial is to be computed.
436
+ *
437
+ * @return {Number} The factorial of the provided number or undefined if the number is less than 0.
438
+ *
439
+ * @see <a href='http://en.wikipedia.org/wiki/Factorial'>Factorial on Wikipedia</a>.
440
+ *
441
+ * @example
442
+ * //Compute 7!, which is equal to 5040
443
+ * var computedFactorial = CesiumMath.factorial(7);
444
+ *
445
+ * @exception {DeveloperError} A number greater than or equal to 0 is required.
446
+ */
447
+ CesiumMath.factorial = function(n) {
448
+ if (typeof n !== 'number' || n < 0) {
449
+ throw new DeveloperError('A number greater than or equal to 0 is required.');
450
+ }
451
+
452
+ var length = factorials.length;
453
+ if (n >= length) {
454
+ var sum = factorials[length - 1];
455
+ for ( var i = length; i <= n; i++) {
456
+ factorials.push(sum * i);
457
+ }
458
+ }
459
+ return factorials[n];
460
+ };
461
+
462
+ /**
463
+ * Increments a number with a wrapping to a minimum value if the number exceeds the maximum value.
464
+ *
465
+ * @memberof CesiumMath
466
+ *
467
+ * @param {Number} [n] The number to be incremented.
468
+ * @param {Number} [maximumValue] The maximum incremented value before rolling over to the minimum value.
469
+ * @param {Number} [minimumValue=0.0] The number reset to after the maximum value has been exceeded.
470
+ *
471
+ * @return {Number} The incremented number.
472
+ *
473
+ * @example
474
+ * var n = CesiumMath.incrementWrap(5, 10, 0); // returns 6
475
+ * var n = CesiumMath.incrementWrap(10, 10, 0); // returns 0
476
+ *
477
+ * @exception {DeveloperError} Maximum value must be greater than minimum value.
478
+ */
479
+ CesiumMath.incrementWrap = function(n, maximumValue, minimumValue) {
480
+ minimumValue = defaultValue(minimumValue, 0.0);
481
+
482
+ if (maximumValue <= minimumValue) {
483
+ throw new DeveloperError('Maximum value must be greater than minimum value.');
484
+ }
485
+
486
+ ++n;
487
+ if (n > maximumValue) {
488
+ n = minimumValue;
489
+ }
490
+ return n;
491
+ };
492
+
493
+ /**
494
+ * Determines if a positive integer is a power of two.
495
+ *
496
+ * @memberof CesiumMath
497
+ *
498
+ * @param {Number} n The positive integer to test.
499
+ *
500
+ * @return {Boolean} <code>true</code> if the number if a power of two; otherwise, <code>false</code>.
501
+ *
502
+ * @example
503
+ * var t = CesiumMath.isPowerOfTwo(16); // true
504
+ * var f = CesiumMath.isPowerOfTwo(20); // false
505
+ *
506
+ * @exception {DeveloperError} A number greater than or equal to 0 is required.
507
+ */
508
+ CesiumMath.isPowerOfTwo = function(n) {
509
+ if (typeof n !== 'number' || n < 0) {
510
+ throw new DeveloperError('A number greater than or equal to 0 is required.');
511
+ }
512
+
513
+ var m = n | 0;
514
+ return (m !== 0) && ((m & (m - 1)) === 0);
515
+ };
516
+
517
+ /**
518
+ * Constraint a value to lie between two values.
519
+ *
520
+ * @memberof CesiumMath
521
+ *
522
+ * @param {Number} value The value to constrain.
523
+ * @param {Number} min The minimum value.
524
+ * @param {Number} max The maximum value.
525
+ * @returns The value clamped so that min <= value <= max.
526
+ */
527
+ CesiumMath.clamp = function(value, min, max) {
528
+ return value < min ? min : value > max ? max : value;
529
+ };
530
+
531
+ return CesiumMath;
532
+ });