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,67 @@
1
+ /*global define*/
2
+ define(function() {
3
+ "use strict";
4
+
5
+ /**
6
+ * Constructs an enumeration that contains both a numeric value and a name.
7
+ * This is used so the name of the enumeration is available in the debugger.
8
+ *
9
+ * @param {Number} [value=undefined] The numeric value of the enumeration.
10
+ * @param {String} [name=undefined] The name of the enumeration for debugging purposes.
11
+ * @param {Object} [properties=undefined] An object containing extra properties to be added to the enumeration.
12
+ *
13
+ * @alias Enumeration
14
+ * @constructor
15
+ * @example
16
+ * // Create an object with two enumerations.
17
+ * var filter = {
18
+ * NEAREST : new Enumeration(0x2600, 'NEAREST'),
19
+ * LINEAR : new Enumeration(0x2601, 'LINEAR')
20
+ * };
21
+ */
22
+ var Enumeration = function(value, name, properties) {
23
+ /**
24
+ * The numeric value of the enumeration.
25
+ * @type Number
26
+ */
27
+ this.value = value;
28
+
29
+ /**
30
+ * The name of the enumeration for debugging purposes.
31
+ * @type String
32
+ */
33
+ this.name = name;
34
+
35
+ if (typeof properties !== 'undefined') {
36
+ for ( var propertyName in properties) {
37
+ if (properties.hasOwnProperty(propertyName)) {
38
+ this[propertyName] = properties[propertyName];
39
+ }
40
+ }
41
+ }
42
+ };
43
+
44
+ /**
45
+ * Returns the numeric value of the enumeration.
46
+ *
47
+ * @memberof Enumeration
48
+ *
49
+ * @return {Number} The numeric value of the enumeration.
50
+ */
51
+ Enumeration.prototype.valueOf = function() {
52
+ return this.value;
53
+ };
54
+
55
+ /**
56
+ * Returns the name of the enumeration for debugging purposes.
57
+ *
58
+ * @memberof Enumeration
59
+ *
60
+ * @return {String} The name of the enumeration for debugging purposes.
61
+ */
62
+ Enumeration.prototype.toString = function() {
63
+ return this.name;
64
+ };
65
+
66
+ return Enumeration;
67
+ });
@@ -0,0 +1,122 @@
1
+ /*global define*/
2
+ define([
3
+ './DeveloperError'
4
+ ], function(
5
+ DeveloperError) {
6
+ "use strict";
7
+
8
+ /**
9
+ * A generic utility class for managing subscribers for a particular event.
10
+ * This class is usually instantiated inside of a container class and
11
+ * exposed as a property for others to subscribe to.
12
+ *
13
+ * @alias Event
14
+ * @constructor
15
+ *
16
+ * @example
17
+ * MyObject.prototype.myListener = function(arg1, arg2) {
18
+ * this.myArg1Copy = arg1;
19
+ * this.myArg2Copy = arg2;
20
+ * }
21
+ *
22
+ * var myObjectInstance = new MyObject();
23
+ * var evt = new Event();
24
+ * evt.addEventListener(MyObject.prototype.myListener, myObjectInstance);
25
+ * evt.raiseEvent('1', '2');
26
+ * evt.removeEventListener(MyObject.prototype.myListener);
27
+ */
28
+ var Event = function() {
29
+ this._listeners = [];
30
+ this._scopes = [];
31
+ };
32
+
33
+ /**
34
+ * Gets the number of listeners currently subscribed to the event.
35
+ *
36
+ * @memberof Event
37
+ *
38
+ * @returns {Number} The number of subscribed listeners.
39
+ */
40
+ Event.prototype.getNumberOfListeners = function() {
41
+ return this._listeners.length;
42
+ };
43
+
44
+ /**
45
+ * Registers a callback function to be executed whenever the event is raised.
46
+ * An optional scope can be provided to serve as the <code>this</code> pointer
47
+ * in which the function will execute.
48
+ * @memberof Event
49
+ *
50
+ * @param {Function} listener The function to be executed when the event is raised.
51
+ * @param {Object} [scope] An optional object scope to serve as the <code>this</code>
52
+ * pointer in which the listener function will execute.
53
+ *
54
+ * @see Event#raiseEvent
55
+ * @see Event#removeEventListener
56
+ *
57
+ * @exception {DeveloperError} listener is required and must be a function.
58
+ * @exception {DeveloperError} listener is already subscribed.
59
+ */
60
+ Event.prototype.addEventListener = function(listener, scope) {
61
+ if (typeof listener !== 'function') {
62
+ throw new DeveloperError('listener is required and must be a function.');
63
+ }
64
+
65
+ var thisListeners = this._listeners;
66
+ var index = thisListeners.indexOf(listener);
67
+
68
+ if (index !== -1) {
69
+ throw new DeveloperError('listener is already subscribed.');
70
+ }
71
+
72
+ thisListeners.push(listener);
73
+ this._scopes.push(scope);
74
+ };
75
+
76
+ /**
77
+ * Unregisters a previously registered callback.
78
+ * @memberof Event
79
+ *
80
+ * @param {Function} listener The function to be unregistered.
81
+ *
82
+ * @see Event#addEventListener
83
+ * @see Event#raiseEvent
84
+ *
85
+ * @exception {DeveloperError} listener is required and must be a function.
86
+ * @exception {DeveloperError} listener is not subscribed.
87
+ */
88
+ Event.prototype.removeEventListener = function(listener) {
89
+ if (typeof listener !== 'function') {
90
+ throw new DeveloperError('listener is required and must be a function.');
91
+ }
92
+
93
+ var thisListeners = this._listeners;
94
+ var index = thisListeners.indexOf(listener);
95
+
96
+ if (index === -1) {
97
+ throw new DeveloperError('listener is not subscribed.');
98
+ }
99
+
100
+ thisListeners.splice(index, 1);
101
+ this._scopes.splice(index, 1);
102
+ };
103
+
104
+ /**
105
+ * Raises the event by calling each registered listener with all supplied arguments.
106
+ * @memberof Event
107
+ *
108
+ * @param {*} arguments This method takes any number of parameters and passes them through to the listener functions.
109
+ *
110
+ * @see Event#addEventListener
111
+ * @see Event#removeEventListener
112
+ */
113
+ Event.prototype.raiseEvent = function() {
114
+ var listeners = this._listeners;
115
+ var scopes = this._scopes;
116
+ for ( var i = listeners.length - 1; i > -1; i--) {
117
+ listeners[i].apply(scopes[i], arguments);
118
+ }
119
+ };
120
+
121
+ return Event;
122
+ });
@@ -0,0 +1,383 @@
1
+ /*global define*/
2
+ define([
3
+ './freezeObject',
4
+ './defaultValue',
5
+ './Ellipsoid',
6
+ './Cartographic',
7
+ './DeveloperError',
8
+ './Math'
9
+ ], function(
10
+ freezeObject,
11
+ defaultValue,
12
+ Ellipsoid,
13
+ Cartographic,
14
+ DeveloperError,
15
+ CesiumMath) {
16
+ "use strict";
17
+
18
+ /**
19
+ * A two dimensional region specified as longitude and latitude coordinates.
20
+ * @alias Extent
21
+ * @constructor
22
+ *
23
+ * @param {Number} [west=0.0] The westernmost longitude in the range [-Pi, Pi].
24
+ * @param {Number} [south=0.0] The southernmost latitude in the range [-Pi/2, Pi/2].
25
+ * @param {Number} [east=0.0] The easternmost longitude in the range [-Pi, Pi].
26
+ * @param {Number} [north=0.0] The northernmost latitude in the range [-Pi/2, Pi/2].
27
+ */
28
+ var Extent = function(west, south, east, north) {
29
+ /**
30
+ * The westernmost longitude in the range [-Pi, Pi].
31
+ * @type Number
32
+ */
33
+ this.west = defaultValue(west, 0.0);
34
+
35
+ /**
36
+ * The southernmost latitude in the range [-Pi/2, Pi/2].
37
+ * @type Number
38
+ */
39
+ this.south = defaultValue(south, 0.0);
40
+
41
+ /**
42
+ * The easternmost longitude in the range [-Pi, Pi].
43
+ * @type Number
44
+ */
45
+ this.east = defaultValue(east, 0.0);
46
+
47
+ /**
48
+ * The northernmost latitude in the range [-Pi/2, Pi/2].
49
+ * @type Number
50
+ */
51
+ this.north = defaultValue(north, 0.0);
52
+ };
53
+
54
+ /**
55
+ * Duplicates this Extent.
56
+ *
57
+ * @param {Extent} [result] The object onto which to store the result.
58
+ * @return {Extent} The modified result parameter or a new Extent instance if none was provided.
59
+ */
60
+ Extent.prototype.clone = function(result) {
61
+ if (typeof result === 'undefined') {
62
+ return new Extent(this.west, this.south, this.east, this.north);
63
+ }
64
+ result.west = this.west;
65
+ result.south = this.south;
66
+ result.east = this.east;
67
+ result.north = this.north;
68
+ return result;
69
+ };
70
+
71
+ /**
72
+ * Compares the provided Extent with this Extent componentwise and returns
73
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
74
+ * @memberof Cartesian3
75
+ *
76
+ * @param {Extent} [other] The Extent to compare.
77
+ * @return {Boolean} <code>true</code> if the Extents are equal, <code>false</code> otherwise.
78
+ */
79
+ Extent.prototype.equals = function(other) {
80
+ return typeof other !== 'undefined' &&
81
+ this.west === other.west &&
82
+ this.south === other.south &&
83
+ this.east === other.east &&
84
+ this.north === other.north;
85
+ };
86
+
87
+ /**
88
+ * Compares the provided Extent with this Extent componentwise and returns
89
+ * <code>true</code> if they are within the provided epsilon,
90
+ * <code>false</code> otherwise.
91
+ * @memberof Extent
92
+ *
93
+ * @param {Extent} [other] The Extent to compare.
94
+ * @param {Number} epsilon The epsilon to use for equality testing.
95
+ * @return {Boolean} <code>true</code> if the Extents are within the provided epsilon, <code>false</code> otherwise.
96
+ *
97
+ * @exception {DeveloperError} epsilon is required and must be a number.
98
+ */
99
+ Extent.prototype.equalsEpsilon = function(other, epsilon) {
100
+ if (typeof epsilon !== 'number') {
101
+ throw new DeveloperError('epsilon is required and must be a number.');
102
+ }
103
+
104
+ return typeof other !== 'undefined' &&
105
+ (Math.abs(this.west - other.west) <= epsilon) &&
106
+ (Math.abs(this.south - other.south) <= epsilon) &&
107
+ (Math.abs(this.east - other.east) <= epsilon) &&
108
+ (Math.abs(this.north - other.north) <= epsilon);
109
+ };
110
+
111
+ /**
112
+ * Checks this Extent's properties and throws if they are not in valid ranges.
113
+ *
114
+ * @exception {DeveloperError} <code>north</code> is required to be a number.
115
+ * @exception {DeveloperError} <code>south</code> is required to be a number.
116
+ * @exception {DeveloperError} <code>east</code> is required to be a number.
117
+ * @exception {DeveloperError} <code>west</code> is required to be a number.
118
+ * @exception {DeveloperError} <code>north</code> must be in the interval [<code>-Pi/2</code>, <code>Pi/2</code>].
119
+ * @exception {DeveloperError} <code>south</code> must be in the interval [<code>-Pi/2</code>, <code>Pi/2</code>].
120
+ * @exception {DeveloperError} <code>east</code> must be in the interval [<code>-Pi</code>, <code>Pi</code>].
121
+ * @exception {DeveloperError} <code>west</code> must be in the interval [<code>-Pi</code>, <code>Pi</code>].
122
+ */
123
+ Extent.prototype.validate = function() {
124
+ var north = this.north;
125
+ if (typeof north !== 'number') {
126
+ throw new DeveloperError('north is required to be a number.');
127
+ }
128
+
129
+ if (north < -CesiumMath.PI_OVER_TWO || north > CesiumMath.PI_OVER_TWO) {
130
+ throw new DeveloperError('north must be in the interval [-Pi/2, Pi/2].');
131
+ }
132
+
133
+ var south = this.south;
134
+ if (typeof south !== 'number') {
135
+ throw new DeveloperError('south is required to be a number.');
136
+ }
137
+
138
+ if (south < -CesiumMath.PI_OVER_TWO || south > CesiumMath.PI_OVER_TWO) {
139
+ throw new DeveloperError('south must be in the interval [-Pi/2, Pi/2].');
140
+ }
141
+
142
+ var west = this.west;
143
+ if (typeof west !== 'number') {
144
+ throw new DeveloperError('west is required to be a number.');
145
+ }
146
+
147
+ if (west < -Math.PI || west > Math.PI) {
148
+ throw new DeveloperError('west must be in the interval [-Pi, Pi].');
149
+ }
150
+
151
+ var east = this.east;
152
+ if (typeof east !== 'number') {
153
+ throw new DeveloperError('east is required to be a number.');
154
+ }
155
+
156
+ if (east < -Math.PI || east > Math.PI) {
157
+ throw new DeveloperError('east must be in the interval [-Pi, Pi].');
158
+ }
159
+ };
160
+
161
+ /**
162
+ * Computes the southwest corner of this extent.
163
+ * @memberof Extent
164
+ *
165
+ * @param {Cartographic} [result] The object onto which to store the result.
166
+ * @return {Cartographic} The modified result parameter or a new Cartographic instance if none was provided.
167
+ */
168
+ Extent.prototype.getSouthwest = function(result) {
169
+ if (typeof result === 'undefined') {
170
+ return new Cartographic(this.west, this.south);
171
+ }
172
+ result.longitude = this.west;
173
+ result.latitude = this.south;
174
+ result.height = 0.0;
175
+ return result;
176
+ };
177
+
178
+ /**
179
+ * Computes the northwest corner of this extent.
180
+ * @memberof Extent
181
+ *
182
+ * @param {Cartographic} [result] The object onto which to store the result.
183
+ * @return {Cartographic} The modified result parameter or a new Cartographic instance if none was provided.
184
+ */
185
+ Extent.prototype.getNorthwest = function(result) {
186
+ if (typeof result === 'undefined') {
187
+ return new Cartographic(this.west, this.north);
188
+ }
189
+ result.longitude = this.west;
190
+ result.latitude = this.north;
191
+ result.height = 0.0;
192
+ return result;
193
+ };
194
+
195
+ /**
196
+ * Computes the northeast corner of this extent.
197
+ * @memberof Extent
198
+ *
199
+ * @param {Cartographic} [result] The object onto which to store the result.
200
+ * @return {Cartographic} The modified result parameter or a new Cartographic instance if none was provided.
201
+ */
202
+ Extent.prototype.getNortheast = function(result) {
203
+ if (typeof result === 'undefined') {
204
+ return new Cartographic(this.east, this.north);
205
+ }
206
+ result.longitude = this.east;
207
+ result.latitude = this.north;
208
+ result.height = 0.0;
209
+ return result;
210
+ };
211
+
212
+ /**
213
+ * Computes the southeast corner of this extent.
214
+ * @memberof Extent
215
+ *
216
+ * @param {Cartographic} [result] The object onto which to store the result.
217
+ * @return {Cartographic} The modified result parameter or a new Cartographic instance if none was provided.
218
+ */
219
+ Extent.prototype.getSoutheast = function(result) {
220
+ if (typeof result === 'undefined') {
221
+ return new Cartographic(this.east, this.south);
222
+ }
223
+ result.longitude = this.east;
224
+ result.latitude = this.south;
225
+ result.height = 0.0;
226
+ return result;
227
+ };
228
+
229
+ /**
230
+ * Computes the center of this extent.
231
+ * @memberof Extent
232
+ *
233
+ * @param {Cartographic} [result] The object onto which to store the result.
234
+ * @return {Cartographic} The modified result parameter or a new Cartographic instance if none was provided.
235
+ */
236
+ Extent.prototype.getCenter = function(result) {
237
+ if (typeof result === 'undefined') {
238
+ return new Cartographic((this.west + this.east) * 0.5, (this.south + this.north) * 0.5);
239
+ }
240
+ result.longitude = (this.west + this.east) * 0.5;
241
+ result.latitude = (this.south + this.north) * 0.5;
242
+ result.height = 0.0;
243
+ return result;
244
+ };
245
+
246
+ /**
247
+ * Computes the intersection of this extent with the provided extent.
248
+ * @memberof Extent
249
+ *
250
+ * @param otherExtent The extent to intersect with this extent.
251
+ * @param {Extent} [result] The object onto which to store the result.
252
+ * @return {Extent} The modified result parameter or a new Extent instance if none was provided.
253
+ *
254
+ * @exception {DeveloperError} otherExtent is required.
255
+ */
256
+ Extent.prototype.intersectWith = function(otherExtent, result) {
257
+ if (typeof otherExtent === 'undefined') {
258
+ throw new DeveloperError('otherExtent is required.');
259
+ }
260
+ var west = Math.max(this.west, otherExtent.west);
261
+ var south = Math.max(this.south, otherExtent.south);
262
+ var east = Math.min(this.east, otherExtent.east);
263
+ var north = Math.min(this.north, otherExtent.north);
264
+ if (typeof result === 'undefined') {
265
+ return new Extent(west, south, east, north);
266
+ }
267
+ result.west = west;
268
+ result.south = south;
269
+ result.east = east;
270
+ result.north = north;
271
+ return result;
272
+ };
273
+
274
+ /**
275
+ * Returns true if the provided cartographic is on or inside the extent, false otherwise.
276
+ * @memberof Extent
277
+ *
278
+ * @param {Cartographic} cartographic The cartographic to test.
279
+ * @returns {Boolean} true if the provided cartographic is inside the extent, false otherwise.
280
+ *
281
+ * @exception {DeveloperError} cartographic is required.
282
+ */
283
+ Extent.prototype.contains = function(cartographic) {
284
+ if (typeof cartographic === 'undefined') {
285
+ throw new DeveloperError('cartographic is required.');
286
+ }
287
+ return cartographic.longitude >= this.west &&
288
+ cartographic.longitude <= this.east &&
289
+ cartographic.latitude >= this.south &&
290
+ cartographic.latitude <= this.north;
291
+ };
292
+
293
+ /**
294
+ * Determines if the extent is empty, i.e., if <code>west === east</code>
295
+ * and <code>south === north</code>.
296
+ *
297
+ * @memberof Extent
298
+ *
299
+ * @return {Boolean} True if the extent is empty; otherwise, false.
300
+ */
301
+ Extent.prototype.isEmpty = function() {
302
+ return (this.west === this.east) && (this.south === this.north);
303
+ };
304
+
305
+ var subsampleLlaScratch = new Cartographic();
306
+ /**
307
+ * Samples this Extent so that it includes a list of Cartesian points suitable for passing to
308
+ * {@link BoundingSphere#fromPoints}. Sampling is necessary to account
309
+ * for extents that cover the poles or cross the equator.
310
+ *
311
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid to use.
312
+ * @param {Array} [result] The array of Cartesians onto which to store the result.
313
+ * @return {Array} The modified result parameter or a new Array of Cartesians instances if none was provided.
314
+ */
315
+ Extent.prototype.subsample = function(ellipsoid, result) {
316
+ ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);
317
+
318
+ if (typeof result === 'undefined') {
319
+ result = [];
320
+ }
321
+ var length = 0;
322
+
323
+ var north = this.north;
324
+ var south = this.south;
325
+ var east = this.east;
326
+ var west = this.west;
327
+
328
+ var lla = subsampleLlaScratch;
329
+ lla.longitude = west;
330
+ lla.latitude = north;
331
+ result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);
332
+ length++;
333
+
334
+ lla.longitude = east;
335
+ result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);
336
+ length++;
337
+
338
+ lla.latitude = south;
339
+ result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);
340
+ length++;
341
+
342
+ lla.longitude = west;
343
+ result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);
344
+ length++;
345
+
346
+ if (north < 0.0) {
347
+ lla.latitude = north;
348
+ } else if (south > 0.0) {
349
+ lla.latitude = south;
350
+ } else {
351
+ lla.latitude = 0.0;
352
+ }
353
+
354
+ for ( var i = 1; i < 8; ++i) {
355
+ var temp = -Math.PI + i * CesiumMath.PI_OVER_TWO;
356
+ if (west < temp && temp < east) {
357
+ lla.longitude = temp;
358
+ result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);
359
+ length++;
360
+ }
361
+ }
362
+
363
+ if (lla.latitude === 0.0) {
364
+ lla.longitude = west;
365
+ result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);
366
+ length++;
367
+ lla.longitude = east;
368
+ result[length] = ellipsoid.cartographicToCartesian(lla, result[length]);
369
+ length++;
370
+ }
371
+ result.length = length;
372
+ return result;
373
+ };
374
+
375
+ /**
376
+ * The largest possible extent.
377
+ * @memberof Extent
378
+ * @type Extent
379
+ */
380
+ Extent.MAX_VALUE = freezeObject(new Extent(-Math.PI, -CesiumMath.PI_OVER_TWO, Math.PI, CesiumMath.PI_OVER_TWO));
381
+
382
+ return Extent;
383
+ });