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,50 @@
1
+ /*global define*/
2
+ define(function() {
3
+ "use strict";
4
+
5
+ /**
6
+ * A set of Earth Orientation Parameters (EOP) sampled at a time.
7
+ *
8
+ * @alias EarthOrientationParametersSample
9
+ * @constructor
10
+ *
11
+ * @param {Number} xPoleWander The pole wander about the X axis, in radians.
12
+ * @param {Number} yPoleWander The pole wander about the Y axis, in radians.
13
+ * @param {Number} xPoleOffset The offset to the Celestial Intermediate Pole (CIP) about the X axis, in radians.
14
+ * @param {Number} yPoleOffset The offset to the Celestial Intermediate Pole (CIP) about the Y axis, in radians.
15
+ * @param {Number} ut1MinusUtc The difference in time standards, UT1 - UTC, in seconds.
16
+ */
17
+ var EarthOrientationParametersSample = function EarthOrientationParametersSample(xPoleWander, yPoleWander, xPoleOffset, yPoleOffset, ut1MinusUtc) {
18
+ /**
19
+ * The pole wander about the X axis, in radians.
20
+ * @type {Number}
21
+ */
22
+ this.xPoleWander = xPoleWander;
23
+
24
+ /**
25
+ * The pole wander about the Y axis, in radians.
26
+ * @type {Number}
27
+ */
28
+ this.yPoleWander = yPoleWander;
29
+
30
+ /**
31
+ * The offset to the Celestial Intermediate Pole (CIP) about the X axis, in radians.
32
+ * @type {Number}
33
+ */
34
+ this.xPoleOffset = xPoleOffset;
35
+
36
+ /**
37
+ * The offset to the Celestial Intermediate Pole (CIP) about the Y axis, in radians.
38
+ * @type {Number}
39
+ */
40
+ this.yPoleOffset = yPoleOffset;
41
+
42
+ /**
43
+ * The difference in time standards, UT1 - UTC, in seconds.
44
+ * @type {Number}
45
+ */
46
+ this.ut1MinusUtc = ut1MinusUtc;
47
+ };
48
+
49
+ return EarthOrientationParametersSample;
50
+ });
@@ -0,0 +1,539 @@
1
+ /*global define*/
2
+ define([
3
+ './freezeObject',
4
+ './defaultValue',
5
+ './DeveloperError',
6
+ './Math',
7
+ './Cartesian3',
8
+ './Cartographic'
9
+ ], function(
10
+ freezeObject,
11
+ defaultValue,
12
+ DeveloperError,
13
+ CesiumMath,
14
+ Cartesian3,
15
+ Cartographic) {
16
+ "use strict";
17
+
18
+ /**
19
+ * A quadratic surface defined in Cartesian coordinates by the equation
20
+ * <code>(x / a)^2 + (y / b)^2 + (z / c)^2 = 1</code>. Primarily used
21
+ * by Cesium to represent the shape of planetary bodies.
22
+ *
23
+ * Rather than constructing this object directly, one of the provided
24
+ * constants is normally used.
25
+ * @alias Ellipsoid
26
+ * @constructor
27
+ * @immutable
28
+ *
29
+ * @param {Number} [x=0] The radius in the x direction.
30
+ * @param {Number} [y=0] The radius in the y direction.
31
+ * @param {Number} [z=0] The radius in the z direction.
32
+ *
33
+ * @exception {DeveloperError} All radii components must be greater than or equal to zero.
34
+ *
35
+ * @see Ellipsoid.fromCartesian3
36
+ * @see Ellipsoid.WGS84
37
+ * @see Ellipsoid.UNIT_SPHERE
38
+ */
39
+ var Ellipsoid = function(x, y, z) {
40
+ x = defaultValue(x, 0.0);
41
+ y = defaultValue(y, 0.0);
42
+ z = defaultValue(z, 0.0);
43
+
44
+ if (x < 0.0 || y < 0.0 || z < 0.0) {
45
+ throw new DeveloperError('All radii components must be greater than or equal to zero.');
46
+ }
47
+
48
+ this._radii = new Cartesian3(x, y, z);
49
+
50
+ this._radiiSquared = new Cartesian3(x * x,
51
+ y * y,
52
+ z * z);
53
+
54
+ this._radiiToTheFourth = new Cartesian3(x * x * x * x,
55
+ y * y * y * y,
56
+ z * z * z * z);
57
+
58
+ this._oneOverRadii = new Cartesian3(x === 0.0 ? 0.0 : 1.0 / x,
59
+ y === 0.0 ? 0.0 : 1.0 / y,
60
+ z === 0.0 ? 0.0 : 1.0 / z);
61
+
62
+ this._oneOverRadiiSquared = new Cartesian3(x === 0.0 ? 0.0 : 1.0 / (x * x),
63
+ y === 0.0 ? 0.0 : 1.0 / (y * y),
64
+ z === 0.0 ? 0.0 : 1.0 / (z * z));
65
+
66
+ this._minimumRadius = Math.min(x, y, z);
67
+
68
+ this._maximumRadius = Math.max(x, y, z);
69
+
70
+ this._centerToleranceSquared = CesiumMath.EPSILON1;
71
+ };
72
+
73
+ /**
74
+ * Computes an Ellipsoid from a Cartesian specifying the radii in x, y, and z directions.
75
+ *
76
+ * @param {Cartesian3} [radii=Cartesian3.ZERO] The ellipsoid's radius in the x, y, and z directions.
77
+ * @return {Ellipsoid} A new Ellipsoid instance.
78
+ *
79
+ * @exception {DeveloperError} All radii components must be greater than or equal to zero.
80
+ *
81
+ * @see Ellipsoid.WGS84
82
+ * @see Ellipsoid.UNIT_SPHERE
83
+ */
84
+ Ellipsoid.fromCartesian3 = function(cartesian) {
85
+ if (typeof cartesian === 'undefined') {
86
+ return new Ellipsoid();
87
+ }
88
+ return new Ellipsoid(cartesian.x, cartesian.y, cartesian.z);
89
+ };
90
+
91
+ /**
92
+ * An Ellipsoid instance initialized to the WGS84 standard.
93
+ * @memberof Ellipsoid
94
+ *
95
+ * @see czm_getWgs84EllipsoidEC
96
+ */
97
+ Ellipsoid.WGS84 = freezeObject(new Ellipsoid(6378137.0, 6378137.0, 6356752.3142451793));
98
+
99
+ /**
100
+ * An Ellipsoid instance initialized to radii of (1.0, 1.0, 1.0).
101
+ * @memberof Ellipsoid
102
+ */
103
+ Ellipsoid.UNIT_SPHERE = freezeObject(new Ellipsoid(1.0, 1.0, 1.0));
104
+
105
+ /**
106
+ * @memberof Ellipsoid
107
+ * @return {Cartesian3} The radii of the ellipsoid.
108
+ */
109
+ Ellipsoid.prototype.getRadii = function() {
110
+ return this._radii;
111
+ };
112
+
113
+ /**
114
+ * @memberof Ellipsoid
115
+ * @return {Cartesian3} The squared radii of the ellipsoid.
116
+ */
117
+ Ellipsoid.prototype.getRadiiSquared = function() {
118
+ return this._radiiSquared;
119
+ };
120
+
121
+ /**
122
+ * @memberof Ellipsoid
123
+ * @return {Cartesian3} The radii of the ellipsoid raised to the fourth power.
124
+ */
125
+ Ellipsoid.prototype.getRadiiToTheFourth = function() {
126
+ return this._radiiToTheFourth;
127
+ };
128
+
129
+ /**
130
+ * @memberof Ellipsoid
131
+ * @return {Cartesian3} One over the radii of the ellipsoid.
132
+ */
133
+ Ellipsoid.prototype.getOneOverRadii = function() {
134
+ return this._oneOverRadii;
135
+ };
136
+
137
+ /**
138
+ * @memberof Ellipsoid
139
+ * @return {Cartesian3} One over the squared radii of the ellipsoid.
140
+ */
141
+ Ellipsoid.prototype.getOneOverRadiiSquared = function() {
142
+ return this._oneOverRadiiSquared;
143
+ };
144
+
145
+ /**
146
+ * @memberof Ellipsoid
147
+ * @return {Cartesian3} The minimum radius of the ellipsoid.
148
+ */
149
+ Ellipsoid.prototype.getMinimumRadius = function() {
150
+ return this._minimumRadius;
151
+ };
152
+
153
+ /**
154
+ * @memberof Ellipsoid
155
+ * @return {Cartesian3} The maximum radius of the ellipsoid.
156
+ */
157
+ Ellipsoid.prototype.getMaximumRadius = function() {
158
+ return this._maximumRadius;
159
+ };
160
+
161
+ /**
162
+ * Computes the unit vector directed from the center of this ellipsoid toward the provided Cartesian position.
163
+ * @memberof Ellipsoid
164
+ *
165
+ * @param {Cartesian3} cartesian The Cartesian for which to to determine the geocentric normal.
166
+ * @param {Cartesian3} [result] The object onto which to store the result.
167
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.
168
+ *
169
+ * @exception {DeveloperError} cartesian is required.
170
+ */
171
+ Ellipsoid.prototype.geocentricSurfaceNormal = Cartesian3.normalize;
172
+
173
+ /**
174
+ * Computes the normal of the plane tangent to the surface of the ellipsoid at the provided position.
175
+ * @memberof Ellipsoid
176
+ *
177
+ * @param {Cartographic} cartographic The cartographic position for which to to determine the geodetic normal.
178
+ * @param {Cartesian3} [result] The object onto which to store the result.
179
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.
180
+ *
181
+ * @exception {DeveloperError} cartographic is required.
182
+ */
183
+ Ellipsoid.prototype.geodeticSurfaceNormalCartographic = function(cartographic, result) {
184
+ if (typeof cartographic === 'undefined') {
185
+ throw new DeveloperError('cartographic is required.');
186
+ }
187
+
188
+ var longitude = cartographic.longitude;
189
+ var latitude = cartographic.latitude;
190
+ var cosLatitude = Math.cos(latitude);
191
+
192
+ var x = cosLatitude * Math.cos(longitude);
193
+ var y = cosLatitude * Math.sin(longitude);
194
+ var z = Math.sin(latitude);
195
+
196
+ if (typeof result === 'undefined') {
197
+ result = new Cartesian3();
198
+ }
199
+ result.x = x;
200
+ result.y = y;
201
+ result.z = z;
202
+ return Cartesian3.normalize(result, result);
203
+ };
204
+
205
+ /**
206
+ * Computes the normal of the plane tangent to the surface of the ellipsoid at the provided position.
207
+ * @memberof Ellipsoid
208
+ *
209
+ * @param {Cartesian3} cartesian The Cartesian position for which to to determine the surface normal.
210
+ * @param {Cartesian3} [result] The object onto which to store the result.
211
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.
212
+ *
213
+ * @exception {DeveloperError} cartesian is required.
214
+ */
215
+ Ellipsoid.prototype.geodeticSurfaceNormal = function(cartesian, result) {
216
+ result = Cartesian3.multiplyComponents(cartesian, this._oneOverRadiiSquared, result);
217
+ return Cartesian3.normalize(result, result);
218
+ };
219
+
220
+ var cartographicToCartesianNormal = new Cartesian3();
221
+ var cartographicToCartesianK = new Cartesian3();
222
+
223
+ /**
224
+ * Converts the provided cartographic to Cartesian representation.
225
+ * @memberof Ellipsoid
226
+ *
227
+ * @param {Cartographic} cartographic The cartographic position.
228
+ * @param {Cartesian3} [result] The object onto which to store the result.
229
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.
230
+ *
231
+ * @exception {DeveloperError} cartographic is required.
232
+ *
233
+ * @example
234
+ * //Create a Cartographic and determine it's Cartesian representation on a WGS84 ellipsoid.
235
+ * var position = new Cartographic(Math.toRadians(21), Math.toRadians(78), 5000);
236
+ * var cartesianPosition = Ellipsoid.WGS84.cartographicToCartesian(position);
237
+ */
238
+ Ellipsoid.prototype.cartographicToCartesian = function(cartographic, result) {
239
+ //`cartographic is required` is thrown from geodeticSurfaceNormalCartographic.
240
+ var n = cartographicToCartesianNormal;
241
+ var k = cartographicToCartesianK;
242
+ this.geodeticSurfaceNormalCartographic(cartographic, n);
243
+ Cartesian3.multiplyComponents(this._radiiSquared, n, k);
244
+ var gamma = Math.sqrt(Cartesian3.dot(n, k));
245
+ Cartesian3.divideByScalar(k, gamma, k);
246
+ Cartesian3.multiplyByScalar(n, cartographic.height, n);
247
+ return Cartesian3.add(k, n, result);
248
+ };
249
+
250
+ /**
251
+ * Converts the provided array of cartographics to an array of Cartesians.
252
+ * @memberof Ellipsoid
253
+ *
254
+ * @param {Array} cartographics An array of cartographic positions.
255
+ * @param {Array} [result] The object onto which to store the result.
256
+ * @return {Array} The modified result parameter or a new Array instance if none was provided.
257
+ *
258
+ * @exception {DeveloperError} cartographics is required.
259
+ *
260
+ * @example
261
+ * //Convert an array of Cartographics and determine their Cartesian representation on a WGS84 ellipsoid.
262
+ * var positions = [new Cartographic(Math.toRadians(21), Math.toRadians(78), 0),
263
+ * new Cartographic(Math.toRadians(21.321), Math.toRadians(78.123), 100),
264
+ * new Cartographic(Math.toRadians(21.645), Math.toRadians(78.456), 250)
265
+ * var cartesianPositions = Ellipsoid.WGS84.cartographicArrayToCartesianArray(positions);
266
+ */
267
+ Ellipsoid.prototype.cartographicArrayToCartesianArray = function(cartographics, result) {
268
+ if (typeof cartographics === 'undefined') {
269
+ throw new DeveloperError('cartographics is required.');
270
+ }
271
+
272
+ var length = cartographics.length;
273
+ if (typeof result === 'undefined') {
274
+ result = new Array(length);
275
+ } else {
276
+ result.length = length;
277
+ }
278
+ for ( var i = 0; i < length; i++) {
279
+ result[i] = this.cartographicToCartesian(cartographics[i], result[i]);
280
+ }
281
+ return result;
282
+ };
283
+
284
+ var cartesianToCartographicN = new Cartesian3();
285
+ var cartesianToCartographicP = new Cartesian3();
286
+ var cartesianToCartographicH = new Cartesian3();
287
+
288
+ /**
289
+ * Converts the provided cartesian to cartographic representation.
290
+ * The cartesian is undefined at the center of the ellipsoid.
291
+ * @memberof Ellipsoid
292
+ *
293
+ * @param {Cartesian3} cartesian The Cartesian position to convert to cartographic representation.
294
+ * @param {Cartographic} [result] The object onto which to store the result.
295
+ * @return {Cartographic} The modified result parameter, new Cartographic instance if none was provided, or undefined if the cartesian is at the center of the ellipsoid.
296
+ *
297
+ * @exception {DeveloperError} cartesian is required.
298
+ *
299
+ * @example
300
+ * //Create a Cartesian and determine it's Cartographic representation on a WGS84 ellipsoid.
301
+ * var position = new Cartesian(17832.12, 83234.52, 952313.73);
302
+ * var cartographicPosition = Ellipsoid.WGS84.cartesianToCartographic(position);
303
+ */
304
+ Ellipsoid.prototype.cartesianToCartographic = function(cartesian, result) {
305
+ //`cartesian is required.` is thrown from scaleToGeodeticSurface
306
+ var p = this.scaleToGeodeticSurface(cartesian, cartesianToCartographicP);
307
+
308
+ if (typeof p === 'undefined') {
309
+ return undefined;
310
+ }
311
+
312
+ var n = this.geodeticSurfaceNormal(p, cartesianToCartographicN);
313
+ var h = Cartesian3.subtract(cartesian, p, cartesianToCartographicH);
314
+
315
+ var longitude = Math.atan2(n.y, n.x);
316
+ var latitude = Math.asin(n.z);
317
+ var height = CesiumMath.sign(Cartesian3.dot(h, cartesian)) * Cartesian3.magnitude(h);
318
+
319
+ if (typeof result === 'undefined') {
320
+ return new Cartographic(longitude, latitude, height);
321
+ }
322
+ result.longitude = longitude;
323
+ result.latitude = latitude;
324
+ result.height = height;
325
+ return result;
326
+ };
327
+
328
+ /**
329
+ * Converts the provided array of cartesians to an array of cartographics.
330
+ * @memberof Ellipsoid
331
+ *
332
+ * @param {Array} cartesians An array of Cartesian positions.
333
+ * @param {Array} [result] The object onto which to store the result.
334
+ * @return {Array} The modified result parameter or a new Array instance if none was provided.
335
+ *
336
+ * @exception {DeveloperError} cartesians is required.
337
+ *
338
+ * @example
339
+ * //Create an array of Cartesians and determine their Cartographic representation on a WGS84 ellipsoid.
340
+ * var positions = [new Cartesian(17832.12, 83234.52, 952313.73),
341
+ * new Cartesian(17832.13, 83234.53, 952313.73),
342
+ * new Cartesian(17832.14, 83234.54, 952313.73)]
343
+ * var cartographicPositions = Ellipsoid.WGS84.cartesianArrayToCartographicArray(positions);
344
+ */
345
+ Ellipsoid.prototype.cartesianArrayToCartographicArray = function(cartesians, result) {
346
+ if (typeof cartesians === 'undefined') {
347
+ throw new DeveloperError('cartesians is required.');
348
+ }
349
+
350
+ var length = cartesians.length;
351
+ if (typeof result === 'undefined') {
352
+ result = new Array(length);
353
+ } else {
354
+ result.length = length;
355
+ }
356
+ for ( var i = 0; i < length; ++i) {
357
+ result[i] = this.cartesianToCartographic(cartesians[i], result[i]);
358
+ }
359
+ return result;
360
+ };
361
+
362
+ var scaleToGeodeticSurfaceIntersection;
363
+ var scaleToGeodeticSurfaceGradient = new Cartesian3();
364
+
365
+ /**
366
+ * Scales the provided Cartesian position along the geodetic surface normal
367
+ * so that it is on the surface of this ellipsoid. If the position is
368
+ * at the center of the ellipsoid, this function returns undefined.
369
+ * @memberof Ellipsoid
370
+ *
371
+ * @param {Cartesian3} cartesian The Cartesian position to scale.
372
+ * @param {Cartesian3} [result] The object onto which to store the result.
373
+ * @return {Cartesian3} The modified result parameter, a new Cartesian3 instance if none was provided, or undefined if the position is at the center.
374
+ *
375
+ * @exception {DeveloperError} cartesian is required.
376
+ */
377
+ Ellipsoid.prototype.scaleToGeodeticSurface = function(cartesian, result) {
378
+ if (typeof cartesian === 'undefined') {
379
+ throw new DeveloperError('cartesian is required.');
380
+ }
381
+
382
+ var positionX = cartesian.x;
383
+ var positionY = cartesian.y;
384
+ var positionZ = cartesian.z;
385
+
386
+ var oneOverRadii = this._oneOverRadii;
387
+ var oneOverRadiiX = oneOverRadii.x;
388
+ var oneOverRadiiY = oneOverRadii.y;
389
+ var oneOverRadiiZ = oneOverRadii.z;
390
+
391
+ var x2 = positionX * positionX * oneOverRadiiX * oneOverRadiiX;
392
+ var y2 = positionY * positionY * oneOverRadiiY * oneOverRadiiY;
393
+ var z2 = positionZ * positionZ * oneOverRadiiZ * oneOverRadiiZ;
394
+
395
+ // Compute the squared ellipsoid norm.
396
+ var squaredNorm = x2 + y2 + z2;
397
+ var ratio = Math.sqrt(1.0 / squaredNorm);
398
+
399
+ // As an initial approximation, assume that the radial intersection is the projection point.
400
+ var intersection = Cartesian3.multiplyByScalar(cartesian, ratio, scaleToGeodeticSurfaceIntersection);
401
+
402
+ //* If the position is near the center, the iteration will not converge.
403
+ if (squaredNorm < this._centerToleranceSquared) {
404
+ return !isFinite(ratio) ? undefined : Cartesian3.clone(intersection, result);
405
+ }
406
+
407
+ var oneOverRadiiSquared = this._oneOverRadiiSquared;
408
+ var oneOverRadiiSquaredX = oneOverRadiiSquared.x;
409
+ var oneOverRadiiSquaredY = oneOverRadiiSquared.y;
410
+ var oneOverRadiiSquaredZ = oneOverRadiiSquared.z;
411
+
412
+ // Use the gradient at the intersection point in place of the true unit normal.
413
+ // The difference in magnitude will be absorbed in the multiplier.
414
+ var gradient = scaleToGeodeticSurfaceGradient;
415
+ gradient.x = intersection.x * oneOverRadiiSquaredX * 2.0;
416
+ gradient.y = intersection.y * oneOverRadiiSquaredY * 2.0;
417
+ gradient.z = intersection.z * oneOverRadiiSquaredZ * 2.0;
418
+
419
+ // Compute the initial guess at the normal vector multiplier, lambda.
420
+ var lambda = (1.0 - ratio) * Cartesian3.magnitude(cartesian) / (0.5 * Cartesian3.magnitude(gradient));
421
+ var correction = 0.0;
422
+
423
+ var func;
424
+ var denominator;
425
+ var xMultiplier;
426
+ var yMultiplier;
427
+ var zMultiplier;
428
+ var xMultiplier2;
429
+ var yMultiplier2;
430
+ var zMultiplier2;
431
+ var xMultiplier3;
432
+ var yMultiplier3;
433
+ var zMultiplier3;
434
+
435
+ do {
436
+ lambda -= correction;
437
+
438
+ xMultiplier = 1.0 / (1.0 + lambda * oneOverRadiiSquaredX);
439
+ yMultiplier = 1.0 / (1.0 + lambda * oneOverRadiiSquaredY);
440
+ zMultiplier = 1.0 / (1.0 + lambda * oneOverRadiiSquaredZ);
441
+
442
+ xMultiplier2 = xMultiplier * xMultiplier;
443
+ yMultiplier2 = yMultiplier * yMultiplier;
444
+ zMultiplier2 = zMultiplier * zMultiplier;
445
+
446
+ xMultiplier3 = xMultiplier2 * xMultiplier;
447
+ yMultiplier3 = yMultiplier2 * yMultiplier;
448
+ zMultiplier3 = zMultiplier2 * zMultiplier;
449
+
450
+ func = x2 * xMultiplier2 + y2 * yMultiplier2 + z2 * zMultiplier2 - 1.0;
451
+
452
+ // "denominator" here refers to the use of this expression in the velocity and acceleration
453
+ // computations in the sections to follow.
454
+ denominator = x2 * xMultiplier3 * oneOverRadiiSquaredX + y2 * yMultiplier3 * oneOverRadiiSquaredY + z2 * zMultiplier3 * oneOverRadiiSquaredZ;
455
+
456
+ var derivative = -2.0 * denominator;
457
+
458
+ correction = func / derivative;
459
+ } while (Math.abs(func) > CesiumMath.EPSILON12);
460
+
461
+ if (typeof result === 'undefined') {
462
+ return new Cartesian3(positionX * xMultiplier, positionY * yMultiplier, positionZ * zMultiplier);
463
+ }
464
+ result.x = positionX * xMultiplier;
465
+ result.y = positionY * yMultiplier;
466
+ result.z = positionZ * zMultiplier;
467
+ return result;
468
+ };
469
+
470
+ /**
471
+ * Scales the provided Cartesian position along the geocentric surface normal
472
+ * so that it is on the surface of this ellipsoid.
473
+ * @memberof Ellipsoid
474
+ *
475
+ * @param {Cartesian3} cartesian The Cartesian position to scale.
476
+ * @param {Cartesian3} [result] The object onto which to store the result.
477
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if none was provided.
478
+ *
479
+ * @exception {DeveloperError} cartesian is required.
480
+ */
481
+ Ellipsoid.prototype.scaleToGeocentricSurface = function(cartesian, result) {
482
+ if (typeof cartesian === 'undefined') {
483
+ throw new DeveloperError('cartesian is required.');
484
+ }
485
+
486
+ var positionX = cartesian.x;
487
+ var positionY = cartesian.y;
488
+ var positionZ = cartesian.z;
489
+ var oneOverRadiiSquared = this._oneOverRadiiSquared;
490
+
491
+ var beta = 1.0 / Math.sqrt((positionX * positionX) * oneOverRadiiSquared.x +
492
+ (positionY * positionY) * oneOverRadiiSquared.y +
493
+ (positionZ * positionZ) * oneOverRadiiSquared.z);
494
+
495
+ return Cartesian3.multiplyByScalar(cartesian, beta, result);
496
+ };
497
+
498
+ /**
499
+ * Transforms a Cartesian X, Y, Z position to the ellipsoid-scaled space by multiplying
500
+ * its components by the result of {@link Ellipsoid#getOneOverRadii}.
501
+ *
502
+ * @memberof Ellipsoid
503
+ *
504
+ * @param {Cartesian3} position The position to transform.
505
+ * @param {Cartesian3} [result] The position to which to copy the result, or undefined to create and
506
+ * return a new instance.
507
+ * @returns {Cartesian3} The position expressed in the scaled space. The returned instance is the
508
+ * one passed as the result parameter if it is not undefined, or a new instance of it is.
509
+ */
510
+ Ellipsoid.prototype.transformPositionToScaledSpace = function(position, result) {
511
+ return Cartesian3.multiplyComponents(position, this._oneOverRadii, result);
512
+ };
513
+
514
+ /**
515
+ * Compares this Ellipsoid against the provided Ellipsoid componentwise and returns
516
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
517
+ * @memberof Ellipsoid
518
+ *
519
+ * @param {Ellipsoid} [right] The other Ellipsoid.
520
+ * @return {Boolean} <code>true</code> if they are equal, <code>false</code> otherwise.
521
+ */
522
+ Ellipsoid.prototype.equals = function(right) {
523
+ return (this === right) ||
524
+ (typeof right !== 'undefined' &&
525
+ Cartesian3.equals(this._radii, right._radii));
526
+ };
527
+
528
+ /**
529
+ * Creates a string representing this Ellipsoid in the format '(radii.x, radii.y, radii.z)'.
530
+ * @memberof Ellipsoid
531
+ *
532
+ * @return {String} A string representing this ellipsoid in the format '(radii.x, radii.y, radii.z)'.
533
+ */
534
+ Ellipsoid.prototype.toString = function() {
535
+ return this._radii.toString();
536
+ };
537
+
538
+ return Ellipsoid;
539
+ });