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,207 @@
1
+ /*global define*/
2
+ define([
3
+ './defaultValue',
4
+ './DeveloperError',
5
+ './Transforms',
6
+ './AxisAlignedBoundingBox',
7
+ './IntersectionTests',
8
+ './Cartesian2',
9
+ './Cartesian3',
10
+ './Ellipsoid',
11
+ './Ray'
12
+ ], function(
13
+ defaultValue,
14
+ DeveloperError,
15
+ Transforms,
16
+ AxisAlignedBoundingBox,
17
+ IntersectionTests,
18
+ Cartesian2,
19
+ Cartesian3,
20
+ Ellipsoid,
21
+ Ray) {
22
+ "use strict";
23
+
24
+ /**
25
+ * A plane tangent to the provided ellipsoid at the provided origin.
26
+ * If origin is not on the surface of the ellipsoid, it's surface projection will be used.
27
+ * If origin as at the center of the ellipsoid, an exception will be thrown.
28
+ * @alias EllipsoidTangentPlane
29
+ * @constructor
30
+ *
31
+ * @param {Ellipsoid} ellipsoid The ellipsoid to use.
32
+ * @param {Cartesian3} origin The point on the surface of the ellipsoid where the tangent plane touches.
33
+ *
34
+ * @exception {DeveloperError} origin is required.
35
+ * @exception {DeveloperError} origin must not be at the center of the ellipsoid.
36
+ */
37
+ var EllipsoidTangentPlane = function(origin, ellipsoid) {
38
+ if (typeof origin === 'undefined') {
39
+ throw new DeveloperError('origin is required.');
40
+ }
41
+
42
+ ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);
43
+
44
+ origin = ellipsoid.scaleToGeodeticSurface(origin);
45
+ if (typeof origin === 'undefined') {
46
+ throw new DeveloperError('origin must not be at the center of the ellipsoid.');
47
+ }
48
+ var eastNorthUp = Transforms.eastNorthUpToFixedFrame(origin, ellipsoid);
49
+ this._ellipsoid = ellipsoid;
50
+ this._origin = Cartesian3.clone(origin);
51
+ this._xAxis = Cartesian3.fromCartesian4(eastNorthUp.getColumn(0));
52
+ this._yAxis = Cartesian3.fromCartesian4(eastNorthUp.getColumn(1));
53
+ this._normal = Cartesian3.fromCartesian4(eastNorthUp.getColumn(2));
54
+ this._distance = -Cartesian3.dot(origin, origin); //The shortest distance from the origin to the plane.
55
+ };
56
+
57
+ var tmp = new AxisAlignedBoundingBox();
58
+ /**
59
+ * Creates a new instance from the provided ellipsoid and the center
60
+ * point of the provided Cartesians.
61
+ * @memberof EllipsoidTangentPlane
62
+ *
63
+ * @param {Ellipsoid} ellipsoid The ellipsoid to use.
64
+ * @param {Cartesian3} cartesians The list of positions surrounding the center point.
65
+ *
66
+ * @exception {DeveloperError} cartesians is required.
67
+ */
68
+ EllipsoidTangentPlane.fromPoints = function(cartesians, ellipsoid) {
69
+ if (typeof cartesians === 'undefined') {
70
+ throw new DeveloperError('cartesians is required.');
71
+ }
72
+
73
+ var box = AxisAlignedBoundingBox.fromPoints(cartesians, tmp);
74
+ return new EllipsoidTangentPlane(box.center, ellipsoid);
75
+ };
76
+
77
+ /**
78
+ * @memberof EllipsoidTangentPlane
79
+ * @returns {Ellipsoid} Gets the ellipsoid.
80
+ */
81
+ EllipsoidTangentPlane.prototype.getEllipsoid = function() {
82
+ return this._ellipsoid;
83
+ };
84
+
85
+ /**
86
+ * @memberof EllipsoidTangentPlane
87
+ * @returns {Cartesian3} Gets the origin.
88
+ */
89
+ EllipsoidTangentPlane.prototype.getOrigin = function() {
90
+ return this._origin;
91
+ };
92
+
93
+ var projectPointOntoPlaneRay = new Ray();
94
+ var projectPointOntoPlaneCartesian3 = new Cartesian3();
95
+
96
+ /**
97
+ * Computes the projection of the provided 3D position onto the 2D plane.
98
+ * @memberof EllipsoidTangentPlane
99
+ *
100
+ * @param {Cartesian3} cartesian The point to project.
101
+ * @param {Cartesian2} [result] The object onto which to store the result.
102
+ * @return {Cartesian2} The modified result parameter or a new Cartesian2 instance if none was provided.
103
+ *
104
+ * @exception {DeveloperError} cartesian is required.
105
+ */
106
+ EllipsoidTangentPlane.prototype.projectPointOntoPlane = function(cartesian, result) {
107
+ if (typeof cartesian === 'undefined') {
108
+ throw new DeveloperError('cartesian is required.');
109
+ }
110
+
111
+ var ray = projectPointOntoPlaneRay;
112
+ ray.origin = cartesian;
113
+ Cartesian3.normalize(cartesian, ray.direction);
114
+
115
+ var intersectionPoint = IntersectionTests.rayPlane(ray, this._normal, this._distance, projectPointOntoPlaneCartesian3);
116
+
117
+ if (typeof intersectionPoint !== 'undefined') {
118
+ var v = intersectionPoint.subtract(this._origin, intersectionPoint);
119
+ var x = this._xAxis.dot(v);
120
+ var y = this._yAxis.dot(v);
121
+
122
+ if (typeof result === 'undefined') {
123
+ return new Cartesian2(x, y);
124
+ }
125
+ result.x = x;
126
+ result.y = y;
127
+ return result;
128
+ }
129
+ return undefined;
130
+ };
131
+
132
+ /**
133
+ * Computes the projection of the provided 3D positions onto the 2D plane.
134
+ * @memberof EllipsoidTangentPlane
135
+ *
136
+ * @param {Array} cartesians The array of points to project.
137
+ * @param {Array} [result] The array of Cartesian2 instances onto which to store results.
138
+ * @return {Array} The modified result parameter or a new array of Cartesian2 instances if none was provided.
139
+ *
140
+ * @exception {DeveloperError} cartesians is required.
141
+ */
142
+ EllipsoidTangentPlane.prototype.projectPointsOntoPlane = function(cartesians, result) {
143
+ if (typeof cartesians === 'undefined') {
144
+ throw new DeveloperError('cartesians is required.');
145
+ }
146
+
147
+ if (typeof result === 'undefined') {
148
+ result = [];
149
+ }
150
+
151
+ var count = 0;
152
+ var length = cartesians.length;
153
+ for ( var i = 0; i < length; i++) {
154
+ var p = this.projectPointOntoPlane(cartesians[i], result[count]);
155
+ if (typeof p !== 'undefined') {
156
+ result[count] = p;
157
+ count++;
158
+ }
159
+ }
160
+ result.length = count;
161
+ return result;
162
+ };
163
+
164
+
165
+ var projectPointsOntoEllipsoidScratch = new Cartesian3();
166
+ /**
167
+ * Computes the projection of the provided 2D positions onto the 3D ellipsoid.
168
+ * @memberof EllipsoidTangentPlane
169
+ *
170
+ * @param {Array} cartesians The array of points to project.
171
+ * @param {Array} [result] The array of Cartesian3 instances onto which to store results.
172
+ * @return {Array} The modified result parameter or a new array of Cartesian3 instances if none was provided.
173
+ *
174
+ * @exception {DeveloperError} cartesians is required.
175
+ */
176
+ EllipsoidTangentPlane.prototype.projectPointsOntoEllipsoid = function(cartesians, result) {
177
+ if (typeof cartesians === 'undefined') {
178
+ throw new DeveloperError('cartesians is required.');
179
+ }
180
+
181
+ var length = cartesians.length;
182
+ if (typeof result === 'undefined') {
183
+ result = new Array(length);
184
+ } else {
185
+ result.length = length;
186
+ }
187
+
188
+ var ellipsoid = this._ellipsoid;
189
+ var origin = this._origin;
190
+ var xAxis = this._xAxis;
191
+ var yAxis = this._yAxis;
192
+ var tmp = projectPointsOntoEllipsoidScratch;
193
+
194
+ for ( var i = 0; i < length; ++i) {
195
+ var position = cartesians[i];
196
+ xAxis.multiplyByScalar(position.x, tmp);
197
+ var point = result[i] = Cartesian3.add(origin, tmp, result[i]);
198
+ yAxis.multiplyByScalar(position.y, tmp);
199
+ Cartesian3.add(point, tmp, point);
200
+ ellipsoid.scaleToGeocentricSurface(point, point);
201
+ }
202
+
203
+ return result;
204
+ };
205
+
206
+ return EllipsoidTangentPlane;
207
+ });
@@ -0,0 +1,151 @@
1
+ /*global define*/
2
+ define([
3
+ './defaultValue',
4
+ './DeveloperError',
5
+ './Math',
6
+ './Cartesian3',
7
+ './Visibility',
8
+ './Ellipsoid',
9
+ './BoundingSphere'
10
+ ], function(
11
+ defaultValue,
12
+ DeveloperError,
13
+ CesiumMath,
14
+ Cartesian3,
15
+ Visibility,
16
+ Ellipsoid,
17
+ BoundingSphere) {
18
+ "use strict";
19
+
20
+ /**
21
+ * Determine whether or not other objects are visible or hidden behind the visible horizon defined by
22
+ * an {@link Ellipsoid} and a camera position. The ellipsoid is assumed to be located at the
23
+ * origin of the coordinate system.
24
+ *
25
+ * @alias EllipsoidalOccluder
26
+ *
27
+ * @param {Ellipsoid} ellipsoid The ellipsoid to use as an occluder.
28
+ * @param {Cartesian3} [cameraPosition] The coordinate of the viewer/camera. If this parameter is not
29
+ * specified, {@link EllipsoidalOccluder#setCameraPosition} must be called before
30
+ * testing visibility.
31
+ *
32
+ * @exception {DeveloperError} <code>ellipsoid</code> is required.
33
+ *
34
+ * @constructor
35
+ *
36
+ * @example
37
+ * // Construct an ellipsoidal occluder with radii 1.0, 1.1, and 0.9.
38
+ * var cameraPosition = new Cartesian3(5.0, 6.0, 7.0);
39
+ * var occluderEllipsoid = new Ellipsoid(1.0, 1.1, 0.9);
40
+ * var occluder = new EllipsoidalOccluder(occluderEllipsoid, cameraPosition);
41
+ */
42
+ var EllipsoidalOccluder = function(ellipsoid, cameraPosition) {
43
+ if (typeof ellipsoid === 'undefined') {
44
+ throw new DeveloperError('ellipsoid is required.');
45
+ }
46
+
47
+ this._ellipsoid = ellipsoid;
48
+ this._cameraPosition = new Cartesian3(0.0, 0.0, 0.0);
49
+ this._cameraPositionInScaledSpace = new Cartesian3(0.0, 0.0, 0.0);
50
+ this._distanceToLimbInScaledSpaceSquared = 0.0;
51
+
52
+ // setCameraPosition fills in the above values
53
+ if (typeof cameraPosition !== 'undefined') {
54
+ this.setCameraPosition(cameraPosition);
55
+ }
56
+ };
57
+
58
+ /**
59
+ * Returns the occluding ellipsoid.
60
+ *
61
+ * @memberof EllipsoidalOccluder
62
+ *
63
+ * @return {Ellipsoid} The ellipsoid.
64
+ */
65
+ EllipsoidalOccluder.prototype.getEllipsoid = function() {
66
+ return this._ellipsoid;
67
+ };
68
+
69
+ /**
70
+ * Sets the position of the camera.
71
+ *
72
+ * @memberof EllipsoidalOccluder
73
+ *
74
+ * @param {Cartesian3} cameraPosition The new position of the camera.
75
+ */
76
+ EllipsoidalOccluder.prototype.setCameraPosition = function(cameraPosition) {
77
+ var ellipsoid = this._ellipsoid;
78
+ var cameraPositionInScaledSpace = ellipsoid.transformPositionToScaledSpace(cameraPosition, this._cameraPositionInScaledSpace);
79
+ var magnitudeCameraPositionInScaledSpace = Cartesian3.magnitude(cameraPositionInScaledSpace);
80
+ var distanceToLimbInScaledSpaceSquared = magnitudeCameraPositionInScaledSpace * magnitudeCameraPositionInScaledSpace - 1.0;
81
+
82
+ Cartesian3.clone(cameraPosition, this._cameraPosition);
83
+ this._cameraPositionInScaledSpace = cameraPositionInScaledSpace;
84
+ this._distanceToLimbInScaledSpaceSquared = distanceToLimbInScaledSpaceSquared;
85
+ };
86
+
87
+ /**
88
+ * Gets the position of the camera.
89
+ *
90
+ * @memberof EllipsoidalOccluder
91
+ *
92
+ * @returns {Cartesian3} The position of the camera.
93
+ */
94
+ EllipsoidalOccluder.prototype.getCameraPosition = function() {
95
+ return this._cameraPosition;
96
+ };
97
+
98
+ var scratchCartesian = new Cartesian3(0.0, 0.0, 0.0);
99
+
100
+ /**
101
+ * Determines whether or not a point, the <code>occludee</code>, is hidden from view by the occluder.
102
+ *
103
+ * @memberof EllipsoidalOccluder
104
+ *
105
+ * @param {Cartesian3} occludee The point to test for visibility.
106
+ *
107
+ * @return {boolean} <code>true</code> if the occludee is visible; otherwise <code>false</code>.
108
+ *
109
+ * @example
110
+ * var cameraPosition = new Cartesian3(0, 0, 2.5);
111
+ * var ellipsoid = new Ellipsoid(1.0, 1.1, 0.9);
112
+ * var occluder = new EllipsoidalOccluder(ellipsoid, cameraPosition);
113
+ * var point = new Cartesian3(0, -3, -3);
114
+ * occluder.isPointVisible(point); //returns true
115
+ */
116
+ EllipsoidalOccluder.prototype.isPointVisible = function(occludee) {
117
+ var ellipsoid = this._ellipsoid;
118
+ var occludeeScaledSpacePosition = ellipsoid.transformPositionToScaledSpace(occludee, scratchCartesian);
119
+ return this.isScaledSpacePointVisible(occludeeScaledSpacePosition);
120
+ };
121
+
122
+ /**
123
+ * Determines whether or not a point expressed in the ellipsoid scaled space, is hidden from view by the
124
+ * occluder. To transform a Cartesian X, Y, Z position in the coordinate system aligned with the ellipsoid
125
+ * into the scaled space, call {@link Ellipsoid#transformPositionToScaledSpace}.
126
+ *
127
+ * @memberof EllipsoidalOccluder
128
+ *
129
+ * @param {Cartesian3} occludeeScaledSpacePosition The point to test for visibility, represented in the scaled space.
130
+ *
131
+ * @return {boolean} <code>true</code> if the occludee is visible; otherwise <code>false</code>.
132
+ *
133
+ * @example
134
+ * var cameraPosition = new Cartesian3(0, 0, 2.5);
135
+ * var ellipsoid = new Ellipsoid(1.0, 1.1, 0.9);
136
+ * var occluder = new EllipsoidalOccluder(ellipsoid, cameraPosition);
137
+ * var point = new Cartesian3(0, -3, -3);
138
+ * var scaledSpacePoint = ellipsoid.transformPositionToScaledSpace(point);
139
+ * occluder.isScaledSpacePointVisible(scaledSpacePoint); //returns true
140
+ */
141
+ EllipsoidalOccluder.prototype.isScaledSpacePointVisible = function(occludeeScaledSpacePosition) {
142
+ // Based on Cozzi and Stoner's paper, "GPU Ray Casting of Virtual Globes Supplement"
143
+ var q = this._cameraPositionInScaledSpace;
144
+ var wMagnitudeSquared = this._distanceToLimbInScaledSpaceSquared;
145
+ var b = Cartesian3.subtract(occludeeScaledSpacePosition, q, scratchCartesian);
146
+ var d = -b.dot(q);
147
+ return d < wMagnitudeSquared || d * d / b.magnitudeSquared() < wMagnitudeSquared;
148
+ };
149
+
150
+ return EllipsoidalOccluder;
151
+ });
@@ -0,0 +1,197 @@
1
+ /*global define*/
2
+ define([
3
+ './Cartesian3',
4
+ './DeveloperError'
5
+ ], function(
6
+ Cartesian3,
7
+ DeveloperError) {
8
+ "use strict";
9
+
10
+ /**
11
+ * A fixed-point encoding of a {@link Cartesian3} with 64-bit floating-point components, as two {@link Cartesian3}
12
+ * values that, when converted to 32-bit floating-point and added, approximate the original input.
13
+ * <p>
14
+ * This is used to encode positions in vertex buffers for rendering without jittering artifacts
15
+ * as described in <a href="http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/">Precisions, Precisions</a>.
16
+ * </p>
17
+ *
18
+ * @alias EncodedCartesian3
19
+ * @constructor
20
+ *
21
+ * @see czm_modelViewRelativeToEye
22
+ * @see czm_modelViewProjectionRelativeToEye
23
+ */
24
+ var EncodedCartesian3 = function() {
25
+ /**
26
+ * The high bits for each component. Bits 0 to 22 store the whole value. Bits 23 to 31 are not used.
27
+ * <p>
28
+ * The default is {@link Cartesian3.ZERO}.
29
+ * </p>
30
+ *
31
+ * @type Number
32
+ */
33
+ this.high = Cartesian3.ZERO.clone();
34
+
35
+ /**
36
+ * The low bits for each component. Bits 7 to 22 store the whole value, and bits 0 to 6 store the fraction. Bits 23 to 31 are not used.
37
+ * <p>
38
+ * The default is {@link Cartesian3.ZERO}.
39
+ * </p>
40
+ *
41
+ * @type Number
42
+ */
43
+ this.low = Cartesian3.ZERO.clone();
44
+ };
45
+
46
+ /**
47
+ * Encodes a 64-bit floating-point value as two floating-point values that, when converted to
48
+ * 32-bit floating-point and added, approximate the original input. The returned object
49
+ * has <code>high</code> and <code>low</code> properties for the high and low bits, respectively.
50
+ * <p>
51
+ * The fixed-point encoding follows <a href="http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/">Precisions, Precisions</a>.
52
+ * </p>
53
+ * @memberof EncodedCartesian3
54
+ *
55
+ * @param {Number} value The floating-point value to encode.
56
+ * @param {Object} [result] The object onto which to store the result.
57
+ *
58
+ * @return {Object} The modified result parameter or a new instance if one was not provided.
59
+ *
60
+ * @exception {DeveloperError} value is required.
61
+ *
62
+ * @example
63
+ * var value = 1234567.1234567;
64
+ * var splitValue = EncodedCartesian3.encode(value);
65
+ */
66
+ EncodedCartesian3.encode = function(value, result) {
67
+ if (typeof value === 'undefined') {
68
+ throw new DeveloperError('value is required');
69
+ }
70
+
71
+ if (typeof result === 'undefined') {
72
+ result = {
73
+ high : 0.0,
74
+ low : 0.0
75
+ };
76
+ }
77
+
78
+ var doubleHigh;
79
+ if (value >= 0.0) {
80
+ doubleHigh = Math.floor(value / 65536.0) * 65536.0;
81
+ result.high = doubleHigh;
82
+ result.low = value - doubleHigh;
83
+ } else {
84
+ doubleHigh = Math.floor(-value / 65536.0) * 65536.0;
85
+ result.high = -doubleHigh;
86
+ result.low = value + doubleHigh;
87
+ }
88
+
89
+ return result;
90
+ };
91
+
92
+ var scratchEncode = {
93
+ high : 0.0,
94
+ low : 0.0
95
+ };
96
+
97
+ /**
98
+ * Encodes a {@link Cartesian3} with 64-bit floating-point components as two {@link Cartesian3}
99
+ * values that, when converted to 32-bit floating-point and added, approximate the original input.
100
+ * <p>
101
+ * The fixed-point encoding follows <a href="http://blogs.agi.com/insight3d/index.php/2008/09/03/precisions-precisions/">Precisions, Precisions</a>.
102
+ * </p>
103
+ * @memberof EncodedCartesian3
104
+ *
105
+ * @param {Cartesian3} cartesian The cartesian to encode.
106
+ * @param {EncodedCartesian3} [result] The object onto which to store the result.
107
+ * @return {EncodedCartesian3} The modified result parameter or a new EncodedCartesian3 instance if one was not provided.
108
+ *
109
+ * @exception {DeveloperError} cartesian is required.
110
+ *
111
+ * @example
112
+ * var cart = new Cartesian3(-10000000.0, 0.0, 10000000.0);
113
+ * var encoded = EncodedCartesian3.fromCartesian(cart);
114
+ */
115
+ EncodedCartesian3.fromCartesian = function(cartesian, result) {
116
+ if (typeof cartesian === 'undefined') {
117
+ throw new DeveloperError('cartesian is required');
118
+ }
119
+
120
+ if (typeof result === 'undefined') {
121
+ result = new EncodedCartesian3();
122
+ }
123
+
124
+ var high = result.high;
125
+ var low = result.low;
126
+
127
+ EncodedCartesian3.encode(cartesian.x, scratchEncode);
128
+ high.x = scratchEncode.high;
129
+ low.x = scratchEncode.low;
130
+
131
+ EncodedCartesian3.encode(cartesian.y, scratchEncode);
132
+ high.y = scratchEncode.high;
133
+ low.y = scratchEncode.low;
134
+
135
+ EncodedCartesian3.encode(cartesian.z, scratchEncode);
136
+ high.z = scratchEncode.high;
137
+ low.z = scratchEncode.low;
138
+
139
+ return result;
140
+ };
141
+
142
+ var encodedP = new EncodedCartesian3();
143
+
144
+ /**
145
+ * Encodes the provided <code>cartesian</code>, and writes it to an array with <code>high</code>
146
+ * components followed by <code>low</code> components, i.e. <code>[high.x, high.y, high.z, low.x, low.y, low.z]</code>.
147
+ * <p>
148
+ * This is used to create interleaved high-precision position vertex attributes.
149
+ * </p>
150
+ *
151
+ * @param {Cartesian3} cartesian The cartesian to encode.
152
+ * @param {Array} cartesianArray The array to write to.
153
+ * @param {Number} index The index into the array to start writing. Six elements will be written.
154
+ *
155
+ * @exception {DeveloperError} cartesian is required.
156
+ * @exception {DeveloperError} cartesianArray is required.
157
+ * @exception {DeveloperError} index must be a number greater than or equal to 0.
158
+ *
159
+ * @example
160
+ * var positions = [
161
+ * new Cartesian3(),
162
+ * // ...
163
+ * ];
164
+ * var encodedPositions = new Float32Array(2 * 3 * positions.length);
165
+ * var j = 0;
166
+ * for (var i = 0; i < positions.length; ++i) {
167
+ * EncodedCartesian3.writeElement(positions[i], encodedPositions, j);
168
+ * j += 6;
169
+ * }
170
+ */
171
+ EncodedCartesian3.writeElements = function(cartesian, cartesianArray, index) {
172
+ if (typeof cartesian === 'undefined') {
173
+ throw new DeveloperError('cartesian is required');
174
+ }
175
+
176
+ if (typeof cartesianArray === 'undefined') {
177
+ throw new DeveloperError('cartesianArray is required');
178
+ }
179
+
180
+ if (typeof index !== 'number' || index < 0) {
181
+ throw new DeveloperError('index must be a number greater than or equal to 0.');
182
+ }
183
+
184
+ EncodedCartesian3.fromCartesian(cartesian, encodedP);
185
+ var high = encodedP.high;
186
+ var low = encodedP.low;
187
+
188
+ cartesianArray[index] = high.x;
189
+ cartesianArray[index + 1] = high.y;
190
+ cartesianArray[index + 2] = high.z;
191
+ cartesianArray[index + 3] = low.x;
192
+ cartesianArray[index + 4] = low.y;
193
+ cartesianArray[index + 5] = low.z;
194
+ };
195
+
196
+ return EncodedCartesian3;
197
+ });