cesium 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. data/LICENSE.md +259 -0
  2. data/README.rdoc +90 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
  5. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  6. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  7. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  8. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  9. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  10. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  11. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  12. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  13. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  14. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  15. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  16. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  17. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  18. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  19. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  20. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  21. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  22. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  23. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  24. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  25. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  26. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  27. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  28. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  29. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  30. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  31. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  32. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  33. data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
  34. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  35. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  36. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  37. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  38. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  39. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  40. data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
  41. data/app/assets/javascripts/Assets/package.json +6 -0
  42. data/app/assets/javascripts/Cesium.js +320 -0
  43. data/app/assets/javascripts/Core/AnimationController.js +148 -0
  44. data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
  45. data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
  46. data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
  47. data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
  48. data/app/assets/javascripts/Core/Cartesian2.js +762 -0
  49. data/app/assets/javascripts/Core/Cartesian3.js +861 -0
  50. data/app/assets/javascripts/Core/Cartesian4.js +762 -0
  51. data/app/assets/javascripts/Core/Cartographic.js +211 -0
  52. data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
  53. data/app/assets/javascripts/Core/Clock.js +195 -0
  54. data/app/assets/javascripts/Core/ClockRange.js +37 -0
  55. data/app/assets/javascripts/Core/ClockStep.js +32 -0
  56. data/app/assets/javascripts/Core/Color.js +1629 -0
  57. data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
  58. data/app/assets/javascripts/Core/Core.profile.js +8 -0
  59. data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
  60. data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
  61. data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
  62. data/app/assets/javascripts/Core/DeveloperError.js +60 -0
  63. data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
  64. data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
  65. data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
  66. data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
  67. data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
  68. data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
  69. data/app/assets/javascripts/Core/Enumeration.js +67 -0
  70. data/app/assets/javascripts/Core/Event.js +122 -0
  71. data/app/assets/javascripts/Core/Extent.js +383 -0
  72. data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
  73. data/app/assets/javascripts/Core/FAR.js +13 -0
  74. data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
  75. data/app/assets/javascripts/Core/Fullscreen.js +235 -0
  76. data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
  77. data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
  78. data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
  79. data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
  80. data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
  81. data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
  82. data/app/assets/javascripts/Core/Intersect.js +40 -0
  83. data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
  84. data/app/assets/javascripts/Core/Interval.js +27 -0
  85. data/app/assets/javascripts/Core/Iso8601.js +46 -0
  86. data/app/assets/javascripts/Core/JulianDate.js +1228 -0
  87. data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
  88. data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
  89. data/app/assets/javascripts/Core/LeapSecond.js +158 -0
  90. data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
  91. data/app/assets/javascripts/Core/Math.js +532 -0
  92. data/app/assets/javascripts/Core/Matrix2.js +833 -0
  93. data/app/assets/javascripts/Core/Matrix3.js +1099 -0
  94. data/app/assets/javascripts/Core/Matrix4.js +2164 -0
  95. data/app/assets/javascripts/Core/MeshFilters.js +568 -0
  96. data/app/assets/javascripts/Core/Occluder.js +474 -0
  97. data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
  98. data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
  99. data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
  100. data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
  101. data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
  102. data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
  103. data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
  104. data/app/assets/javascripts/Core/Quaternion.js +947 -0
  105. data/app/assets/javascripts/Core/Queue.js +95 -0
  106. data/app/assets/javascripts/Core/Ray.js +64 -0
  107. data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
  108. data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
  109. data/app/assets/javascripts/Core/RuntimeError.js +59 -0
  110. data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
  111. data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
  112. data/app/assets/javascripts/Core/Shapes.js +230 -0
  113. data/app/assets/javascripts/Core/Spherical.js +192 -0
  114. data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
  115. data/app/assets/javascripts/Core/TimeConstants.js +85 -0
  116. data/app/assets/javascripts/Core/TimeInterval.js +305 -0
  117. data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
  118. data/app/assets/javascripts/Core/TimeStandard.js +31 -0
  119. data/app/assets/javascripts/Core/Tipsify.js +285 -0
  120. data/app/assets/javascripts/Core/Transforms.js +614 -0
  121. data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
  122. data/app/assets/javascripts/Core/Visibility.js +38 -0
  123. data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
  124. data/app/assets/javascripts/Core/WindingOrder.js +40 -0
  125. data/app/assets/javascripts/Core/binarySearch.js +69 -0
  126. data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
  127. data/app/assets/javascripts/Core/clone.js +21 -0
  128. data/app/assets/javascripts/Core/combine.js +81 -0
  129. data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
  130. data/app/assets/javascripts/Core/createGuid.js +25 -0
  131. data/app/assets/javascripts/Core/defaultValue.js +22 -0
  132. data/app/assets/javascripts/Core/destroyObject.js +61 -0
  133. data/app/assets/javascripts/Core/freezeObject.js +20 -0
  134. data/app/assets/javascripts/Core/getImagePixels.js +46 -0
  135. data/app/assets/javascripts/Core/isLeapYear.js +30 -0
  136. data/app/assets/javascripts/Core/jsonp.js +116 -0
  137. data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
  138. data/app/assets/javascripts/Core/loadImage.js +85 -0
  139. data/app/assets/javascripts/Core/loadJson.js +54 -0
  140. data/app/assets/javascripts/Core/loadText.js +78 -0
  141. data/app/assets/javascripts/Core/loadXML.js +76 -0
  142. data/app/assets/javascripts/Core/package.json +6 -0
  143. data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
  144. data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
  145. data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
  146. data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
  147. data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
  148. data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
  149. data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
  150. data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
  151. data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
  152. data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
  153. data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
  154. data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
  155. data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
  156. data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
  157. data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
  158. data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
  159. data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
  160. data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
  161. data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
  162. data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
  163. data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
  164. data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
  165. data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
  166. data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
  167. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
  168. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
  169. data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
  170. data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
  171. data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
  172. data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
  173. data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
  174. data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
  175. data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
  176. data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
  177. data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
  178. data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
  179. data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
  180. data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
  181. data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
  182. data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
  183. data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
  184. data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
  185. data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
  186. data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
  187. data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
  188. data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
  189. data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
  190. data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
  191. data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
  192. data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
  193. data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
  194. data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
  195. data/app/assets/javascripts/DynamicScene/package.json +6 -0
  196. data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
  197. data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
  198. data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
  199. data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
  200. data/app/assets/javascripts/Renderer/Buffer.js +141 -0
  201. data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
  202. data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
  203. data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
  204. data/app/assets/javascripts/Renderer/Context.js +2805 -0
  205. data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
  206. data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
  207. data/app/assets/javascripts/Renderer/CullFace.js +50 -0
  208. data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
  209. data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
  210. data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
  211. data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
  212. data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
  213. data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
  214. data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
  215. data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
  216. data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
  217. data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
  218. data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
  219. data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
  220. data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
  221. data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
  222. data/app/assets/javascripts/Renderer/Texture.js +395 -0
  223. data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
  224. data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
  225. data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
  226. data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
  227. data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
  228. data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
  229. data/app/assets/javascripts/Renderer/UniformState.js +799 -0
  230. data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
  231. data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
  232. data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
  233. data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
  234. data/app/assets/javascripts/Renderer/package.json +6 -0
  235. data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
  236. data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
  237. data/app/assets/javascripts/Scene/Billboard.js +680 -0
  238. data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
  239. data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
  240. data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
  241. data/app/assets/javascripts/Scene/Camera.js +358 -0
  242. data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
  243. data/app/assets/javascripts/Scene/CameraController.js +1258 -0
  244. data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
  245. data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
  246. data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
  247. data/app/assets/javascripts/Scene/CentralBody.js +817 -0
  248. data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
  249. data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
  250. data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
  251. data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
  252. data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
  253. data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
  254. data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
  255. data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
  256. data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
  257. data/app/assets/javascripts/Scene/FrameState.js +86 -0
  258. data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
  259. data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
  260. data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
  261. data/app/assets/javascripts/Scene/Imagery.js +85 -0
  262. data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
  263. data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
  264. data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
  265. data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
  266. data/app/assets/javascripts/Scene/ImageryState.js +20 -0
  267. data/app/assets/javascripts/Scene/Label.js +706 -0
  268. data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
  269. data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
  270. data/app/assets/javascripts/Scene/Material.js +1177 -0
  271. data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
  272. data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
  273. data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
  274. data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
  275. data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
  276. data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
  277. data/app/assets/javascripts/Scene/Polygon.js +886 -0
  278. data/app/assets/javascripts/Scene/Polyline.js +441 -0
  279. data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
  280. data/app/assets/javascripts/Scene/Projections.js +93 -0
  281. data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
  282. data/app/assets/javascripts/Scene/Scene.js +632 -0
  283. data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
  284. data/app/assets/javascripts/Scene/SceneMode.js +51 -0
  285. data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
  286. data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
  287. data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
  288. data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
  289. data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
  290. data/app/assets/javascripts/Scene/SkyBox.js +231 -0
  291. data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
  292. data/app/assets/javascripts/Scene/TexturePool.js +154 -0
  293. data/app/assets/javascripts/Scene/Tile.js +322 -0
  294. data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
  295. data/app/assets/javascripts/Scene/TileImagery.js +36 -0
  296. data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
  297. data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
  298. data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
  299. data/app/assets/javascripts/Scene/TileState.js +19 -0
  300. data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
  301. data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
  302. data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
  303. data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
  304. data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
  305. data/app/assets/javascripts/Scene/package.json +6 -0
  306. data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
  307. data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
  308. data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
  309. data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
  310. data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
  311. data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
  312. data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
  313. data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
  314. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
  315. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
  316. data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
  317. data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
  318. data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
  319. data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
  320. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
  321. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
  322. data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
  323. data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
  324. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
  325. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
  326. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
  327. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
  328. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
  329. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
  330. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
  331. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
  332. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
  333. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
  334. data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
  335. data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
  336. data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
  337. data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
  338. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
  339. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
  340. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
  341. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
  342. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
  343. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
  344. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  345. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
  346. data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
  347. data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
  348. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
  349. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
  350. data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
  351. data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
  352. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
  353. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
  354. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
  355. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
  356. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
  357. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
  358. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
  359. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
  360. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  361. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
  362. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
  363. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
  364. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
  365. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
  366. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
  367. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
  368. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
  369. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
  370. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
  371. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
  372. data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
  373. data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
  374. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
  375. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
  376. data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
  377. data/app/assets/javascripts/Shaders/Noise.js +242 -0
  378. data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
  379. data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
  380. data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
  381. data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
  382. data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
  383. data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
  384. data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
  385. data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
  386. data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
  387. data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
  388. data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
  389. data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
  390. data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
  391. data/app/assets/javascripts/Shaders/Ray.js +357 -0
  392. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
  393. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
  394. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
  395. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
  396. data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
  397. data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
  398. data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
  399. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
  400. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
  401. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
  402. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
  403. data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
  404. data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
  405. data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
  406. data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
  407. data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
  408. data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
  409. data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
  410. data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
  411. data/app/assets/javascripts/Shaders/package.json +6 -0
  412. data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
  413. data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
  414. data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
  415. data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
  416. data/app/assets/javascripts/ThirdParty/package.json +6 -0
  417. data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
  418. data/app/assets/javascripts/ThirdParty/when.js +748 -0
  419. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
  420. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
  421. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
  422. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
  423. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
  424. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
  425. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
  426. data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
  427. data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
  428. data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
  429. data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
  430. data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
  431. data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
  432. data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
  433. data/app/assets/javascripts/Widgets/Timeline.css +113 -0
  434. data/app/assets/javascripts/Widgets/Timeline.js +629 -0
  435. data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
  436. data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
  437. data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
  438. data/app/assets/javascripts/Widgets/package.json +6 -0
  439. data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
  440. data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
  441. data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
  442. data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
  443. data/app/assets/javascripts/Workers/package.json +6 -0
  444. data/app/assets/javascripts/copyrightHeader.js +22 -0
  445. data/app/assets/javascripts/main.js +10 -0
  446. data/app/assets/stylesheets/cesium.css +4 -0
  447. data/app/controllers/cesium_controller.rb +4 -0
  448. data/app/helpers/cesium_helper.rb +2 -0
  449. data/app/views/cesium/index.html.erb +3 -0
  450. data/config/routes.rb +3 -0
  451. data/lib/cesium.rb +4 -0
  452. data/lib/cesium/engine.rb +4 -0
  453. data/lib/cesium/version.rb +3 -0
  454. data/lib/tasks/cesium_tasks.rake +4 -0
  455. data/test/cesium_test.rb +7 -0
  456. data/test/dummy/README.rdoc +261 -0
  457. data/test/dummy/Rakefile +7 -0
  458. data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
  459. data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
  460. data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
  461. data/test/dummy/app/assets/stylesheets/application.css +12 -0
  462. data/test/dummy/app/controllers/application_controller.rb +4 -0
  463. data/test/dummy/app/helpers/application_helper.rb +2 -0
  464. data/test/dummy/app/views/layouts/application.html.erb +21 -0
  465. data/test/dummy/config.ru +4 -0
  466. data/test/dummy/config/application.rb +59 -0
  467. data/test/dummy/config/boot.rb +10 -0
  468. data/test/dummy/config/database.yml +25 -0
  469. data/test/dummy/config/environment.rb +5 -0
  470. data/test/dummy/config/environments/development.rb +37 -0
  471. data/test/dummy/config/environments/production.rb +67 -0
  472. data/test/dummy/config/environments/test.rb +37 -0
  473. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  474. data/test/dummy/config/initializers/inflections.rb +15 -0
  475. data/test/dummy/config/initializers/mime_types.rb +5 -0
  476. data/test/dummy/config/initializers/secret_token.rb +7 -0
  477. data/test/dummy/config/initializers/session_store.rb +8 -0
  478. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  479. data/test/dummy/config/locales/en.yml +5 -0
  480. data/test/dummy/config/requirejs.yml +10 -0
  481. data/test/dummy/config/routes.rb +3 -0
  482. data/test/dummy/public/404.html +26 -0
  483. data/test/dummy/public/422.html +26 -0
  484. data/test/dummy/public/500.html +25 -0
  485. data/test/dummy/public/favicon.ico +0 -0
  486. data/test/dummy/script/rails +6 -0
  487. data/test/functional/cesium_controller_test.rb +9 -0
  488. data/test/integration/navigation_test.rb +10 -0
  489. data/test/test_helper.rb +15 -0
  490. data/test/unit/helpers/cesium_helper_test.rb +4 -0
  491. metadata +641 -0
@@ -0,0 +1,38 @@
1
+ /*global define*/
2
+ define([
3
+ ], function(
4
+ ) {
5
+ "use strict";
6
+
7
+ /**
8
+ * A {@link TileDiscardPolicy} specifying that tile images should never be discard.
9
+ *
10
+ * @alias NeverTileDiscardPolicy
11
+ * @constructor
12
+ *
13
+ * @see DiscardMissingTileImagePolicy
14
+ */
15
+ var NeverTileDiscardPolicy = function(description) {
16
+ };
17
+
18
+ /**
19
+ * Determines if the discard policy is ready to process images.
20
+ * @returns True if the discard policy is ready to process images; otherwise, false.
21
+ */
22
+ NeverTileDiscardPolicy.prototype.isReady = function() {
23
+ return true;
24
+ };
25
+
26
+ /**
27
+ * Given a tile image, decide whether to discard that image.
28
+ *
29
+ * @param {Image|Promise} image An image, or a promise that will resolve to an image.
30
+ *
31
+ * @returns A promise that will resolve to true if the tile should be discarded.
32
+ */
33
+ NeverTileDiscardPolicy.prototype.shouldDiscardImage = function(image) {
34
+ return false;
35
+ };
36
+
37
+ return NeverTileDiscardPolicy;
38
+ });
@@ -0,0 +1,282 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/DeveloperError',
5
+ '../Core/Event',
6
+ '../Core/writeTextToCanvas',
7
+ './ImageryProvider',
8
+ './WebMercatorTilingScheme'
9
+ ], function(
10
+ defaultValue,
11
+ DeveloperError,
12
+ Event,
13
+ writeTextToCanvas,
14
+ ImageryProvider,
15
+ WebMercatorTilingScheme) {
16
+ "use strict";
17
+
18
+ var trailingSlashRegex = /\/$/;
19
+
20
+ /**
21
+ * Provides tiled imagery hosted by OpenStreetMap or another provider of Slippy tiles. Please be aware
22
+ * that a default-constructed instance of this class will connect to OpenStreetMap's volunteer-run
23
+ * servers, so you must conform to their
24
+ * <a href='http://wiki.openstreetmap.org/wiki/Tile_usage_policy'>Tile Usage Policy</a>.
25
+ *
26
+ * @alias OpenStreetMapImageryProvider
27
+ * @constructor
28
+ *
29
+ * @param {String} [description.url='http://tile.openstreetmap.org'] The OpenStreetMap server url.
30
+ * @param {String} [description.fileExtension='png'] The file extension for images on the server.
31
+ * @param {Object} [description.proxy] A proxy to use for requests. This object is expected to have a getURL function which returns the proxied URL.
32
+ * @param {Extent} [description.extent=Extent.MAX_VALUE] The extent of the layer.
33
+ * @param {Number} [description.maximumLevel=18] The maximum level-of-detail supported by the imagery provider.
34
+ * @param {String} [description.credit='MapQuest, Open Street Map and contributors, CC-BY-SA'] A string crediting the data source, which is displayed on the canvas.
35
+ *
36
+ * @see ArcGisMapServerImageryProvider
37
+ * @see BingMapsImageryProvider
38
+ * @see SingleTileImageryProvider
39
+ * @see TileMapServiceImageryProvider
40
+ * @see WebMapServiceImageryProvider
41
+ *
42
+ * @see <a href='http://wiki.openstreetmap.org/wiki/Main_Page'>OpenStreetMap Wiki</a>
43
+ * @see <a href='http://www.w3.org/TR/cors/'>Cross-Origin Resource Sharing</a>
44
+ *
45
+ * @example
46
+ * // OpenStreetMap tile provider
47
+ * var osm = new OpenStreetMapImageryProvider({
48
+ * url : 'http://tile.openstreetmap.org/'
49
+ * });
50
+ */
51
+ var OpenStreetMapImageryProvider = function OpenStreetMapImageryProvider(description) {
52
+ description = defaultValue(description, {});
53
+
54
+ var url = defaultValue(description.url, 'http://tile.openstreetmap.org/');
55
+
56
+ if (!trailingSlashRegex.test(url)) {
57
+ url = url + '/';
58
+ }
59
+
60
+ this._url = url;
61
+ this._fileExtension = defaultValue(description.fileExtension, 'png');
62
+ this._proxy = description.proxy;
63
+ this._tileDiscardPolicy = description.tileDiscardPolicy;
64
+
65
+ this._tilingScheme = new WebMercatorTilingScheme();
66
+
67
+ this._tileWidth = 256;
68
+ this._tileHeight = 256;
69
+
70
+ this._maximumLevel = defaultValue(description.maximumLevel, 18);
71
+
72
+ this._extent = defaultValue(description.extent, this._tilingScheme.getExtent());
73
+
74
+ this._errorEvent = new Event();
75
+
76
+ this._ready = true;
77
+
78
+ var credit = defaultValue(description.credit, 'MapQuest, Open Street Map and contributors, CC-BY-SA');
79
+ this._logo = writeTextToCanvas(credit, {
80
+ font : '12px sans-serif'
81
+ });
82
+ };
83
+
84
+ function buildImageUrl(imageryProvider, x, y, level) {
85
+ var url = imageryProvider._url + level + '/' + x + '/' + y + '.' + imageryProvider._fileExtension;
86
+
87
+ var proxy = imageryProvider._proxy;
88
+ if (typeof proxy !== 'undefined') {
89
+ url = proxy.getURL(url);
90
+ }
91
+
92
+ return url;
93
+ }
94
+
95
+ /**
96
+ * Gets the URL of the service hosting the imagery.
97
+ *
98
+ * @memberof OpenStreetMapImageryProvider
99
+ *
100
+ * @returns {String} The URL.
101
+ */
102
+ OpenStreetMapImageryProvider.prototype.getUrl = function() {
103
+ return this._url;
104
+ };
105
+
106
+ /**
107
+ * Gets the width of each tile, in pixels. This function should
108
+ * not be called before {@link OpenStreetMapImageryProvider#isReady} returns true.
109
+ *
110
+ * @memberof OpenStreetMapImageryProvider
111
+ *
112
+ * @returns {Number} The width.
113
+ *
114
+ * @exception {DeveloperError} <code>getTileWidth</code> must not be called before the imagery provider is ready.
115
+ */
116
+ OpenStreetMapImageryProvider.prototype.getTileWidth = function() {
117
+ if (!this._ready) {
118
+ throw new DeveloperError('getTileWidth must not be called before the imagery provider is ready.');
119
+ }
120
+ return this._tileWidth;
121
+ };
122
+
123
+ /**
124
+ * Gets the height of each tile, in pixels. This function should
125
+ * not be called before {@link OpenStreetMapImageryProvider#isReady} returns true.
126
+ *
127
+ * @memberof OpenStreetMapImageryProvider
128
+ *
129
+ * @returns {Number} The height.
130
+ *
131
+ * @exception {DeveloperError} <code>getTileHeight</code> must not be called before the imagery provider is ready.
132
+ */
133
+ OpenStreetMapImageryProvider.prototype.getTileHeight = function() {
134
+ if (!this._ready) {
135
+ throw new DeveloperError('getTileHeight must not be called before the imagery provider is ready.');
136
+ }
137
+ return this._tileHeight;
138
+ };
139
+
140
+ /**
141
+ * Gets the maximum level-of-detail that can be requested. This function should
142
+ * not be called before {@link OpenStreetMapImageryProvider#isReady} returns true.
143
+ *
144
+ * @memberof OpenStreetMapImageryProvider
145
+ *
146
+ * @returns {Number} The maximum level.
147
+ *
148
+ * @exception {DeveloperError} <code>getMaximumLevel</code> must not be called before the imagery provider is ready.
149
+ */
150
+ OpenStreetMapImageryProvider.prototype.getMaximumLevel = function() {
151
+ if (!this._ready) {
152
+ throw new DeveloperError('getMaximumLevel must not be called before the imagery provider is ready.');
153
+ }
154
+ return this._maximumLevel;
155
+ };
156
+
157
+ /**
158
+ * Gets the tiling scheme used by this provider. This function should
159
+ * not be called before {@link OpenStreetMapImageryProvider#isReady} returns true.
160
+ *
161
+ * @memberof OpenStreetMapImageryProvider
162
+ *
163
+ * @returns {TilingScheme} The tiling scheme.
164
+ * @see WebMercatorTilingScheme
165
+ * @see GeographicTilingScheme
166
+ *
167
+ * @exception {DeveloperError} <code>getTilingScheme</code> must not be called before the imagery provider is ready.
168
+ */
169
+ OpenStreetMapImageryProvider.prototype.getTilingScheme = function() {
170
+ if (!this._ready) {
171
+ throw new DeveloperError('getTilingScheme must not be called before the imagery provider is ready.');
172
+ }
173
+ return this._tilingScheme;
174
+ };
175
+
176
+ /**
177
+ * Gets the extent, in radians, of the imagery provided by this instance. This function should
178
+ * not be called before {@link OpenStreetMapImageryProvider#isReady} returns true.
179
+ *
180
+ * @memberof OpenStreetMapImageryProvider
181
+ *
182
+ * @returns {Extent} The extent.
183
+ *
184
+ * @exception {DeveloperError} <code>getExtent</code> must not be called before the imagery provider is ready.
185
+ */
186
+ OpenStreetMapImageryProvider.prototype.getExtent = function() {
187
+ if (!this._ready) {
188
+ throw new DeveloperError('getExtent must not be called before the imagery provider is ready.');
189
+ }
190
+ return this._extent;
191
+ };
192
+
193
+ /**
194
+ * Gets the tile discard policy. If not undefined, the discard policy is responsible
195
+ * for filtering out "missing" tiles via its shouldDiscardImage function. If this function
196
+ * returns undefined, no tiles are filtered. This function should
197
+ * not be called before {@link OpenStreetMapImageryProvider#isReady} returns true.
198
+ *
199
+ * @memberof OpenStreetMapImageryProvider
200
+ *
201
+ * @returns {TileDiscardPolicy} The discard policy.
202
+ *
203
+ * @see DiscardMissingTileImagePolicy
204
+ * @see NeverTileDiscardPolicy
205
+ *
206
+ * @exception {DeveloperError} <code>getTileDiscardPolicy</code> must not be called before the imagery provider is ready.
207
+ */
208
+ OpenStreetMapImageryProvider.prototype.getTileDiscardPolicy = function() {
209
+ if (!this._ready) {
210
+ throw new DeveloperError('getTileDiscardPolicy must not be called before the imagery provider is ready.');
211
+ }
212
+ return this._tileDiscardPolicy;
213
+ };
214
+
215
+ /**
216
+ * Gets an event that is raised when the imagery provider encounters an asynchronous error. By subscribing
217
+ * to the event, you will be notified of the error and can potentially recover from it. Event listeners
218
+ * are passed an instance of {@link ImageryProviderError}.
219
+ *
220
+ * @memberof OpenStreetMapImageryProvider
221
+ *
222
+ * @returns {Event} The event.
223
+ */
224
+ OpenStreetMapImageryProvider.prototype.getErrorEvent = function() {
225
+ return this._errorEvent;
226
+ };
227
+
228
+ /**
229
+ * Gets a value indicating whether or not the provider is ready for use.
230
+ *
231
+ * @memberof OpenStreetMapImageryProvider
232
+ *
233
+ * @returns {Boolean} True if the provider is ready to use; otherwise, false.
234
+ */
235
+ OpenStreetMapImageryProvider.prototype.isReady = function() {
236
+ return this._ready;
237
+ };
238
+
239
+ /**
240
+ * Requests the image for a given tile. This function should
241
+ * not be called before {@link OpenStreetMapImageryProvider#isReady} returns true.
242
+ *
243
+ * @memberof OpenStreetMapImageryProvider
244
+ *
245
+ * @param {Number} x The tile X coordinate.
246
+ * @param {Number} y The tile Y coordinate.
247
+ * @param {Number} level The tile level.
248
+ *
249
+ * @returns {Promise} A promise for the image that will resolve when the image is available, or
250
+ * undefined if there are too many active requests to the server, and the request
251
+ * should be retried later. The resolved image may be either an
252
+ * Image or a Canvas DOM object.
253
+ *
254
+ * @exception {DeveloperError} <code>requestImage</code> must not be called before the imagery provider is ready.
255
+ */
256
+ OpenStreetMapImageryProvider.prototype.requestImage = function(x, y, level) {
257
+ if (!this._ready) {
258
+ throw new DeveloperError('requestImage must not be called before the imagery provider is ready.');
259
+ }
260
+ var url = buildImageUrl(this, x, y, level);
261
+ return ImageryProvider.loadImage(url);
262
+ };
263
+
264
+ /**
265
+ * Gets the logo to display when this imagery provider is active. Typically this is used to credit
266
+ * the source of the imagery. This function should not be called before {@link OpenStreetMapImageryProvider#isReady} returns true.
267
+ *
268
+ * @memberof OpenStreetMapImageryProvider
269
+ *
270
+ * @returns {Image|Canvas} A canvas or image containing the log to display, or undefined if there is no logo.
271
+ *
272
+ * @exception {DeveloperError} <code>getLogo</code> must not be called before the imagery provider is ready.
273
+ */
274
+ OpenStreetMapImageryProvider.prototype.getLogo = function() {
275
+ if (!this._ready) {
276
+ throw new DeveloperError('getLogo must not be called before the imagery provider is ready.');
277
+ }
278
+ return this._logo;
279
+ };
280
+
281
+ return OpenStreetMapImageryProvider;
282
+ });
@@ -0,0 +1,345 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ '../Core/destroyObject',
5
+ '../Core/Cartesian2',
6
+ '../Core/Cartesian3',
7
+ '../Core/Cartesian4',
8
+ '../Core/Matrix4',
9
+ '../Scene/CullingVolume'
10
+ ], function(
11
+ DeveloperError,
12
+ destroyObject,
13
+ Cartesian2,
14
+ Cartesian3,
15
+ Cartesian4,
16
+ Matrix4,
17
+ CullingVolume) {
18
+ "use strict";
19
+
20
+ /**
21
+ * The viewing frustum is defined by 6 planes.
22
+ * Each plane is represented by a {Cartesian4} object, where the x, y, and z components
23
+ * define the unit vector normal to the plane, and the w component is the distance of the
24
+ * plane from the origin/camera position.
25
+ *
26
+ * @alias OrthographicFrustum
27
+ * @constructor
28
+ *
29
+ * @example
30
+ * var maxRadii = ellipsoid.getMaximumRadius();
31
+ *
32
+ * var frustum = new OrthographicFrustum();
33
+ * frustum.right = maxRadii * CesiumMath.PI;
34
+ * frustum.left = -c.frustum.right;
35
+ * frustum.top = c.frustum.right * (canvas.clientHeight / canvas.clientWidth);
36
+ * frustum.bottom = -c.frustum.top;
37
+ * frustum.near = 0.01 * maxRadii;
38
+ * frustum.far = 50.0 * maxRadii;
39
+ */
40
+ var OrthographicFrustum = function() {
41
+ /**
42
+ * The left clipping plane.
43
+ * @type {Number}
44
+ */
45
+ this.left = undefined;
46
+ this._left = undefined;
47
+
48
+ /**
49
+ * The right clipping plane.
50
+ * @type {Number}
51
+ */
52
+ this.right = undefined;
53
+ this._right = undefined;
54
+
55
+ /**
56
+ * The top clipping plane.
57
+ * @type {Number}
58
+ */
59
+ this.top = undefined;
60
+ this._top = undefined;
61
+
62
+ /**
63
+ * The bottom clipping plane.
64
+ * @type {Number}
65
+ */
66
+ this.bottom = undefined;
67
+ this._bottom = undefined;
68
+
69
+ /**
70
+ * The distance of the near plane.
71
+ * @type {Number}
72
+ */
73
+ this.near = 1.0;
74
+ this._near = this.near;
75
+
76
+ /**
77
+ * The distance of the far plane.
78
+ * @type {Number}
79
+ */
80
+ this.far = 500000000.0;
81
+ this._far = this.far;
82
+
83
+ this._cullingVolume = new CullingVolume();
84
+ this._orthographicMatrix = undefined;
85
+ };
86
+
87
+ /**
88
+ * Returns the orthographic projection matrix computed from the view frustum.
89
+ *
90
+ * @memberof OrthographicFrustum
91
+ *
92
+ * @return {Matrix4} The orthographic projection matrix.
93
+ */
94
+ OrthographicFrustum.prototype.getProjectionMatrix = function() {
95
+ update(this);
96
+ return this._orthographicMatrix;
97
+ };
98
+
99
+ function update(frustum) {
100
+ if (typeof frustum.right === 'undefined' || typeof frustum.left === 'undefined' ||
101
+ typeof frustum.top === 'undefined' || typeof frustum.bottom === 'undefined' ||
102
+ typeof frustum.near === 'undefined' || typeof frustum.far === 'undefined') {
103
+ throw new DeveloperError('right, left, top, bottom, near, or far parameters are not set.');
104
+ }
105
+
106
+ if (frustum.top !== frustum._top || frustum.bottom !== frustum._bottom ||
107
+ frustum.left !== frustum._left || frustum.right !== frustum._right ||
108
+ frustum.near !== frustum._near || frustum.far !== frustum._far) {
109
+
110
+ if (frustum.left > frustum.right) {
111
+ throw new DeveloperError('right must be greater than left.');
112
+ }
113
+
114
+ if (frustum.bottom > frustum.top) {
115
+ throw new DeveloperError('top must be greater than bottom.');
116
+ }
117
+
118
+ if (frustum.near <= 0 || frustum.near > frustum.far) {
119
+ throw new DeveloperError('near must be greater than zero and less than far.');
120
+ }
121
+
122
+ frustum._left = frustum.left;
123
+ frustum._right = frustum.right;
124
+ frustum._top = frustum.top;
125
+ frustum._bottom = frustum.bottom;
126
+ frustum._near = frustum.near;
127
+ frustum._far = frustum.far;
128
+ frustum._orthographicMatrix = Matrix4.computeOrthographicOffCenter(frustum.left, frustum.right, frustum.bottom, frustum.top, frustum.near, frustum.far);
129
+ }
130
+ }
131
+
132
+ var getPlanesRight = new Cartesian3();
133
+ var getPlanesNearCenter = new Cartesian3();
134
+ var getPlanesPoint = new Cartesian3();
135
+ /**
136
+ * Creates a culling volume for this frustum.
137
+ *
138
+ * @memberof OrthographicFrustum
139
+ *
140
+ * @param {Cartesian3} position The eye position.
141
+ * @param {Cartesian3} direction The view direction.
142
+ * @param {Cartesian3} up The up direction.
143
+ *
144
+ * @exception {DeveloperError} position is required.
145
+ * @exception {DeveloperError} direction is required.
146
+ * @exception {DeveloperError} up is required.
147
+ *
148
+ * @return {CullingVolume} A culling volume at the given position and orientation.
149
+ *
150
+ * @example
151
+ * // Check if a bounding volume intersects the frustum.
152
+ * var cullingVolume = frustum.computeCullingVolume(cameraPosition, cameraDirection, cameraUp);
153
+ * var intersect = cullingVolume.getVisibility(boundingVolume);
154
+ */
155
+ OrthographicFrustum.prototype.computeCullingVolume = function(position, direction, up) {
156
+ if (typeof position === 'undefined') {
157
+ throw new DeveloperError('position is required.');
158
+ }
159
+
160
+ if (typeof direction === 'undefined') {
161
+ throw new DeveloperError('direction is required.');
162
+ }
163
+
164
+ if (typeof up === 'undefined') {
165
+ throw new DeveloperError('up is required.');
166
+ }
167
+
168
+ var planes = this._cullingVolume.planes;
169
+
170
+ var t = this.top;
171
+ var b = this.bottom;
172
+ var r = this.right;
173
+ var l = this.left;
174
+ var n = this.near;
175
+ var f = this.far;
176
+
177
+ var right = Cartesian3.cross(direction, up, getPlanesRight);
178
+
179
+ var nearCenter = getPlanesNearCenter;
180
+ Cartesian3.multiplyByScalar(direction, n, nearCenter);
181
+ Cartesian3.add(position, nearCenter, nearCenter);
182
+
183
+ var point = getPlanesPoint;
184
+
185
+ // Left plane
186
+ Cartesian3.multiplyByScalar(right, l, point);
187
+ Cartesian3.add(nearCenter, point, point);
188
+
189
+ var plane = planes[0];
190
+ if (typeof plane === 'undefined') {
191
+ plane = planes[0] = new Cartesian4();
192
+ }
193
+ plane.x = right.x;
194
+ plane.y = right.y;
195
+ plane.z = right.z;
196
+ plane.w = -Cartesian3.dot(right, point);
197
+
198
+ // Right plane
199
+ Cartesian3.multiplyByScalar(right, r, point);
200
+ Cartesian3.add(nearCenter, point, point);
201
+
202
+ plane = planes[1];
203
+ if (typeof plane === 'undefined') {
204
+ plane = planes[1] = new Cartesian4();
205
+ }
206
+ plane.x = -right.x;
207
+ plane.y = -right.y;
208
+ plane.z = -right.z;
209
+ plane.w = -Cartesian3.dot(right.negate(), point);
210
+
211
+ // Bottom plane
212
+ Cartesian3.multiplyByScalar(up, b, point);
213
+ Cartesian3.add(nearCenter, point, point);
214
+
215
+ plane = planes[2];
216
+ if (typeof plane === 'undefined') {
217
+ plane = planes[2] = new Cartesian4();
218
+ }
219
+ plane.x = up.x;
220
+ plane.y = up.y;
221
+ plane.z = up.z;
222
+ plane.w = -Cartesian3.dot(up, point);
223
+
224
+ // Top plane
225
+ Cartesian3.multiplyByScalar(up, t, point);
226
+ Cartesian3.add(nearCenter, point, point);
227
+
228
+ plane = planes[3];
229
+ if (typeof plane === 'undefined') {
230
+ plane = planes[3] = new Cartesian4();
231
+ }
232
+ plane.x = -up.x;
233
+ plane.y = -up.y;
234
+ plane.z = -up.z;
235
+ plane.w = -Cartesian3.dot(up.negate(), point);
236
+
237
+ // Near plane
238
+ plane = planes[4];
239
+ if (typeof plane === 'undefined') {
240
+ plane = planes[4] = new Cartesian4();
241
+ }
242
+ plane.x = direction.x;
243
+ plane.y = direction.y;
244
+ plane.z = direction.z;
245
+ plane.w = -Cartesian3.dot(direction, nearCenter);
246
+
247
+ // Far plane
248
+ Cartesian3.multiplyByScalar(direction, f, point);
249
+ Cartesian3.add(position, point, point);
250
+
251
+ plane = planes[5];
252
+ if (typeof plane === 'undefined') {
253
+ plane = planes[5] = new Cartesian4();
254
+ }
255
+ plane.x = -direction.x;
256
+ plane.y = -direction.y;
257
+ plane.z = -direction.z;
258
+ plane.w = -Cartesian3.dot(direction.negate(), point);
259
+
260
+ return this._cullingVolume;
261
+ };
262
+
263
+ /**
264
+ * Returns the pixel's width and height in meters.
265
+ *
266
+ * @memberof OrthographicFrustum
267
+ *
268
+ * @param {Cartesian2} canvasDimensions A {@link Cartesian2} with width and height in the x and y properties, respectively.
269
+ *
270
+ * @exception {DeveloperError} canvasDimensions is required.
271
+ * @exception {DeveloperError} canvasDimensions.x must be greater than zero.
272
+ * @exception {DeveloperError} canvasDimensione.y must be greater than zero.
273
+ *
274
+ * @returns {Cartesian2} A {@link Cartesian2} with the pixel's width and height in the x and y properties, respectively.
275
+ *
276
+ * @example
277
+ * // Example 1
278
+ * // Get the width and height of a pixel.
279
+ * var pixelSize = camera.frustum.getPixelSize(new Cartesian2(canvas.clientWidth, canvas.clientHeight));
280
+ */
281
+ OrthographicFrustum.prototype.getPixelSize = function(canvasDimensions) {
282
+ update(this);
283
+
284
+ if (typeof canvasDimensions === 'undefined') {
285
+ throw new DeveloperError('canvasDimensions is required.');
286
+ }
287
+
288
+ var width = canvasDimensions.x;
289
+ var height = canvasDimensions.y;
290
+
291
+ if (width <= 0) {
292
+ throw new DeveloperError('canvasDimensions.x must be grater than zero.');
293
+ }
294
+
295
+ if (height <= 0) {
296
+ throw new DeveloperError('canvasDimensions.y must be grater than zero.');
297
+ }
298
+
299
+ var frustumWidth = this.right - this.left;
300
+ var frustumHeight = this.top - this.bottom;
301
+ var pixelWidth = frustumWidth / width;
302
+ var pixelHeight = frustumHeight / height;
303
+
304
+ return new Cartesian2(pixelWidth, pixelHeight);
305
+ };
306
+
307
+ /**
308
+ * Returns a duplicate of a OrthographicFrustum instance.
309
+ *
310
+ * @memberof OrthographicFrustum
311
+ *
312
+ * @return {OrthographicFrustum} A new copy of the OrthographicFrustum instance.
313
+ */
314
+ OrthographicFrustum.prototype.clone = function() {
315
+ var frustum = new OrthographicFrustum();
316
+ frustum.left = this.left;
317
+ frustum.right = this.right;
318
+ frustum.top = this.top;
319
+ frustum.bottom = this.bottom;
320
+ frustum.near = this.near;
321
+ frustum.far = this.far;
322
+ return frustum;
323
+ };
324
+
325
+ /**
326
+ * Compares the provided OrthographicFrustum componentwise and returns
327
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
328
+ *
329
+ * @memberof OrthographicFrustum
330
+ *
331
+ * @param {OrthographicFrustum} [other] The right hand side OrthographicFrustum.
332
+ * @return {Boolean} <code>true</code> if they are equal, <code>false</code> otherwise.
333
+ */
334
+ OrthographicFrustum.prototype.equals = function(other) {
335
+ return (typeof other !== 'undefined' &&
336
+ this.right === other.right &&
337
+ this.left === other.left &&
338
+ this.top === other.top &&
339
+ this.bottom === other.bottom &&
340
+ this.near === other.near &&
341
+ this.far === other.far);
342
+ };
343
+
344
+ return OrthographicFrustum;
345
+ });