cesium 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
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,229 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ '../Core/ComponentDatatype',
5
+ '../Renderer/BufferUsage',
6
+ '../Core/IndexDatatype'
7
+ ], function(
8
+ DeveloperError,
9
+ ComponentDatatype,
10
+ BufferUsage,
11
+ IndexDatatype) {
12
+ "use strict";
13
+
14
+ /**
15
+ * Provides terrain or other geometry for the surface of an ellipsoid. The surface geometry is
16
+ * organized into a pyramid of tiles according to a {@link TilingScheme}. This type describes an
17
+ * interface and is not intended to be instantiated directly.
18
+ *
19
+ * @alias TerrainProvider
20
+ * @constructor
21
+ * @private
22
+ *
23
+ * @see EllipsoidTerrainProvider
24
+ */
25
+ function TerrainProvider() {
26
+ /**
27
+ * The tiling scheme used to tile the surface.
28
+ *
29
+ * @type TilingScheme
30
+ */
31
+ this.tilingScheme = undefined;
32
+
33
+ this.levelZeroMaximumGeometricError = undefined;
34
+
35
+ throw new DeveloperError('This type should not be instantiated directly.');
36
+ }
37
+
38
+ /**
39
+ * Specifies the indices of the attributes of the terrain geometry.
40
+ *
41
+ * @memberof TerrainProvider
42
+ */
43
+ TerrainProvider.attributeIndices = {
44
+ position3D : 0,
45
+ textureCoordinates : 1
46
+ };
47
+
48
+ TerrainProvider.wireframe = false;
49
+
50
+ var regularGridIndexArrays = [];
51
+
52
+ TerrainProvider.getRegularGridIndices = function(width, height) {
53
+ var byWidth = regularGridIndexArrays[width];
54
+ if (typeof byWidth === 'undefined') {
55
+ regularGridIndexArrays[width] = byWidth = [];
56
+ }
57
+
58
+ var indices = byWidth[height];
59
+ if (typeof indices === 'undefined') {
60
+ indices = byWidth[height] = new Uint16Array((width - 1) * (height - 1) * 6);
61
+
62
+ var index = 0;
63
+ var indicesIndex = 0;
64
+ for ( var i = 0; i < height - 1; ++i) {
65
+ for ( var j = 0; j < width - 1; ++j) {
66
+ var upperLeft = index;
67
+ var lowerLeft = upperLeft + width;
68
+ var lowerRight = lowerLeft + 1;
69
+ var upperRight = upperLeft + 1;
70
+
71
+ indices[indicesIndex++] = upperLeft;
72
+ indices[indicesIndex++] = lowerLeft;
73
+ indices[indicesIndex++] = upperRight;
74
+ indices[indicesIndex++] = upperRight;
75
+ indices[indicesIndex++] = lowerLeft;
76
+ indices[indicesIndex++] = lowerRight;
77
+
78
+ ++index;
79
+ }
80
+ ++index;
81
+ }
82
+ }
83
+
84
+ return indices;
85
+ };
86
+
87
+ function addTriangle(lines, linesIndex, i0, i1, i2) {
88
+ lines[linesIndex++] = i0;
89
+ lines[linesIndex++] = i1;
90
+
91
+ lines[linesIndex++] = i1;
92
+ lines[linesIndex++] = i2;
93
+
94
+ lines[linesIndex++] = i2;
95
+ lines[linesIndex++] = i0;
96
+
97
+ return linesIndex;
98
+ }
99
+
100
+ function trianglesToLines(triangles) {
101
+ var count = triangles.length;
102
+ var lines = new Uint16Array(2 * count);
103
+ var linesIndex = 0;
104
+ for ( var i = 0; i < count; i += 3) {
105
+ linesIndex = addTriangle(lines, linesIndex, triangles[i], triangles[i + 1], triangles[i + 2]);
106
+ }
107
+
108
+ return lines;
109
+ }
110
+
111
+ TerrainProvider.createTileEllipsoidGeometryFromBuffers = function(context, tile, buffers) {
112
+ var datatype = ComponentDatatype.FLOAT;
113
+ var typedArray = buffers.vertices;
114
+ var buffer = context.createVertexBuffer(typedArray, BufferUsage.STATIC_DRAW);
115
+ var stride = 5 * datatype.sizeInBytes;
116
+ var attributes = [{
117
+ index : TerrainProvider.attributeIndices.position3D,
118
+ vertexBuffer : buffer,
119
+ componentDatatype : datatype,
120
+ componentsPerAttribute : 3,
121
+ offsetInBytes : 0,
122
+ strideInBytes : stride
123
+ }, {
124
+ index : TerrainProvider.attributeIndices.textureCoordinates,
125
+ vertexBuffer : buffer,
126
+ componentDatatype : datatype,
127
+ componentsPerAttribute : 2,
128
+ offsetInBytes : 3 * datatype.sizeInBytes,
129
+ strideInBytes : stride
130
+ }];
131
+
132
+ var indexBuffers = buffers.indices.indexBuffers || {};
133
+ var indexBuffer = indexBuffers[context.getId()];
134
+ if (typeof indexBuffer === 'undefined' || indexBuffer.isDestroyed()) {
135
+ var indices = buffers.indices;
136
+ if (TerrainProvider.wireframe) {
137
+ indices = trianglesToLines(buffers.indices);
138
+ }
139
+ indexBuffer = context.createIndexBuffer(indices, BufferUsage.STATIC_DRAW, IndexDatatype.UNSIGNED_SHORT);
140
+ indexBuffer.setVertexArrayDestroyable(false);
141
+ indexBuffer.referenceCount = 1;
142
+ indexBuffers[context.getId()] = indexBuffer;
143
+ buffers.indices.indexBuffers = indexBuffers;
144
+ } else {
145
+ ++indexBuffer.referenceCount;
146
+ }
147
+
148
+ tile.vertexArray = context.createVertexArray(attributes, indexBuffer);
149
+ };
150
+
151
+ /**
152
+ * Specifies the quality of terrain created from heightmaps. A value of 1.0 will
153
+ * ensure that adjacent heightmap vertices are separated by no more than
154
+ * {@link CentralBodySurface._maxScreenSpaceError} screen pixels and will probably go very slowly.
155
+ * A value of 0.5 will cut the estimated level zero geometric error in half, allowing twice the
156
+ * screen pixels between adjacent heightmap vertices and thus rendering more quickly.
157
+ */
158
+ TerrainProvider.heightmapTerrainQuality = 0.25;
159
+
160
+ /**
161
+ * Determines an appropriate geometric error estimate when the geometry comes from a heightmap.
162
+ *
163
+ * @param ellipsoid The ellipsoid to which the terrain is attached.
164
+ * @param tileImageWidth The width, in pixels, of the heightmap associated with a single tile.
165
+ * @param numberOfTilesAtLevelZero The number of tiles in the horizontal direction at tile level zero.
166
+ * @returns {Number} An estimated geometric error.
167
+ */
168
+ TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap = function(ellipsoid, tileImageWidth, numberOfTilesAtLevelZero) {
169
+ return ellipsoid.getMaximumRadius() * 2 * Math.PI * TerrainProvider.heightmapTerrainQuality / (tileImageWidth * numberOfTilesAtLevelZero);
170
+ };
171
+
172
+ /**
173
+ * Gets the maximum geometric error allowed in a tile at a given level.
174
+ *
175
+ * @param {Number} level The tile level for which to get the maximum geometric error.
176
+ * @returns {Number} The maximum geometric error.
177
+ */
178
+ TerrainProvider.prototype.getLevelMaximumGeometricError = function(level) {
179
+ return this.levelZeroMaximumGeometricError / (1 << level);
180
+ };
181
+
182
+ // Is there a limit on 'level' of the tile that can be passed in? It seems
183
+ // natural to have a maxLevel, but this would cause problems if we have hi-res imagery
184
+ // and low-res terrain. So I'd say we can continue to refine terrain tiles arbitrarily
185
+ // until both the terrain and all the imagery layers have no more detail to give. In that
186
+ // case, this method is expected to be able to produce geometry for an arbitrarily-deep
187
+ // tile tree.
188
+
189
+ /**
190
+ * Request the tile geometry from the remote server. Once complete, the
191
+ * tile state should be set to RECEIVED. Alternatively, tile state can be set to
192
+ * UNLOADED to indicate that the request should be attempted again next update, if the tile
193
+ * is still needed.
194
+ *
195
+ * @param {Tile} The tile to request geometry for.
196
+ */
197
+ TerrainProvider.prototype.requestTileGeometry = function(tile) {
198
+ throw new DeveloperError('This type should not be instantiated directly.');
199
+ };
200
+
201
+ /**
202
+ * Transform the tile geometry from the format requested from the remote server
203
+ * into a format suitable for resource creation. Once complete, the tile
204
+ * state should be set to TRANSFORMED. Alternatively, tile state can be set to
205
+ * RECEIVED to indicate that the transformation should be attempted again next update, if the tile
206
+ * is still needed.
207
+ *
208
+ * @param {Context} context The context to use to create resources.
209
+ * @param {Tile} tile The tile to transform geometry for.
210
+ */
211
+ TerrainProvider.prototype.transformGeometry = function(context, tile) {
212
+ throw new DeveloperError('This type should not be instantiated directly.');
213
+ };
214
+
215
+ /**
216
+ * Create WebGL resources for the tile using whatever data the transformGeometry step produced.
217
+ * Once complete, the tile state should be set to READY. Alternatively, tile state can be set to
218
+ * TRANSFORMED to indicate that resource creation should be attempted again next update, if the tile
219
+ * is still needed.
220
+ *
221
+ * @param {Context} context The context to use to create resources.
222
+ * @param {Tile} tile The tile to create resources for.
223
+ */
224
+ TerrainProvider.prototype.createResources = function(context, tile) {
225
+ throw new DeveloperError('This type should not be instantiated directly.');
226
+ };
227
+
228
+ return TerrainProvider;
229
+ });
@@ -0,0 +1,154 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/destroyObject',
4
+ '../Core/DeveloperError',
5
+ '../Renderer/PixelDatatype',
6
+ '../Renderer/PixelFormat',
7
+ '../Renderer/Texture'
8
+ ], function(
9
+ destroyObject,
10
+ DeveloperError,
11
+ PixelDatatype,
12
+ PixelFormat,
13
+ Texture) {
14
+ "use strict";
15
+
16
+ var PooledTexture;
17
+ function createPooledTexture(texture, textureTypeKey, pool) {
18
+ if (typeof PooledTexture === 'undefined') {
19
+ // define the class only when needed, so we can use modern
20
+ // language features without breaking legacy browsers at setup time.
21
+ PooledTexture = function(texture, textureTypeKey, pool) {
22
+ this._texture = texture;
23
+ this._textureTypeKey = textureTypeKey;
24
+ this._pool = pool;
25
+ };
26
+
27
+ // pass through all methods to the underlying texture
28
+ Object.keys(Texture.prototype).forEach(function(methodName) {
29
+ PooledTexture.prototype[methodName] = function() {
30
+ var texture = this._texture;
31
+ return texture[methodName].apply(texture, arguments);
32
+ };
33
+ });
34
+
35
+ // except for destroy, which releases back into the pool
36
+ PooledTexture.prototype.destroy = function() {
37
+ var freeList = this._pool._free[this._textureTypeKey];
38
+ if (typeof freeList === 'undefined') {
39
+ freeList = this._pool._free[this._textureTypeKey] = [];
40
+ }
41
+
42
+ if (freeList.length >= 8) {
43
+ this._texture.destroy();
44
+ } else {
45
+ freeList.push(this);
46
+ }
47
+ };
48
+ }
49
+
50
+ return new PooledTexture(texture, textureTypeKey, pool);
51
+ }
52
+
53
+ /**
54
+ * A pool of textures. Textures created from the pool will be released back into the pool
55
+ * when destroy() is called, so future calls to create may re-use a released texture.
56
+ * <br/><br/>
57
+ * Texture pools are useful when textures are being created and destroyed repeatedly.
58
+ *
59
+ * @alias Texture2DPool
60
+ * @constructor
61
+ *
62
+ * @see Texture
63
+ */
64
+ var TexturePool = function() {
65
+ this._free = {};
66
+ };
67
+
68
+ /**
69
+ * Create a texture. This function takes the same arguments as {@link Context#createTexture2D},
70
+ * but may return a pooled texture if there are any available. If a pooled texture is re-used,
71
+ * and no source is provided, the new texture will still retain its old contents.
72
+ *
73
+ * @memberof TexturePool
74
+ *
75
+ * @param {Context} context The context to use to create textures when needed.
76
+ *
77
+ * @exception {DeveloperError} description is required.
78
+ *
79
+ * @see Context#createTexture2D
80
+ */
81
+ TexturePool.prototype.createTexture2D = function(context, description) {
82
+ if (!description) {
83
+ throw new DeveloperError('description is required.');
84
+ }
85
+
86
+ var source = description.source;
87
+ var width = typeof source !== 'undefined' ? source.width : description.width;
88
+ var height = typeof source !== 'undefined' ? source.height : description.height;
89
+ //coerce values to primitive numbers to make textureTypeKey smaller.
90
+ var pixelFormat = +(description.pixelFormat || PixelFormat.RGBA);
91
+ var pixelDatatype = +(description.pixelDatatype || PixelDatatype.UNSIGNED_BYTE);
92
+ var preMultiplyAlpha = +(description.preMultiplyAlpha || pixelFormat === PixelFormat.RGB || pixelFormat === PixelFormat.LUMINANCE);
93
+
94
+ var textureTypeKey = JSON.stringify([width, height, pixelFormat, pixelDatatype, preMultiplyAlpha]);
95
+
96
+ var freeList = this._free[textureTypeKey];
97
+ if (typeof freeList !== 'undefined' && freeList.length > 0) {
98
+ var texture = freeList.pop();
99
+ if (typeof source !== 'undefined') {
100
+ texture.copyFrom(source);
101
+ }
102
+ return texture;
103
+ }
104
+
105
+ return createPooledTexture(context.createTexture2D(description), textureTypeKey, this);
106
+ };
107
+
108
+ /**
109
+ * Returns true if this object was destroyed; otherwise, false.
110
+ * <br /><br />
111
+ * If this object was destroyed, it should not be used; calling any function other than
112
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
113
+ *
114
+ * @memberof TexturePool
115
+ *
116
+ * @return {Boolean} True if this object was destroyed; otherwise, false.
117
+ *
118
+ * @see TexturePool#destroy
119
+ */
120
+ TexturePool.prototype.isDestroyed = function() {
121
+ return false;
122
+ };
123
+
124
+ /**
125
+ * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
126
+ * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
127
+ * <br /><br />
128
+ * Once an object is destroyed, it should not be used; calling any function other than
129
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
130
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
131
+ *
132
+ * @memberof TexturePool
133
+ *
134
+ * @return {undefined}
135
+ *
136
+ * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
137
+ *
138
+ * @see TexturePool#isDestroyed
139
+ *
140
+ * @example
141
+ * pool = pool && pool.destroy();
142
+ */
143
+ TexturePool.prototype.destroy = function() {
144
+ var free = this._free;
145
+ Object.keys(free).forEach(function(textureTypeKey) {
146
+ free[textureTypeKey].forEach(function(texture) {
147
+ texture._texture.destroy();
148
+ });
149
+ });
150
+ return destroyObject(this);
151
+ };
152
+
153
+ return TexturePool;
154
+ });
@@ -0,0 +1,322 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ './TileState'
5
+ ], function(
6
+ DeveloperError,
7
+ TileState) {
8
+ "use strict";
9
+
10
+ /**
11
+ * A node in the quadtree representing the surface of a {@link CentralBody}.
12
+ * A tile holds the surface geometry for its horizontal extent and zero or
13
+ * more imagery textures overlaid on the geometry.
14
+ *
15
+ * @alias Tile
16
+ * @constructor
17
+ * @private
18
+ *
19
+ * @param {TilingScheme} description.tilingScheme The tiling scheme of which the new tile is a part, such as a
20
+ * {@link WebMercatorTilingScheme} or a {@link GeographicTilingScheme}.
21
+ * @param {Number} description.x The tile x coordinate.
22
+ * @param {Number} description.y The tile y coordinate.
23
+ * @param {Number} description.level The tile level-of-detail.
24
+ * @param {Tile} description.parent The parent of this tile in a tile tree system.
25
+ *
26
+ * @exception {DeveloperError} Either description.extent or both description.x and description.y is required.
27
+ * @exception {DeveloperError} description.level is required.
28
+ */
29
+ var Tile = function(description) {
30
+ if (typeof description === 'undefined') {
31
+ throw new DeveloperError('description is required.');
32
+ }
33
+
34
+ if (typeof description.x === 'undefined' || typeof description.y === 'undefined') {
35
+ if (typeof description.extent === 'undefined') {
36
+ throw new DeveloperError('Either description.extent is required or description.x and description.y are required.');
37
+ }
38
+ } else if (description.x < 0 || description.y < 0) {
39
+ throw new DeveloperError('description.x and description.y must be greater than or equal to zero.');
40
+ }
41
+
42
+ if (typeof description.level === 'undefined' || description.zoom < 0) {
43
+ throw new DeveloperError('description.level is required and must be greater than or equal to zero.');
44
+ }
45
+
46
+ if (typeof description.tilingScheme === 'undefined') {
47
+ throw new DeveloperError('description.tilingScheme is required.');
48
+ }
49
+
50
+ /**
51
+ * The tiling scheme used to tile the surface.
52
+ * @type TilingScheme
53
+ */
54
+ this.tilingScheme = description.tilingScheme;
55
+
56
+ /**
57
+ * The x coordinate.
58
+ * @type Number
59
+ */
60
+ this.x = description.x;
61
+
62
+ /**
63
+ * The y coordinate.
64
+ * @type Number
65
+ */
66
+ this.y = description.y;
67
+
68
+ /**
69
+ * The level-of-detail, where zero is the coarsest, least-detailed.
70
+ * @type Number
71
+ */
72
+ this.level = description.level;
73
+
74
+ /**
75
+ * The parent of this tile in a tiling scheme.
76
+ * @type Tile
77
+ */
78
+ this.parent = description.parent;
79
+
80
+ /**
81
+ * The children of this tile in a tiling scheme.
82
+ * @type Array
83
+ */
84
+ this.children = undefined;
85
+
86
+ /**
87
+ * The cartographic extent of the tile, with north, south, east and
88
+ * west properties in radians.
89
+ * @type Extent
90
+ */
91
+ this.extent = this.tilingScheme.tileXYToExtent(this.x, this.y, this.level);
92
+
93
+ /**
94
+ * The {@link VertexArray} defining the geometry of this tile. This property
95
+ * is expected to be set before the tile enter's the {@link TileState.READY}
96
+ * {@link state}.
97
+ * @type VertexArray
98
+ */
99
+ this.vertexArray = undefined;
100
+
101
+ /**
102
+ * The center of this tile. The {@link vertexArray} is rendered
103
+ * relative-to-center (RTC) using this center. Note that the center of the
104
+ * {@link boundingSphere3D} is not necessarily the same as this center.
105
+ * This property is expected to be set before the tile enter's the
106
+ * {@link TileState.READY} {@link state}.
107
+ * @type Cartesian3
108
+ */
109
+ this.center = undefined;
110
+
111
+ /**
112
+ * The maximum height of terrain in this tile, in meters above the ellipsoid.
113
+ * @type Number
114
+ */
115
+ this.maxHeight = undefined;
116
+
117
+ /**
118
+ * A sphere that completely contains this tile on the globe. This property may be
119
+ * undefined until the tile's {@link vertexArray} is loaded.
120
+ * @type BoundingSphere
121
+ */
122
+ this.boundingSphere3D = undefined;
123
+
124
+ /**
125
+ * The current state of the tile in the tile load pipeline.
126
+ * @type TileState
127
+ */
128
+ this.state = TileState.UNLOADED;
129
+
130
+ /**
131
+ * The previous tile in the {@link TileLoadQueue}.
132
+ * @type Tile
133
+ */
134
+ this.loadPrevious = undefined;
135
+
136
+ /**
137
+ * The next tile in the {@link TileLoadQueue}.
138
+ * @type Tile
139
+ */
140
+ this.loadNext = undefined;
141
+
142
+ /**
143
+ * The previous tile in the {@link TileReplacementQueue}.
144
+ * @type Tile
145
+ */
146
+ this.replacementPrevious = undefined;
147
+
148
+ /**
149
+ * The next tile in the {@link TileReplacementQueue}.
150
+ * @type Tile
151
+ */
152
+ this.replacementNext = undefined;
153
+
154
+ /**
155
+ * The {@link TileImagery} attached to this tile.
156
+ * @type Array
157
+ */
158
+ this.imagery = [];
159
+
160
+ /**
161
+ * Transient data stored during the load process. The exact content
162
+ * of this property is a function of the tile's current {@link state} and
163
+ * the {@link TerrainProvider} that is loading the tile.
164
+ * @type Object
165
+ */
166
+ this.transientData = undefined;
167
+
168
+ /**
169
+ * The distance from the camera to this tile, updated when the tile is selected
170
+ * for rendering. We can get rid of this if we have a better way to sort by
171
+ * distance - for example, by using the natural ordering of a quadtree.
172
+ * @type Number
173
+ */
174
+ this.distance = 0.0;
175
+
176
+ /**
177
+ * The world coordinates of the southwest corner of the tile's extent.
178
+ *
179
+ * @type Cartesian3
180
+ */
181
+ this.southwestCornerCartesian = undefined;
182
+
183
+ /**
184
+ * The world coordinates of the northeast corner of the tile's extent.
185
+ *
186
+ * @type Cartesian3
187
+ */
188
+ this.northeastCornerCartesian = undefined;
189
+
190
+ /**
191
+ * A normal that, along with southwestCornerCartesian, defines a plane at the western edge of
192
+ * the tile. Any position above (in the direction of the normal) this plane is outside the tile.
193
+ *
194
+ * @type Cartesian3
195
+ */
196
+ this.westNormal = undefined;
197
+
198
+ /**
199
+ * A normal that, along with southwestCornerCartesian, defines a plane at the southern edge of
200
+ * the tile. Any position above (in the direction of the normal) this plane is outside the tile.
201
+ * Because points of constant latitude do not necessary lie in a plane, positions below this
202
+ * plane are not necessarily inside the tile, but they are close.
203
+ *
204
+ * @type Cartesian3
205
+ */
206
+ this.southNormal = undefined;
207
+
208
+ /**
209
+ * A normal that, along with northeastCornerCartesian, defines a plane at the eastern edge of
210
+ * the tile. Any position above (in the direction of the normal) this plane is outside the tile.
211
+ *
212
+ * @type Cartesian3
213
+ */
214
+ this.eastNormal = undefined;
215
+
216
+ /**
217
+ * A normal that, along with northeastCornerCartesian, defines a plane at the eastern edge of
218
+ * the tile. Any position above (in the direction of the normal) this plane is outside the tile.
219
+ * Because points of constant latitude do not necessary lie in a plane, positions below this
220
+ * plane are not necessarily inside the tile, but they are close.
221
+ *
222
+ * @type Cartesian3
223
+ */
224
+ this.northNormal = undefined;
225
+
226
+ /**
227
+ * A proxy point to use for this tile for horizon culling. If this point is below the horizon, the
228
+ * entire tile is below the horizon as well. The point is expressed in the ellipsoid-scaled
229
+ * space. To transform a point from world coordinates centered on the ellipsoid to ellipsoid-scaled
230
+ * coordinates, multiply the world coordinates by {@link Ellipsoid#getOneOverRadii}. See
231
+ * <a href="http://blogs.agi.com/insight3d/index.php/2009/03/25/horizon-culling-2/">http://blogs.agi.com/insight3d/index.php/2009/03/25/horizon-culling-2/</a>
232
+ * for information the proxy point.
233
+ *
234
+ * @type {Cartesian3}
235
+ */
236
+ this.occludeePointInScaledSpace = undefined;
237
+ };
238
+
239
+ /**
240
+ * Returns an array of tiles that would be at the next level of the tile tree.
241
+ *
242
+ * @memberof Tile
243
+ *
244
+ * @return {Array} The list of child tiles.
245
+ */
246
+ Tile.prototype.getChildren = function() {
247
+ if (typeof this.children === 'undefined') {
248
+ var tilingScheme = this.tilingScheme;
249
+ var level = this.level + 1;
250
+ var x = this.x * 2;
251
+ var y = this.y * 2;
252
+ this.children = [new Tile({
253
+ tilingScheme : tilingScheme,
254
+ x : x,
255
+ y : y,
256
+ level : level,
257
+ parent : this
258
+ }), new Tile({
259
+ tilingScheme : tilingScheme,
260
+ x : x + 1,
261
+ y : y,
262
+ level : level,
263
+ parent : this
264
+ }), new Tile({
265
+ tilingScheme : tilingScheme,
266
+ x : x,
267
+ y : y + 1,
268
+ level : level,
269
+ parent : this
270
+ }), new Tile({
271
+ tilingScheme : tilingScheme,
272
+ x : x + 1,
273
+ y : y + 1,
274
+ level : level,
275
+ parent : this
276
+ })];
277
+ }
278
+
279
+ return this.children;
280
+ };
281
+
282
+ Tile.prototype.freeResources = function() {
283
+ this.state = TileState.UNLOADED;
284
+ this.doneLoading = false;
285
+ this.renderable = false;
286
+
287
+ if (typeof this.vertexArray !== 'undefined') {
288
+ var indexBuffer = this.vertexArray.getIndexBuffer();
289
+
290
+ this.vertexArray.destroy();
291
+ this.vertexArray = undefined;
292
+
293
+ if (!indexBuffer.isDestroyed() && typeof indexBuffer.referenceCount !== 'undefined') {
294
+ --indexBuffer.referenceCount;
295
+ if (indexBuffer.referenceCount === 0) {
296
+ indexBuffer.destroy();
297
+ }
298
+ }
299
+ }
300
+
301
+ if (typeof this.transientData !== 'undefined' && typeof this.transientData.destroy !== 'undefined') {
302
+ this.transientData.destroy();
303
+ }
304
+ this.transientData = undefined;
305
+
306
+ var i, len;
307
+
308
+ var imageryList = this.imagery;
309
+ for (i = 0, len = imageryList.length; i < len; ++i) {
310
+ imageryList[i].freeResources();
311
+ }
312
+ this.imagery.length = 0;
313
+
314
+ if (typeof this.children !== 'undefined') {
315
+ for (i = 0, len = this.children.length; i < len; ++i) {
316
+ this.children[i].freeResources();
317
+ }
318
+ }
319
+ };
320
+
321
+ return Tile;
322
+ });