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,134 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/loadImage',
5
+ '../Core/getImagePixels',
6
+ '../Core/DeveloperError',
7
+ '../ThirdParty/when'
8
+ ], function(
9
+ defaultValue,
10
+ loadImage,
11
+ getImagePixels,
12
+ DeveloperError,
13
+ when) {
14
+ "use strict";
15
+
16
+ /**
17
+ * A policy for discarding tile images that match a known image containing a
18
+ * "missing" image.
19
+ *
20
+ * @alias DiscardMissingTileImagePolicy
21
+ * @constructor
22
+ *
23
+ * @param {String} description.missingImageUrl The URL of the known missing image.
24
+ * @param {Array} description.pixelsToCheck An array of {@link Cartesian2} pixel positions to
25
+ * compare against the missing image.
26
+ * @param {Boolean} [description.disableCheckIfAllPixelsAreTransparent=false] If true, the discard check will be disabled
27
+ * if all of the pixelsToCheck in the missingImageUrl have an alpha value of 0. If false, the
28
+ * discard check will proceed no matter the values of the pixelsToCheck.
29
+ *
30
+ * @exception {DeveloperError} <code>description.missingImageUrl</code> is required.
31
+ * @exception {DeveloperError} <code>pixelsToCheck</code> is required.
32
+ */
33
+ var DiscardMissingTileImagePolicy = function(description) {
34
+ description = defaultValue(description, {});
35
+
36
+ if (typeof description.missingImageUrl === 'undefined') {
37
+ throw new DeveloperError('description.missingImageUrl is required.');
38
+ }
39
+
40
+ if (typeof description.pixelsToCheck === 'undefined') {
41
+ throw new DeveloperError('description.pixelsToCheck is required.');
42
+ }
43
+
44
+ this._pixelsToCheck = description.pixelsToCheck;
45
+ this._missingImagePixels = undefined;
46
+ this._isReady = false;
47
+
48
+ var that = this;
49
+
50
+ function success(image) {
51
+ var pixels = getImagePixels(image);
52
+
53
+ if (description.disableCheckIfAllPixelsAreTransparent) {
54
+ var allAreTransparent = true;
55
+ var width = image.width;
56
+
57
+ var pixelsToCheck = description.pixelsToCheck;
58
+ for (var i = 0, len = pixelsToCheck.length; allAreTransparent && i < len; ++i) {
59
+ var pos = pixelsToCheck[i];
60
+ var index = pos.x * 4 + pos.y * width;
61
+ var alpha = pixels[index + 3];
62
+
63
+ if (alpha > 0) {
64
+ allAreTransparent = false;
65
+ }
66
+ }
67
+
68
+ if (allAreTransparent) {
69
+ pixels = undefined;
70
+ }
71
+ }
72
+
73
+ that._missingImagePixels = pixels;
74
+ that._isReady = true;
75
+ }
76
+
77
+ function failure() {
78
+ // Failed to download "missing" image, so assume that any truly missing tiles
79
+ // will also fail to download and disable the discard check.
80
+ that._missingImagePixels = undefined;
81
+ that._isReady = true;
82
+ }
83
+
84
+ when(loadImage(description.missingImageUrl), success, failure);
85
+ };
86
+
87
+ /**
88
+ * Determines if the discard policy is ready to process images.
89
+ * @returns True if the discard policy is ready to process images; otherwise, false.
90
+ */
91
+ DiscardMissingTileImagePolicy.prototype.isReady = function() {
92
+ return this._isReady;
93
+ };
94
+
95
+ /**
96
+ * Given a tile image, decide whether to discard that image.
97
+ *
98
+ * @param {Image} image An image to test.
99
+ *
100
+ * @returns True if the image should be discarded; otherwise, false.
101
+ *
102
+ * @exception {DeveloperError} <code>shouldDiscardImage</code> must not be called before the discard policy is ready.
103
+ */
104
+ DiscardMissingTileImagePolicy.prototype.shouldDiscardImage = function(image) {
105
+ if (!this._isReady) {
106
+ throw new DeveloperError('shouldDiscardImage must not be called before the discard policy is ready.');
107
+ }
108
+
109
+ var pixelsToCheck = this._pixelsToCheck;
110
+ var missingImagePixels = this._missingImagePixels;
111
+
112
+ // If missingImagePixels is undefined, it indicates that the discard check has been disabled.
113
+ if (typeof missingImagePixels === 'undefined') {
114
+ return false;
115
+ }
116
+
117
+ var pixels = getImagePixels(image);
118
+ var width = image.width;
119
+
120
+ for (var i = 0, len = pixelsToCheck.length; i < len; ++i) {
121
+ var pos = pixelsToCheck[i];
122
+ var index = pos.x * 4 + pos.y * width;
123
+ for (var offset = 0; offset < 4; ++offset) {
124
+ var pixel = index + offset;
125
+ if (pixels[pixel] !== missingImagePixels[pixel]) {
126
+ return false;
127
+ }
128
+ }
129
+ }
130
+ return true;
131
+ };
132
+
133
+ return DiscardMissingTileImagePolicy;
134
+ });
@@ -0,0 +1,412 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/BoxTessellator',
4
+ '../Core/Cartesian3',
5
+ '../Core/Cartesian4',
6
+ '../Core/Color',
7
+ '../Core/combine',
8
+ '../Core/ComponentDatatype',
9
+ '../Core/DeveloperError',
10
+ '../Core/destroyObject',
11
+ '../Core/Ellipsoid',
12
+ '../Core/Matrix4',
13
+ '../Core/MeshFilters',
14
+ '../Core/BoundingSphere',
15
+ '../Core/PrimitiveType',
16
+ '../Renderer/CullFace',
17
+ '../Renderer/BlendingState',
18
+ '../Renderer/BufferUsage',
19
+ '../Renderer/CommandLists',
20
+ '../Renderer/DrawCommand',
21
+ './Material',
22
+ './SceneMode',
23
+ '../Shaders/Noise',
24
+ '../Shaders/EllipsoidVS',
25
+ '../Shaders/EllipsoidFS'
26
+ ], function(
27
+ BoxTessellator,
28
+ Cartesian3,
29
+ Cartesian4,
30
+ Color,
31
+ combine,
32
+ ComponentDatatype,
33
+ DeveloperError,
34
+ destroyObject,
35
+ Ellipsoid,
36
+ Matrix4,
37
+ MeshFilters,
38
+ BoundingSphere,
39
+ PrimitiveType,
40
+ CullFace,
41
+ BlendingState,
42
+ BufferUsage,
43
+ CommandLists,
44
+ DrawCommand,
45
+ Material,
46
+ SceneMode,
47
+ Noise,
48
+ EllipsoidVS,
49
+ EllipsoidFS) {
50
+ "use strict";
51
+
52
+ var attributeIndices = {
53
+ position : 0
54
+ };
55
+
56
+ /**
57
+ * A renderable ellipsoid. It can also draw spheres when the three {@link EllipsoidPrimitive#radii} components are equal.
58
+ * <p>
59
+ * This is only supported in 3D. The ellipsoid is not shown in 2D or Columbus view.
60
+ * </p>
61
+ *
62
+ * @alias EllipsoidPrimitive
63
+ * @constructor
64
+ *
65
+ * @example
66
+ * // 1. Create a sphere using the ellipsoid primitive
67
+ * var e = new EllipsoidPrimitive();
68
+ * e.center = ellipsoid.cartographicToCartesian(
69
+ * Cartographic.fromDegrees(-75.0, 40.0, 500000.0));
70
+ * e.radii = new Cartesian3(500000.0, 500000.0, 500000.0);
71
+ * primitives.add(e);
72
+ *
73
+ * @example
74
+ * // 2. Create a tall ellipsoid in an east-north-up reference frame
75
+ * var e = new EllipsoidPrimitive();
76
+ * e.modelMatrix = Transforms.eastNorthUpToFixedFrame(
77
+ * ellipsoid.cartographicToCartesian(
78
+ * Cartographic.fromDegrees(-95.0, 40.0, 200000.0)));
79
+ * e.radii = new Cartesian3(100000.0, 100000.0, 200000.0);
80
+ * primitives.add(e);
81
+ */
82
+ var EllipsoidPrimitive = function() {
83
+ /**
84
+ * The center of the ellipsoid in the ellipsoid's model coordinates.
85
+ * <p>
86
+ * The default is {@link Cartesian3.ZERO}.
87
+ * </p>
88
+ *
89
+ * @type Cartesian3
90
+ *
91
+ * @see EllipsoidPrimitive#modelMatrix
92
+ */
93
+ this.center = Cartesian3.ZERO.clone();
94
+
95
+ /**
96
+ * The radius of the ellipsoid along the <code>x</code>, <code>y</code>, and <code>z</code> axes in the ellipsoid's model coordinates.
97
+ * When these are the same, the ellipsoid is a sphere.
98
+ * <p>
99
+ * The default is <code>undefined</code>. The ellipsoid is not drawn until a radii is provided.
100
+ * </p>
101
+ *
102
+ * @type Cartesian3
103
+ *
104
+ * @example
105
+ * // A sphere with a radius of 2.0
106
+ * e.radii = new Cartesian3(2.0, 2.0, 2.0);
107
+ *
108
+ * @see EllipsoidPrimitive#modelMatrix
109
+ */
110
+ this.radii = undefined;
111
+ this._radii = new Cartesian3();
112
+
113
+ this._oneOverEllipsoidRadiiSquared = new Cartesian3();
114
+ this._boundingSphere = new BoundingSphere();
115
+
116
+ /**
117
+ * The 4x4 transformation matrix that transforms the ellipsoid from model to world coordinates.
118
+ * When this is the identity matrix, the ellipsoid is drawn in world coordinates, i.e., Earth's WGS84 coordinates.
119
+ * Local reference frames can be used by providing a different transformation matrix, like that returned
120
+ * by {@link Transforms.eastNorthUpToFixedFrame}. This matrix is available to GLSL vertex and fragment
121
+ * shaders via {@link czm_model} and derived uniforms.
122
+ * <p>
123
+ * The default is {@link Matrix4.IDENTITY}.
124
+ * </p>
125
+ *
126
+ * @type Matrix4
127
+ *
128
+ * @example
129
+ * var origin = ellipsoid.cartographicToCartesian(
130
+ * Cartographic.fromDegrees(-95.0, 40.0, 200000.0));
131
+ * e.modelMatrix = Transforms.eastNorthUpToFixedFrame(origin);
132
+ *
133
+ * @see Transforms.eastNorthUpToFixedFrame
134
+ * @see czm_model
135
+ */
136
+ this.modelMatrix = Matrix4.IDENTITY.clone();
137
+ this._computedModelMatrix = Matrix4.IDENTITY.clone();
138
+
139
+ /**
140
+ * Determines if the ellipsoid primitive will be shown.
141
+ * <p>
142
+ * The default is <code>true</code>.
143
+ * </p>
144
+ *
145
+ * @type Boolean
146
+ */
147
+ this.show = true;
148
+
149
+ /**
150
+ * The surface appearance of the ellipsoid. This can be one of several built-in {@link Material} objects or a custom material, scripted with
151
+ * <a href='https://github.com/AnalyticalGraphicsInc/cesium/wiki/Fabric'>Fabric</a>.
152
+ * <p>
153
+ * The default material is <code>Material.ColorType</code>.
154
+ * </p>
155
+ *
156
+ * @type Material
157
+ *
158
+ * @example
159
+ * // 1. Change the color of the default material to yellow
160
+ * e.material.uniforms.color = new Color(1.0, 1.0, 0.0, 1.0);
161
+ *
162
+ * // 2. Change material to horizontal stripes
163
+ * e.material = Material.fromType(scene.getContext(), Material.StripeType);
164
+ *
165
+ * @see <a href='https://github.com/AnalyticalGraphicsInc/cesium/wiki/Fabric'>Fabric</a>
166
+ */
167
+ this.material = Material.fromType(undefined, Material.ColorType);
168
+ this._material = undefined;
169
+
170
+ this._sp = undefined;
171
+ this._rs = undefined;
172
+ this._va = undefined;
173
+
174
+ this._pickSP = undefined;
175
+ this._pickMaterial = undefined;
176
+ this._pickId = undefined;
177
+
178
+ this._colorCommand = new DrawCommand();
179
+ this._pickCommand = new DrawCommand();
180
+ this._commandLists = new CommandLists();
181
+
182
+ var that = this;
183
+ this._uniforms = {
184
+ u_radii : function() {
185
+ return that.radii;
186
+ },
187
+ u_oneOverEllipsoidRadiiSquared : function() {
188
+ return that._oneOverEllipsoidRadiiSquared;
189
+ }
190
+ };
191
+ };
192
+
193
+ // Per-context cache for ellipsoids
194
+ var vertexArrayCache = {};
195
+
196
+ function getVertexArray(context) {
197
+ var c = vertexArrayCache[context.getId()];
198
+
199
+ if (typeof c !== 'undefined' &&
200
+ typeof c.vertexArray !== 'undefined') {
201
+
202
+ ++c.referenceCount;
203
+ return c;
204
+ }
205
+
206
+ var mesh = BoxTessellator.compute({
207
+ dimensions : new Cartesian3(2.0, 2.0, 2.0)
208
+ });
209
+
210
+ var va = context.createVertexArrayFromMesh({
211
+ mesh: mesh,
212
+ attributeIndices: attributeIndices,
213
+ bufferUsage: BufferUsage.STATIC_DRAW
214
+ });
215
+
216
+ var cachedVA = {
217
+ vertexArray : va,
218
+ referenceCount : 1,
219
+
220
+ release : function() {
221
+ if (typeof this.vertexArray !== 'undefined' &&
222
+ --this.referenceCount === 0) {
223
+
224
+ // PERFORMANCE_IDEA: Schedule this for a few hundred frames later so we don't thrash the cache
225
+ this.vertexArray = this.vertexArray.destroy();
226
+ }
227
+
228
+ return undefined;
229
+ }
230
+ };
231
+
232
+ vertexArrayCache[context.getId()] = cachedVA;
233
+ return cachedVA;
234
+ }
235
+
236
+ /**
237
+ * @private
238
+ *
239
+ * @exception {DeveloperError} this.material must be defined.
240
+ */
241
+ EllipsoidPrimitive.prototype.update = function(context, frameState, commandList) {
242
+ if (!this.show ||
243
+ (frameState.mode !== SceneMode.SCENE3D) ||
244
+ (typeof this.center === 'undefined') ||
245
+ (typeof this.radii === 'undefined')) {
246
+ return;
247
+ }
248
+
249
+ if (typeof this.material === 'undefined') {
250
+ throw new DeveloperError('this.material must be defined.');
251
+ }
252
+
253
+ if (typeof this._rs === 'undefined') {
254
+ this._rs = context.createRenderState({
255
+ // Cull front faces - not back faces - so the ellipsoid doesn't
256
+ // disappear if the viewer enters the bounding box.
257
+ cull : {
258
+ enabled : true,
259
+ face : CullFace.FRONT
260
+ },
261
+ depthTest : {
262
+ enabled : true
263
+ },
264
+ // Do not write depth since the depth for the bounding box is
265
+ // wrong; it is not the true of the ray casted ellipsoid.
266
+ // Once WebGL has the extension for writing gl_FragDepth,
267
+ // we can write the correct depth. For now, most ellipsoids
268
+ // will be translucent so we don't want to write depth anyway.
269
+ depthMask : false,
270
+ blending : BlendingState.ALPHA_BLEND
271
+ });
272
+ }
273
+
274
+ if (typeof this._va === 'undefined') {
275
+ this._va = getVertexArray(context);
276
+ }
277
+
278
+ var radii = this.radii;
279
+ if (!Cartesian3.equals(this._radii, radii)) {
280
+ Cartesian3.clone(radii, this._radii);
281
+
282
+ var r = this._oneOverEllipsoidRadiiSquared;
283
+ r.x = 1.0 / (radii.x * radii.x);
284
+ r.y = 1.0 / (radii.y * radii.y);
285
+ r.z = 1.0 / (radii.z * radii.z);
286
+
287
+ this._boundingSphere.radius = Cartesian3.getMaximumComponent(radii);
288
+ }
289
+
290
+ // Translate model coordinates used for rendering such that the origin is the center of the ellipsoid.
291
+ Matrix4.multiplyByTranslation(this.modelMatrix, this.center, this._computedModelMatrix);
292
+
293
+ var ellipsoidCommandLists = this._commandLists;
294
+ ellipsoidCommandLists.removeAll();
295
+
296
+ if (frameState.passes.color) {
297
+ var colorCommand = this._colorCommand;
298
+
299
+ // Recompile shader when material changes
300
+ if (typeof this._material === 'undefined' ||
301
+ this._material !== this.material) {
302
+
303
+ this._material = this.material;
304
+
305
+ var fsSource =
306
+ '#line 0\n' +
307
+ Noise +
308
+ '#line 0\n' +
309
+ this.material.shaderSource +
310
+ '#line 0\n' +
311
+ EllipsoidFS;
312
+
313
+ this._sp = this._sp && this._sp.release();
314
+ this._sp = context.getShaderCache().getShaderProgram(EllipsoidVS, fsSource, attributeIndices);
315
+
316
+ colorCommand.primitiveType = PrimitiveType.TRIANGLES;
317
+ colorCommand.vertexArray = this._va.vertexArray;
318
+ colorCommand.renderState = this._rs;
319
+ colorCommand.shaderProgram = this._sp;
320
+ colorCommand.uniformMap = combine([this._uniforms, this._material._uniforms], false, false);
321
+ colorCommand.executeInClosestFrustum = true;
322
+ }
323
+
324
+ colorCommand.boundingVolume = this._boundingSphere;
325
+ colorCommand.modelMatrix = this._computedModelMatrix;
326
+
327
+ ellipsoidCommandLists.colorList.push(colorCommand);
328
+ }
329
+
330
+ if (frameState.passes.pick) {
331
+ var pickCommand = this._pickCommand;
332
+
333
+ if (typeof this._pickId === 'undefined') {
334
+ var pickId = context.createPickId(this);
335
+
336
+ var pickMaterial = Material.fromType(context, Material.ColorType);
337
+ pickMaterial.uniforms.color = pickId.normalizedRgba;
338
+
339
+ var pickFS =
340
+ '#line 0\n' +
341
+ Noise +
342
+ '#line 0\n' +
343
+ pickMaterial.shaderSource +
344
+ '#line 0\n' +
345
+ EllipsoidFS;
346
+
347
+ this._pickId = pickId;
348
+ this._pickMaterial = pickMaterial;
349
+ this._pickSP = context.getShaderCache().getShaderProgram(EllipsoidVS, pickFS, attributeIndices);
350
+
351
+ pickCommand.primitiveType = PrimitiveType.TRIANGLES;
352
+ pickCommand.vertexArray = this._va.vertexArray;
353
+ pickCommand.renderState = this._rs;
354
+ pickCommand.shaderProgram = this._pickSP;
355
+ pickCommand.uniformMap = combine([this._uniforms, pickMaterial._uniforms], false, false);
356
+ pickCommand.executeInClosestFrustum = true;
357
+ }
358
+
359
+ pickCommand.boundingVolume = this._boundingSphere;
360
+ pickCommand.modelMatrix = this._computedModelMatrix;
361
+
362
+ ellipsoidCommandLists.pickList.push(pickCommand);
363
+ }
364
+
365
+ commandList.push(ellipsoidCommandLists);
366
+ };
367
+
368
+ /**
369
+ * Returns true if this object was destroyed; otherwise, false.
370
+ * <br /><br />
371
+ * If this object was destroyed, it should not be used; calling any function other than
372
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
373
+ *
374
+ * @memberof EllipsoidPrimitive
375
+ *
376
+ * @return {Boolean} <code>true</code> if this object was destroyed; otherwise, <code>false</code>.
377
+ *
378
+ * @see EllipsoidPrimitive#destroy
379
+ */
380
+ EllipsoidPrimitive.prototype.isDestroyed = function() {
381
+ return false;
382
+ };
383
+
384
+ /**
385
+ * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
386
+ * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
387
+ * <br /><br />
388
+ * Once an object is destroyed, it should not be used; calling any function other than
389
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
390
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
391
+ *
392
+ * @memberof EllipsoidPrimitive
393
+ *
394
+ * @return {undefined}
395
+ *
396
+ * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
397
+ *
398
+ * @see EllipsoidPrimitive#isDestroyed
399
+ *
400
+ * @example
401
+ * e = e && e.destroy();
402
+ */
403
+ EllipsoidPrimitive.prototype.destroy = function() {
404
+ this._sp = this._sp && this._sp.release();
405
+ this._va = this._va && this._va.release();
406
+ this._pickSP = this._pickSP && this._pickSP.release();
407
+ this._pickId = this._pickId && this._pickId.destroy();
408
+ return destroyObject(this);
409
+ };
410
+
411
+ return EllipsoidPrimitive;
412
+ });