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,182 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/DeveloperError',
5
+ '../Core/Math',
6
+ '../Core/BoundingSphere',
7
+ '../Core/Cartesian2',
8
+ '../Core/Cartesian3',
9
+ '../Core/Cartographic',
10
+ '../Core/Ellipsoid',
11
+ '../Core/ExtentTessellator',
12
+ '../Core/Occluder',
13
+ '../Core/PlaneTessellator',
14
+ '../Core/TaskProcessor',
15
+ './TerrainProvider',
16
+ './TileState',
17
+ './GeographicTilingScheme',
18
+ '../ThirdParty/when'
19
+ ], function(
20
+ defaultValue,
21
+ DeveloperError,
22
+ CesiumMath,
23
+ BoundingSphere,
24
+ Cartesian2,
25
+ Cartesian3,
26
+ Cartographic,
27
+ Ellipsoid,
28
+ ExtentTessellator,
29
+ Occluder,
30
+ PlaneTessellator,
31
+ TaskProcessor,
32
+ TerrainProvider,
33
+ TileState,
34
+ GeographicTilingScheme,
35
+ when) {
36
+ "use strict";
37
+
38
+ /**
39
+ * A very simple {@link TerrainProvider} that produces geometry by tessellating an ellipsoidal
40
+ * surface.
41
+ *
42
+ * @alias EllipsoidTerrainProvider
43
+ * @constructor
44
+ * @private
45
+ *
46
+ * @param {TilingScheme} [description.tilingScheme] The tiling scheme specifying how the ellipsoidal
47
+ * surface is broken into tiles. If this parameter is not provided, a {@link GeographicTilingScheme}
48
+ * is used.
49
+ * @param {Ellipsoid} [description.ellipsoid] The ellipsoid. If the tilingScheme is specified,
50
+ * this parameter is ignored and the tiling scheme's ellipsoid is used instead. If neither
51
+ * parameter is specified, the WGS84 ellipsoid is used.
52
+ *
53
+ * @see TerrainProvider
54
+ */
55
+ function EllipsoidTerrainProvider(description) {
56
+ description = defaultValue(description, {});
57
+
58
+ /**
59
+ * The tiling scheme used to tile the surface.
60
+ *
61
+ * @type TilingScheme
62
+ */
63
+ this.tilingScheme = defaultValue(description.tilingScheme, new GeographicTilingScheme({ ellipsoid : defaultValue(description.ellipsoid, Ellipsoid.WGS84) }));
64
+
65
+ // Note: the 64 below does NOT need to match the actual vertex dimensions.
66
+ this.levelZeroMaximumGeometricError = TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap(this.tilingScheme.getEllipsoid(), 64, this.tilingScheme.getNumberOfXTilesAtLevel(0));
67
+
68
+ this.ready = true;
69
+ }
70
+
71
+ /**
72
+ * Gets the maximum geometric error allowed in a tile at a given level.
73
+ *
74
+ * @param {Number} level The tile level for which to get the maximum geometric error.
75
+ * @returns {Number} The maximum geometric error.
76
+ */
77
+ EllipsoidTerrainProvider.prototype.getLevelMaximumGeometricError = TerrainProvider.prototype.getLevelMaximumGeometricError;
78
+
79
+ /**
80
+ * Request the tile geometry from the remote server. Once complete, the
81
+ * tile state should be set to RECEIVED. Alternatively, tile state can be set to
82
+ * UNLOADED to indicate that the request should be attempted again next update, if the tile
83
+ * is still needed.
84
+ *
85
+ * @param {Tile} The tile to request geometry for.
86
+ */
87
+ EllipsoidTerrainProvider.prototype.requestTileGeometry = function(tile) {
88
+ tile.state = TileState.RECEIVED;
89
+ };
90
+
91
+ var taskProcessor = new TaskProcessor('createVerticesFromExtent');
92
+
93
+ /**
94
+ * Transform the tile geometry from the format requested from the remote server
95
+ * into a format suitable for resource creation. Once complete, the tile
96
+ * state should be set to TRANSFORMED. Alternatively, tile state can be set to
97
+ * RECEIVED to indicate that the transformation should be attempted again next update, if the tile
98
+ * is still needed.
99
+ *
100
+ * @param {Context} context The context to use to create resources.
101
+ * @param {Tile} tile The tile to transform geometry for.
102
+ */
103
+ EllipsoidTerrainProvider.prototype.transformGeometry = function(context, tile) {
104
+ var tilingScheme = this.tilingScheme;
105
+ var ellipsoid = tilingScheme.getEllipsoid();
106
+ var extent = tile.extent;
107
+
108
+ tile.center = ellipsoid.cartographicToCartesian(extent.getCenter());
109
+
110
+ var width = 16;
111
+ var height = 16;
112
+
113
+ var verticesPromise = taskProcessor.scheduleTask({
114
+ extent : extent,
115
+ surfaceHeight : 0,
116
+ width : width,
117
+ height : height,
118
+ relativeToCenter : tile.center,
119
+ radiiSquared : ellipsoid.getRadiiSquared()
120
+ });
121
+
122
+ if (typeof verticesPromise === 'undefined') {
123
+ //postponed
124
+ tile.state = TileState.RECEIVED;
125
+ return;
126
+ }
127
+
128
+ when(verticesPromise, function(result) {
129
+ tile.transientData = {
130
+ vertices : new Float32Array(result),
131
+ indices : TerrainProvider.getRegularGridIndices(width, height)
132
+ };
133
+ tile.state = TileState.TRANSFORMED;
134
+ }, function(e) {
135
+ /*global console*/
136
+ console.error('failed to transform geometry: ' + e);
137
+ tile.state = TileState.FAILED;
138
+ });
139
+ };
140
+
141
+ var scratch = new Cartesian3();
142
+
143
+ /**
144
+ * Create WebGL resources for the tile using whatever data the transformGeometry step produced.
145
+ * Once complete, the tile state should be set to READY. Alternatively, tile state can be set to
146
+ * TRANSFORMED to indicate that resource creation should be attempted again next update, if the tile
147
+ * is still needed.
148
+ *
149
+ * @param {Context} context The context to use to create resources.
150
+ * @param {Tile} tile The tile to create resources for.
151
+ */
152
+ EllipsoidTerrainProvider.prototype.createResources = function(context, tile) {
153
+ var buffers = tile.transientData;
154
+ tile.transientData = undefined;
155
+
156
+ TerrainProvider.createTileEllipsoidGeometryFromBuffers(context, tile, buffers);
157
+ tile.maxHeight = 0;
158
+ tile.boundingSphere3D = BoundingSphere.fromVertices(buffers.vertices, tile.center, 5);
159
+
160
+ var ellipsoid = this.tilingScheme.getEllipsoid();
161
+ var extent = tile.extent;
162
+ tile.southwestCornerCartesian = ellipsoid.cartographicToCartesian(extent.getSouthwest());
163
+ tile.southeastCornerCartesian = ellipsoid.cartographicToCartesian(extent.getSoutheast());
164
+ tile.northeastCornerCartesian = ellipsoid.cartographicToCartesian(extent.getNortheast());
165
+ tile.northwestCornerCartesian = ellipsoid.cartographicToCartesian(extent.getNorthwest());
166
+
167
+ tile.westNormal = Cartesian3.UNIT_Z.cross(tile.southwestCornerCartesian.negate(scratch), scratch).normalize();
168
+ tile.eastNormal = tile.northeastCornerCartesian.negate(scratch).cross(Cartesian3.UNIT_Z, scratch).normalize();
169
+ tile.southNormal = ellipsoid.geodeticSurfaceNormal(tile.southeastCornerCartesian).cross(tile.southwestCornerCartesian.subtract(tile.southeastCornerCartesian, scratch)).normalize();
170
+ tile.northNormal = ellipsoid.geodeticSurfaceNormal(tile.northwestCornerCartesian).cross(tile.northeastCornerCartesian.subtract(tile.northwestCornerCartesian, scratch)).normalize();
171
+
172
+ var occludeePoint = Occluder.computeOccludeePointFromExtent(tile.extent, ellipsoid);
173
+ if (typeof occludeePoint !== 'undefined') {
174
+ Cartesian3.multiplyComponents(occludeePoint, ellipsoid.getOneOverRadii(), occludeePoint);
175
+ }
176
+ tile.occludeePointInScaledSpace = occludeePoint;
177
+
178
+ tile.state = TileState.READY;
179
+ };
180
+
181
+ return EllipsoidTerrainProvider;
182
+ });
@@ -0,0 +1,86 @@
1
+ /*global define*/
2
+ define([], function() {
3
+ "use strict";
4
+
5
+ /**
6
+ * State information about the current frame. An instance of this class
7
+ * is provided to update functions.
8
+ *
9
+ * @alias FrameState
10
+ * @constructor
11
+ */
12
+ var FrameState = function() {
13
+ /**
14
+ * The current mode of the scene.
15
+ * @type SceneMode
16
+ */
17
+ this.mode = undefined;
18
+
19
+ /**
20
+ * The current morph transition time between 2D/Columbus View and 3D,
21
+ * with 0.0 being 2D or Columbus View and 1.0 being 3D.
22
+ *
23
+ * @type Number
24
+ */
25
+ this.morphTime = undefined;
26
+
27
+ /**
28
+ * The current frame number.
29
+ *
30
+ * @type Number
31
+ */
32
+ this.frameNumber = undefined;
33
+
34
+ /**
35
+ * The scene's current time.
36
+ *
37
+ * @type JulianDate
38
+ */
39
+ this.time = undefined;
40
+
41
+ this.scene2D = {
42
+ /**
43
+ * The projection to use in 2D mode.
44
+ */
45
+ projection : undefined
46
+ };
47
+
48
+ /**
49
+ * The current camera.
50
+ * @type Camera
51
+ */
52
+ this.camera = undefined;
53
+
54
+ /**
55
+ * The culling volume.
56
+ * @type CullingVolume
57
+ */
58
+ this.cullingVolume = undefined;
59
+
60
+ /**
61
+ * The current occluder.
62
+ * @type Occluder
63
+ */
64
+ this.occluder = undefined;
65
+
66
+ this.passes = {
67
+ /**
68
+ * <code>true</code> if the primitive should update for a color pass, <code>false</code> otherwise.
69
+ * @type Boolean
70
+ */
71
+ color : false,
72
+ /**
73
+ * <code>true</code> if the primitive should update for a picking pass, <code>false</code> otherwise.
74
+ * @type Boolean
75
+ */
76
+ pick : false,
77
+ /**
78
+ * <code>true</code> if the primitive should update for an overlay pass, <code>false</code> otherwise.
79
+ * @type Boolean
80
+ */
81
+ overlay : false
82
+ };
83
+ };
84
+
85
+ return FrameState;
86
+ });
@@ -0,0 +1,32 @@
1
+ /*global define*/
2
+ define(['../Core/defaultValue'], function(defaultValue) {
3
+ "use strict";
4
+
5
+ /**
6
+ * Defines a list of commands whose geometry are bound by near and far distances from the camera.
7
+ * @alias FrustumCommands
8
+ * @constructor
9
+ *
10
+ * @param {Number} [near=0.0] The lower bound or closest distance from the camera.
11
+ * @param {Number} [far=0.0] The upper bound or farthest distance from the camera.
12
+ */
13
+ var FrustumCommands = function(near, far) {
14
+ /**
15
+ * The lower bound or closest distance from the camera.
16
+ * @type {Number}
17
+ */
18
+ this.near = defaultValue(near, 0.0);
19
+ /**
20
+ * The upper bound or farthest distance from the camera.
21
+ * @type {Number}
22
+ */
23
+ this.far = defaultValue(far, 0.0);
24
+ /**
25
+ * The list of commands.
26
+ * @type {Array}
27
+ */
28
+ this.commands = [];
29
+ };
30
+
31
+ return FrustumCommands;
32
+ });
@@ -0,0 +1,265 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/DeveloperError',
5
+ '../Core/Math',
6
+ '../Core/Cartesian2',
7
+ '../Core/Ellipsoid',
8
+ '../Core/Extent',
9
+ '../Core/GeographicProjection',
10
+ './TilingScheme'
11
+ ], function(
12
+ defaultValue,
13
+ DeveloperError,
14
+ CesiumMath,
15
+ Cartesian2,
16
+ Ellipsoid,
17
+ Extent,
18
+ GeographicProjection,
19
+ TilingScheme) {
20
+ "use strict";
21
+
22
+ /**
23
+ * A tiling scheme for geometry referenced to a simple {@link GeographicProjection} where
24
+ * longitude and latitude are directly mapped to X and Y. This projection is commonly
25
+ * known as geographic, equirectangular, equidistant cylindrical, or plate carrée.
26
+ *
27
+ * @alias GeographicTilingScheme
28
+ * @constructor
29
+ *
30
+ * @param {Ellipsoid} [description.ellipsoid=Ellipsoid.WGS84] The ellipsoid whose surface is being tiled. Defaults to
31
+ * the WGS84 ellipsoid.
32
+ * @param {Extent} [description.extent=Extent.MAX_VALUE] The extent, in radians, covered by the tiling scheme.
33
+ * @param {Number} [description.numberOfLevelZeroTilesX=2] The number of tiles in the X direction at level zero of
34
+ * the tile tree.
35
+ * @param {Number} [description.numberOfLevelZeroTilesY=1] The number of tiles in the Y direction at level zero of
36
+ * the tile tree.
37
+ */
38
+ var GeographicTilingScheme = function GeographicTilingScheme(description) {
39
+ description = defaultValue(description, {});
40
+
41
+ this._ellipsoid = defaultValue(description.ellipsoid, Ellipsoid.WGS84);
42
+ this._extent = defaultValue(description.extent, Extent.MAX_VALUE);
43
+ this._projection = new GeographicProjection(this._ellipsoid);
44
+ this._numberOfLevelZeroTilesX = defaultValue(description.numberOfLevelZeroTilesX, 2);
45
+ this._numberOfLevelZeroTilesY = defaultValue(description.numberOfLevelZeroTilesY, 1);
46
+ };
47
+
48
+ /**
49
+ * Gets the ellipsoid that is tiled by this tiling scheme.
50
+ *
51
+ * @memberof GeographicTilingScheme
52
+ *
53
+ * @returns {Ellipsoid} The ellipsoid.
54
+ */
55
+ GeographicTilingScheme.prototype.getEllipsoid = function() {
56
+ return this._ellipsoid;
57
+ };
58
+
59
+ /**
60
+ * Gets the extent, in radians, covered by this tiling scheme.
61
+ *
62
+ * @memberof GeographicTilingScheme
63
+ *
64
+ * @returns {Extent} The extent.
65
+ */
66
+ GeographicTilingScheme.prototype.getExtent = function() {
67
+ return this._extent;
68
+ };
69
+
70
+ /**
71
+ * Gets the map projection used by this tiling scheme.
72
+ *
73
+ * @memberof GeographicTilingScheme
74
+ *
75
+ * @returns {Projection} The map projection.
76
+ */
77
+ GeographicTilingScheme.prototype.getProjection = function() {
78
+ return this._projection;
79
+ };
80
+
81
+ /**
82
+ * Gets the total number of tiles in the X direction at a specified level-of-detail.
83
+ *
84
+ * @memberof GeographicTilingScheme
85
+ *
86
+ * @param {Number} level The level-of-detail.
87
+ * @returns {Number} The number of tiles in the X direction at the given level.
88
+ */
89
+ GeographicTilingScheme.prototype.getNumberOfXTilesAtLevel = function(level) {
90
+ return this._numberOfLevelZeroTilesX << level;
91
+ };
92
+
93
+ /**
94
+ * Gets the total number of tiles in the Y direction at a specified level-of-detail.
95
+ *
96
+ * @memberof GeographicTilingScheme
97
+ *
98
+ * @param {Number} level The level-of-detail.
99
+ * @returns {Number} The number of tiles in the Y direction at the given level.
100
+ */
101
+ GeographicTilingScheme.prototype.getNumberOfYTilesAtLevel = function(level) {
102
+ return this._numberOfLevelZeroTilesY << level;
103
+ };
104
+
105
+ /**
106
+ * Creates the tile or tiles at level of detail zero, the coarsest, least detailed level.
107
+ *
108
+ * @memberof GeographicTilingScheme
109
+ *
110
+ * @return {Array} An array containing the tiles at level of detail zero, starting with the
111
+ * tile in the northwest corner of the globe and followed by the tile (if any) to its east.
112
+ */
113
+ GeographicTilingScheme.prototype.createLevelZeroTiles = function() {
114
+ return TilingScheme.createRectangleOfLevelZeroTiles(this, this._numberOfLevelZeroTilesX, this._numberOfLevelZeroTilesY);
115
+ };
116
+
117
+ /**
118
+ * Transforms an extent specified in geodetic radians to the native coordinate system
119
+ * of this tiling scheme.
120
+ *
121
+ * @memberof GeographicTilingScheme
122
+ *
123
+ * @param {Extent} extent The extent to transform.
124
+ * @param {Extent} [result] The instance to which to copy the result, or undefined if a new instance
125
+ * should be created.
126
+ * @returns {Extent} The specified 'result', or a new object containing the native extent if 'result'
127
+ * is undefined.
128
+ *
129
+ * @exception {DeveloperError} <code>extent</code> is required.
130
+ */
131
+ GeographicTilingScheme.prototype.extentToNativeExtent = function(extent, result) {
132
+ if (typeof extent === 'undefined') {
133
+ throw new DeveloperError('extent is required.');
134
+ }
135
+
136
+ var west = CesiumMath.toDegrees(extent.west);
137
+ var south = CesiumMath.toDegrees(extent.south);
138
+ var east = CesiumMath.toDegrees(extent.east);
139
+ var north = CesiumMath.toDegrees(extent.north);
140
+
141
+ if (typeof result === 'undefined') {
142
+ return new Extent(west, south, east, north);
143
+ }
144
+
145
+ result.west = west;
146
+ result.south = south;
147
+ result.east = east;
148
+ result.north = north;
149
+ return result;
150
+ };
151
+
152
+ /**
153
+ * Converts tile x, y coordinates and level to an extent expressed in the native coordinates
154
+ * of the tiling scheme.
155
+ *
156
+ * @memberof GeographicTilingScheme
157
+ *
158
+ * @param {Number} x The integer x coordinate of the tile.
159
+ * @param {Number} y The integer y coordinate of the tile.
160
+ * @param {Number} level The tile level-of-detail. Zero is the least detailed.
161
+ * @param {Object} [result] The instance to which to copy the result, or undefined if a new instance
162
+ * should be created.
163
+ *
164
+ * @returns {Extent} The specified 'result', or a new object containing the extent
165
+ * if 'result' is undefined.
166
+ */
167
+ GeographicTilingScheme.prototype.tileXYToNativeExtent = function(x, y, level, result) {
168
+ var extentRadians = this.tileXYToExtent(x, y, level, result);
169
+ extentRadians.west = CesiumMath.toDegrees(extentRadians.west);
170
+ extentRadians.south = CesiumMath.toDegrees(extentRadians.south);
171
+ extentRadians.east = CesiumMath.toDegrees(extentRadians.east);
172
+ extentRadians.north = CesiumMath.toDegrees(extentRadians.north);
173
+ return extentRadians;
174
+ };
175
+
176
+ /**
177
+ * Converts tile x, y coordinates and level to a cartographic extent in radians.
178
+ *
179
+ * @memberof GeographicTilingScheme
180
+ *
181
+ * @param {Number} x The integer x coordinate of the tile.
182
+ * @param {Number} y The integer y coordinate of the tile.
183
+ * @param {Number} level The tile level-of-detail. Zero is the least detailed.
184
+ * @param {Object} [result] The instance to which to copy the result, or undefined if a new instance
185
+ * should be created.
186
+ *
187
+ * @returns {Extent} The specified 'result', or a new object containing the extent
188
+ * if 'result' is undefined.
189
+ */
190
+ GeographicTilingScheme.prototype.tileXYToExtent = function(x, y, level, result) {
191
+ var extent = this._extent;
192
+
193
+ var xTiles = this.getNumberOfXTilesAtLevel(level);
194
+ var yTiles = this.getNumberOfYTilesAtLevel(level);
195
+
196
+ var xTileWidth = (extent.east - extent.west) / xTiles;
197
+ var west = x * xTileWidth + extent.west;
198
+ var east = (x + 1) * xTileWidth + extent.west;
199
+
200
+ var yTileHeight = (extent.north - extent.south) / yTiles;
201
+ var north = extent.north - y * yTileHeight;
202
+ var south = extent.north - (y + 1) * yTileHeight;
203
+
204
+ if (typeof result === 'undefined') {
205
+ result = new Extent(west, south, east, north);
206
+ }
207
+
208
+ result.west = west;
209
+ result.south = south;
210
+ result.east = east;
211
+ result.north = north;
212
+ return result;
213
+ };
214
+
215
+ /**
216
+ * Calculates the tile x, y coordinates of the tile containing
217
+ * a given cartographic position.
218
+ *
219
+ * @memberof GeographicTilingScheme
220
+ *
221
+ * @param {Cartographic} position The position.
222
+ * @param {Number} level The tile level-of-detail. Zero is the least detailed.
223
+ * @param {Cartesian} [result] The instance to which to copy the result, or undefined if a new instance
224
+ * should be created.
225
+ *
226
+ * @returns {Cartesian2} The specified 'result', or a new object containing the tile x, y coordinates
227
+ * if 'result' is undefined.
228
+ */
229
+ GeographicTilingScheme.prototype.positionToTileXY = function(position, level, result) {
230
+ var extent = this._extent;
231
+ if (position.latitude > extent.north ||
232
+ position.latitude < extent.south ||
233
+ position.longitude < extent.west ||
234
+ position.longitude > extent.east) {
235
+ // outside the bounds of the tiling scheme
236
+ return undefined;
237
+ }
238
+
239
+ var xTiles = this.getNumberOfXTilesAtLevel(level);
240
+ var yTiles = this.getNumberOfYTilesAtLevel(level);
241
+
242
+ var xTileWidth = (extent.east - extent.west) / xTiles;
243
+ var yTileHeight = (extent.north - extent.south) / yTiles;
244
+
245
+ var xTileCoordinate = (position.longitude - extent.west) / xTileWidth | 0;
246
+ if (xTileCoordinate >= xTiles) {
247
+ xTileCoordinate = xTiles - 1;
248
+ }
249
+
250
+ var yTileCoordinate = (extent.north - position.latitude) / yTileHeight | 0;
251
+ if (yTileCoordinate >= yTiles) {
252
+ yTileCoordinate = yTiles - 1;
253
+ }
254
+
255
+ if (typeof result === 'undefined') {
256
+ return new Cartesian2(xTileCoordinate, yTileCoordinate);
257
+ }
258
+
259
+ result.x = xTileCoordinate;
260
+ result.y = yTileCoordinate;
261
+ return result;
262
+ };
263
+
264
+ return GeographicTilingScheme;
265
+ });