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,6 @@
1
+ varying vec4 v_color;
2
+
3
+ void main()
4
+ {
5
+ gl_FragColor = v_color;
6
+ }
@@ -0,0 +1,11 @@
1
+ // This file is automatically rebuilt by the Cesium build process.
2
+ /*global define*/
3
+ define(function() {
4
+ "use strict";
5
+ return "varying vec4 v_color;\n\
6
+ void main()\n\
7
+ {\n\
8
+ gl_FragColor = v_color;\n\
9
+ }\n\
10
+ ";
11
+ });
@@ -0,0 +1,34 @@
1
+ attribute vec3 position3DHigh;
2
+ attribute vec3 position3DLow;
3
+ attribute vec3 position2DHigh;
4
+ attribute vec3 position2DLow;
5
+ attribute vec4 color;
6
+ attribute float show;
7
+
8
+ varying vec4 v_color;
9
+
10
+ uniform float u_morphTime;
11
+
12
+ void main()
13
+ {
14
+ vec4 p;
15
+
16
+ if (u_morphTime == 1.0)
17
+ {
18
+ p = vec4(czm_translateRelativeToEye(position3DHigh, position3DLow), 1.0);
19
+ }
20
+ else if (u_morphTime == 0.0)
21
+ {
22
+ p = vec4(czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy), 1.0);
23
+ }
24
+ else
25
+ {
26
+ p = czm_columbusViewMorph(
27
+ czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy),
28
+ czm_translateRelativeToEye(position3DHigh, position3DLow),
29
+ u_morphTime);
30
+ }
31
+
32
+ gl_Position = czm_modelViewProjectionRelativeToEye * p * show; // position in clip coordinates
33
+ v_color = color;
34
+ }
@@ -0,0 +1,35 @@
1
+ // This file is automatically rebuilt by the Cesium build process.
2
+ /*global define*/
3
+ define(function() {
4
+ "use strict";
5
+ return "attribute vec3 position3DHigh;\n\
6
+ attribute vec3 position3DLow;\n\
7
+ attribute vec3 position2DHigh;\n\
8
+ attribute vec3 position2DLow;\n\
9
+ attribute vec4 color;\n\
10
+ attribute float show;\n\
11
+ varying vec4 v_color;\n\
12
+ uniform float u_morphTime;\n\
13
+ void main()\n\
14
+ {\n\
15
+ vec4 p;\n\
16
+ if (u_morphTime == 1.0)\n\
17
+ {\n\
18
+ p = vec4(czm_translateRelativeToEye(position3DHigh, position3DLow), 1.0);\n\
19
+ }\n\
20
+ else if (u_morphTime == 0.0)\n\
21
+ {\n\
22
+ p = vec4(czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy), 1.0);\n\
23
+ }\n\
24
+ else\n\
25
+ {\n\
26
+ p = czm_columbusViewMorph(\n\
27
+ czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy),\n\
28
+ czm_translateRelativeToEye(position3DHigh, position3DLow),\n\
29
+ u_morphTime);\n\
30
+ }\n\
31
+ gl_Position = czm_modelViewProjectionRelativeToEye * p * show;\n\
32
+ v_color = color;\n\
33
+ }\n\
34
+ ";
35
+ });
@@ -0,0 +1,532 @@
1
+ /**
2
+ * DOC_TBA
3
+ *
4
+ * @name czm_raySegmentCollectionCapacity
5
+ * @glslConstant
6
+ *
7
+ * @see czm_raySegmentCollection
8
+ */
9
+ const int czm_raySegmentCollectionCapacity = 4;
10
+
11
+ /**
12
+ * DOC_TBA
13
+ *
14
+ * @name czm_raySegmentCollection
15
+ * @glslStruct
16
+ *
17
+ * @see czm_raySegmentCollectionCapacity
18
+ * @see czm_raySegment
19
+ */
20
+ struct czm_raySegmentCollection
21
+ {
22
+ czm_raySegment intervals[czm_raySegmentCollectionCapacity];
23
+ int count;
24
+ };
25
+
26
+ /**
27
+ * DOC_TBA
28
+ *
29
+ * @name czm_raySegmentCollectionNew
30
+ * @glslFunction
31
+ *
32
+ */
33
+ czm_raySegmentCollection czm_raySegmentCollectionNew()
34
+ {
35
+ czm_raySegment intervals[czm_raySegmentCollectionCapacity];
36
+ czm_raySegmentCollection i = czm_raySegmentCollection(intervals, 0);
37
+ return i;
38
+ }
39
+
40
+ czm_raySegmentCollection czm_raySegmentCollectionNew(czm_raySegment segment)
41
+ {
42
+ czm_raySegment intervals[czm_raySegmentCollectionCapacity];
43
+ intervals[0] = segment;
44
+ czm_raySegmentCollection i = czm_raySegmentCollection(intervals, 1);
45
+ return i;
46
+ }
47
+
48
+ czm_raySegmentCollection czm_raySegmentCollectionNew(czm_raySegment first, czm_raySegment second)
49
+ {
50
+ czm_raySegment intervals[czm_raySegmentCollectionCapacity];
51
+ intervals[0] = first;
52
+ intervals[1] = second;
53
+ czm_raySegmentCollection i = czm_raySegmentCollection(intervals, 2);
54
+ return i;
55
+ }
56
+
57
+ ///////////////////////////////////////////////////////////////////////////////
58
+
59
+ /**
60
+ * DOC_TBA
61
+ *
62
+ * @name czm_removeAt
63
+ * @glslFunction
64
+ *
65
+ */
66
+ void czm_removeAt(inout czm_raySegmentCollection collection, int index)
67
+ {
68
+ --collection.count;
69
+ for (int i = 0; i < czm_raySegmentCollectionCapacity; ++i)
70
+ {
71
+ if (i >= index && i < collection.count)
72
+ {
73
+ collection.intervals[i] = collection.intervals[i + 1];
74
+ }
75
+ else if (i == collection.count)
76
+ {
77
+ break;
78
+ }
79
+ }
80
+ }
81
+
82
+ ///////////////////////////////////////////////////////////////////////////////
83
+
84
+ /**
85
+ * DOC_TBA
86
+ *
87
+ * @name czm_insertAt
88
+ * @glslFunction
89
+ *
90
+ */
91
+ void czm_insertAt(inout czm_raySegmentCollection collection, czm_raySegment segment, int index)
92
+ {
93
+ for (int i = czm_raySegmentCollectionCapacity - 1; i >= 0; --i)
94
+ {
95
+ if (i <= collection.count && i > index)
96
+ {
97
+ collection.intervals[i] = collection.intervals[i - 1];
98
+ }
99
+ else if (i == index)
100
+ {
101
+ collection.intervals[i] = segment;
102
+ }
103
+ else if (i < index)
104
+ {
105
+ break;
106
+ }
107
+ }
108
+ ++collection.count;
109
+ }
110
+
111
+ void czm_insertAt(inout czm_raySegmentCollection collection, czm_raySegmentCollection segments, int index)
112
+ {
113
+ if (segments.count == 1)
114
+ {
115
+ czm_insertAt(collection, segments.intervals[0], index);
116
+ }
117
+ else
118
+ {
119
+ for (int i = czm_raySegmentCollectionCapacity - 1; i >= 0; --i)
120
+ {
121
+ if (i < segments.count)
122
+ {
123
+ czm_insertAt(collection, segments.intervals[i], index);
124
+ }
125
+ }
126
+ }
127
+ }
128
+
129
+ ///////////////////////////////////////////////////////////////////////////////
130
+
131
+ /**
132
+ * DOC_TBA
133
+ *
134
+ * @name czm_complement
135
+ * @glslFunction
136
+ *
137
+ */
138
+ void czm_complement(czm_raySegment segment, out czm_raySegmentCollection collection)
139
+ {
140
+ if (czm_isEmpty(segment))
141
+ {
142
+ collection = czm_raySegmentCollectionNew(czm_fullRaySegment);
143
+ }
144
+ else if (segment.stop == czm_infinity)
145
+ {
146
+ if (segment.start == 0.0)
147
+ {
148
+ collection = czm_raySegmentCollectionNew();
149
+ }
150
+ else
151
+ {
152
+ collection = czm_raySegmentCollectionNew(czm_raySegment(0.0, segment.start));
153
+ }
154
+ }
155
+ else if (segment.start == 0.0)
156
+ {
157
+ collection = czm_raySegmentCollectionNew(czm_raySegment(segment.stop, czm_infinity));
158
+ }
159
+ else
160
+ {
161
+ czm_raySegment head = czm_raySegment(0.0, segment.start);
162
+ czm_raySegment tail = czm_raySegment(segment.stop, czm_infinity);
163
+ collection = czm_raySegmentCollectionNew(head, tail);
164
+ }
165
+ }
166
+
167
+ czm_raySegmentCollection czm_complement(czm_raySegmentCollection collection)
168
+ {
169
+ if (collection.count == 0)
170
+ {
171
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew(czm_fullRaySegment);
172
+ return result;
173
+ }
174
+ else if (collection.count == 1)
175
+ {
176
+ czm_raySegmentCollection result;
177
+ czm_complement(collection.intervals[0], result);
178
+ return result;
179
+ }
180
+
181
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew();
182
+
183
+ for (int i = 0; i < czm_raySegmentCollectionCapacity; ++i)
184
+ {
185
+ if (i < collection.count)
186
+ {
187
+ float start = collection.intervals[i].stop;
188
+ if (i < collection.count - 1)
189
+ {
190
+ float stop = collection.intervals[i + 1].start;
191
+ result.intervals[i] = czm_raySegment(start, stop);
192
+ ++result.count;
193
+ }
194
+ else if (start != czm_infinity)
195
+ {
196
+ result.intervals[i] = czm_raySegment(start, czm_infinity);
197
+ ++result.count;
198
+ }
199
+ }
200
+ else
201
+ {
202
+ break;
203
+ }
204
+ }
205
+
206
+ if (collection.count > 0)
207
+ {
208
+ float stop = collection.intervals[0].start;
209
+ if (stop != 0.0)
210
+ {
211
+ // PERFORMANCE TODO: See if the additional loop iteration from the insert can be eliminated.
212
+ czm_insertAt(result, czm_raySegment(0.0, stop), 0);
213
+ }
214
+ }
215
+
216
+ return result;
217
+ }
218
+
219
+ ///////////////////////////////////////////////////////////////////////////////
220
+
221
+ /**
222
+ * DOC_TBA
223
+ *
224
+ * @name czm_union
225
+ */
226
+ czm_raySegmentCollection czm_union(czm_raySegment left, czm_raySegment right)
227
+ {
228
+ if (czm_isFull(left) || czm_isFull(right))
229
+ {
230
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew(czm_fullRaySegment);
231
+ return result;
232
+ }
233
+
234
+ float stop = min(left.stop, right.stop);
235
+ float start = max(left.start, right.start);
236
+
237
+ if (stop < start) // No intersection.
238
+ {
239
+ czm_raySegmentCollection result = (left.start < right.start) ? czm_raySegmentCollectionNew(left, right) : czm_raySegmentCollectionNew(right, left);
240
+ return result;
241
+ }
242
+
243
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew(czm_raySegment(min(left.start, right.start), max(left.stop, right.stop)));
244
+ return result;
245
+ }
246
+
247
+ ///////////////////////////////////////////////////////////////////////////////
248
+
249
+ /**
250
+ * Determines the intersection of two time intervals. If they do not intersect, an
251
+ * empty time interval, <code>czm_emptyRaySegment</code>, is returned.
252
+ *
253
+ * @name czm_intersection
254
+ * @glslFunction
255
+ *
256
+ * @param {czm_raySegment} left One interval.
257
+ * @param {czm_raySegment} right The other interval.
258
+ *
259
+ * @returns {czm_raySegment} The intersection of <code>left</code> and <code>right</code>.
260
+ *
261
+ * @see czm_unionRaySegments
262
+ * @see czm_subtraction
263
+ * @see czm_isEmpty
264
+ *
265
+ * @example
266
+ * czm_raySegment i0 = czm_intersection(czm_raySegment(1.0, 2.0), czm_raySegment(3.0, 4.0)); // Empty
267
+ * czm_raySegment i1 = czm_intersection(czm_raySegment(1.0, 3.0), czm_raySegment(2.0, 4.0)); // (2.0, 3.0)
268
+ */
269
+ czm_raySegment czm_intersection(czm_raySegment left, czm_raySegment right)
270
+ {
271
+ float stop = min(left.stop, right.stop);
272
+
273
+ if (stop < 0.0)
274
+ {
275
+ return czm_emptyRaySegment;
276
+ }
277
+
278
+ float start = max(left.start, right.start);
279
+
280
+ if (stop < start)
281
+ {
282
+ return czm_emptyRaySegment;
283
+ }
284
+
285
+ czm_raySegment s = czm_raySegment(start, stop);
286
+ return s;
287
+ }
288
+
289
+ czm_raySegmentCollection czm_intersection(czm_raySegmentCollection left, czm_raySegment right)
290
+ {
291
+ if (left.count == 1)
292
+ {
293
+ czm_raySegment intersection = czm_intersection(left.intervals[0], right);
294
+
295
+ if (czm_isEmpty(intersection))
296
+ {
297
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew();
298
+
299
+ return result;
300
+ }
301
+ else
302
+ {
303
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew(intersection);
304
+
305
+ return result;
306
+ }
307
+ }
308
+
309
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew();
310
+
311
+ for (int leftIndex = 0; leftIndex < czm_raySegmentCollectionCapacity; ++leftIndex)
312
+ {
313
+ if (leftIndex < left.count)
314
+ {
315
+ czm_raySegment intersection = czm_intersection(left.intervals[leftIndex], right);
316
+ if (!czm_isEmpty(intersection))
317
+ {
318
+ czm_insertAt(result, intersection, result.count);
319
+ }
320
+ }
321
+ else
322
+ {
323
+ break;
324
+ }
325
+ }
326
+
327
+ return result;
328
+ }
329
+
330
+ czm_raySegmentCollection czm_intersection(czm_raySegmentCollection left, czm_raySegmentCollection right)
331
+ {
332
+ if (right.count == 1)
333
+ {
334
+ if (left.count == 1)
335
+ {
336
+ czm_raySegment intersection = czm_intersection(left.intervals[0], right.intervals[0]);
337
+
338
+ if (czm_isEmpty(intersection))
339
+ {
340
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew();
341
+
342
+ return result;
343
+ }
344
+ else
345
+ {
346
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew(intersection);
347
+
348
+ return result;
349
+ }
350
+ }
351
+ else
352
+ {
353
+ czm_raySegmentCollection result = czm_intersection(left, right.intervals[0]);
354
+
355
+ return result;
356
+ }
357
+ }
358
+
359
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew();
360
+
361
+ if (left.count > 0 && right.count > 0)
362
+ {
363
+ for (int leftIndex = 0; leftIndex < czm_raySegmentCollectionCapacity; ++leftIndex)
364
+ {
365
+ if (leftIndex < left.count)
366
+ {
367
+ for (int rightIndex = 0; rightIndex < czm_raySegmentCollectionCapacity; ++rightIndex)
368
+ {
369
+ // TODO: Figure out why this isn't "rightIndex < right.count".
370
+ if (rightIndex <= right.count && left.intervals[leftIndex].stop >= right.intervals[rightIndex].start)
371
+ {
372
+ czm_raySegment intersection = czm_intersection(left.intervals[leftIndex], right.intervals[rightIndex]);
373
+ if (!czm_isEmpty(intersection))
374
+ {
375
+ czm_insertAt(result, intersection, result.count);
376
+ }
377
+ }
378
+ else
379
+ {
380
+ break;
381
+ }
382
+ }
383
+ }
384
+ else
385
+ {
386
+ break;
387
+ }
388
+ }
389
+ }
390
+
391
+ return result;
392
+ }
393
+
394
+ ///////////////////////////////////////////////////////////////////////////////
395
+
396
+ /**
397
+ * Subtracts one time interval from another, resulting in zero, one, or two non-empty time intervals.
398
+ *
399
+ * @name czm_subtraction
400
+ * @glslFunction
401
+ *
402
+ * @param {czm_raySegment} outer The outer interval.
403
+ * @param {czm_raySegment} inner The inner interval that is subtracted from <code>outer</code>.
404
+ *
405
+ * @returns {czm_raySegmentCollection} The time intervals resulting from <code>outer - inner</code>.
406
+ *
407
+ * @see czm_intersection
408
+ * @see czm_unionRaySegments
409
+ *
410
+ * @example
411
+ * czm_raySegmentCollection i0 = czm_subtraction(
412
+ * czm_raySegment(1.0, 4.0), czm_raySegment(2.0, 3.0));
413
+ * // i0 is [(1.0, 2.0), (3.0, 4.0)]
414
+ *
415
+ * czm_raySegmentCollection i1 = czm_subtraction(
416
+ * czm_raySegment(1.0, 4.0), czm_raySegment(1.0, 2.0));
417
+ * // i1 is [(2.0, 4.0)]
418
+ *
419
+ * czm_raySegmentCollection i2 = czm_subtraction(
420
+ * czm_raySegment(1.0, 4.0), czm_raySegment(5.0, 6.0));
421
+ * // i2 is []
422
+ */
423
+ czm_raySegmentCollection czm_subtraction(czm_raySegment outer, czm_raySegment inner)
424
+ {
425
+ // This function has ANGLE workarounds: http://code.google.com/p/angleproject/issues/detail?id=185
426
+
427
+ czm_raySegmentCollection i = czm_raySegmentCollectionNew();
428
+
429
+ czm_raySegment intersection = czm_intersection(outer, inner);
430
+
431
+ if (czm_isEmpty(intersection) || (intersection.start == intersection.stop))
432
+ {
433
+ // No intersection, or intersection at an end point; subtraction doesn't change outer.
434
+ i.count = 1;
435
+ i.intervals[0] = outer;
436
+ }
437
+ else
438
+ {
439
+ if ((intersection.start == outer.start) && (intersection.stop == outer.stop))
440
+ {
441
+ // outer and inner are the same interval; subtracting them yields empty intervals.
442
+ i.count = 0;
443
+ }
444
+ else if (intersection.start == outer.start)
445
+ {
446
+ // inner is completely inside outer, and touching the left boundary; subtraction yields one interval
447
+ i.count = 1;
448
+ i.intervals[0] = czm_raySegment(inner.stop, outer.stop);
449
+ }
450
+ else if (intersection.stop == outer.stop)
451
+ {
452
+ // inner is completely inside outer, and touching the right boundary; subtraction yields one interval
453
+ i.count = 1;
454
+ i.intervals[0] = czm_raySegment(outer.start, inner.start);
455
+ }
456
+ else
457
+ {
458
+ // inner is completely inside outer, but not on a boundary; break outer into two intervals
459
+ i.count = 2;
460
+ i.intervals[0] = czm_raySegment(outer.start, inner.start);
461
+ i.intervals[1] = czm_raySegment(inner.stop, outer.stop);
462
+ }
463
+ }
464
+
465
+ return i;
466
+ }
467
+
468
+ /**
469
+ * DOC_TBA
470
+ *
471
+ * @name czm_subtraction
472
+ */
473
+ czm_raySegmentCollection czm_subtraction(czm_raySegmentCollection left, czm_raySegment right)
474
+ {
475
+ if (left.count == 1)
476
+ {
477
+ czm_raySegmentCollection result = czm_subtraction(left.intervals[0], right);
478
+
479
+ return result;
480
+ }
481
+
482
+ czm_raySegmentCollection result = czm_raySegmentCollectionNew();
483
+
484
+ for (int leftIndex = 0; leftIndex < czm_raySegmentCollectionCapacity; ++leftIndex)
485
+ {
486
+ if (leftIndex < left.count)
487
+ {
488
+ czm_raySegmentCollection segments = czm_subtraction(left.intervals[leftIndex], right);
489
+ if (segments.count != 0)
490
+ {
491
+ czm_insertAt(result, segments, result.count);
492
+ }
493
+ }
494
+ else
495
+ {
496
+ break;
497
+ }
498
+ }
499
+
500
+ return result;
501
+ }
502
+
503
+ /**
504
+ * DOC_TBA
505
+ *
506
+ * @name czm_subtraction
507
+ */
508
+ czm_raySegmentCollection czm_subtraction(czm_raySegmentCollection left, czm_raySegmentCollection right)
509
+ {
510
+ if (right.count == 1)
511
+ {
512
+ if (left.count == 1)
513
+ {
514
+ czm_raySegmentCollection result = czm_subtraction(left.intervals[0], right.intervals[0]);
515
+
516
+ return result;
517
+ }
518
+ else
519
+ {
520
+ czm_raySegmentCollection result = czm_subtraction(left, right.intervals[0]);
521
+
522
+ return result;
523
+ }
524
+ }
525
+
526
+ // PERFORMANCE TODO: See if these two calls (with separate loop iterations) can be combined into one loop.
527
+ czm_raySegmentCollection complement = czm_complement(right);
528
+
529
+ czm_raySegmentCollection result = czm_intersection(left, complement);
530
+
531
+ return result;
532
+ }