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,270 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ '../Core/destroyObject',
5
+ '../Core/Math',
6
+ '../Core/ScreenSpaceEventHandler',
7
+ '../Core/ScreenSpaceEventType',
8
+ '../Core/Cartesian2',
9
+ './CameraEventType'
10
+ ], function(
11
+ DeveloperError,
12
+ destroyObject,
13
+ CesiumMath,
14
+ ScreenSpaceEventHandler,
15
+ ScreenSpaceEventType,
16
+ Cartesian2,
17
+ CameraEventType) {
18
+ "use strict";
19
+
20
+ /**
21
+ * DOC_TBA
22
+ *
23
+ * @alias CameraEventAggregator
24
+ *
25
+ * @param {HTMLCanvasElement} canvas DOC_TBA
26
+ * @param {CameraEventType} moveType DOC_TBA
27
+ * @param {KeyboardEventModifier} moveModifier DOC_TBA
28
+ *
29
+ * @exception {DeveloperError} canvas is required.
30
+ * @exception {DeveloperError} moveType is required.
31
+ *
32
+ * @constructor
33
+ *
34
+ * @see ScreenSpaceEventHandler
35
+ */
36
+ var CameraEventAggregator = function(canvas, moveType, moveModifier) {
37
+ if (typeof canvas === 'undefined') {
38
+ throw new DeveloperError('description.canvas is required.');
39
+ }
40
+
41
+ if (typeof moveType === 'undefined') {
42
+ throw new DeveloperError('moveType is required.');
43
+ }
44
+
45
+ this._eventHandler = new ScreenSpaceEventHandler(canvas);
46
+
47
+ this._update = true;
48
+ this._movement = undefined;
49
+ this._lastMovement = undefined;
50
+ this._isDown = false;
51
+ this._pressTime = undefined;
52
+ this._releaseTime = undefined;
53
+
54
+ var that = this;
55
+
56
+ if (moveType === CameraEventType.PINCH) {
57
+
58
+ this._eventHandler.setInputAction(function(movement) {
59
+ //that._lastMovement = null;
60
+ that._isDown = true;
61
+ that._pressTime = new Date();
62
+ }, ScreenSpaceEventType.PINCH_START, moveModifier);
63
+
64
+ this._eventHandler.setInputAction(function(movement) {
65
+ that._isDown = false;
66
+ that._releaseTime = new Date();
67
+ }, ScreenSpaceEventType.PINCH_END, moveModifier);
68
+
69
+ this._eventHandler.setInputAction(function(movement) {
70
+ if (that._isDown) {
71
+ // Aggregate several input events into a single animation frame.
72
+ if (!that._update) {
73
+ that._movement.distance.endPosition = movement.distance.endPosition.clone();
74
+ that._movement.angleAndHeight.endPosition = movement.angleAndHeight.endPosition.clone();
75
+ } else {
76
+ //that._lastMovement = that._movement;
77
+ that._movement = movement;
78
+ that._update = false;
79
+ that._movement.prevAngle = that._movement.angleAndHeight.startPosition.x;
80
+ }
81
+ // Make sure our aggregation of angles does not "flip" over 360 degrees.
82
+ var angle = that._movement.angleAndHeight.endPosition.x;
83
+ var prevAngle = that._movement.prevAngle;
84
+ var TwoPI = Math.PI * 2;
85
+ while (angle >= (prevAngle + Math.PI)) {
86
+ angle -= TwoPI;
87
+ }
88
+ while (angle < (prevAngle - Math.PI)) {
89
+ angle += TwoPI;
90
+ }
91
+ that._movement.angleAndHeight.endPosition.x = -angle * canvas.clientWidth / 12;
92
+ that._movement.angleAndHeight.startPosition.x = -prevAngle * canvas.clientWidth / 12;
93
+ }
94
+ }, ScreenSpaceEventType.PINCH_MOVE, moveModifier);
95
+
96
+ } else if (moveType === CameraEventType.WHEEL) {
97
+
98
+ this._eventHandler.setInputAction(function(delta) {
99
+ // TODO: magic numbers
100
+ var arcLength = 2 * CesiumMath.toRadians(delta);
101
+ if (!that._update) {
102
+ that._movement.endPosition.y = that._movement.endPosition.y + arcLength;
103
+ } else {
104
+ that._movement = {
105
+ startPosition : new Cartesian2(0.0, 0.0),
106
+ endPosition : new Cartesian2(0.0, arcLength),
107
+ motion : new Cartesian2(0.0, 0.0)
108
+ };
109
+ that._lastMovement = that._movement; // This looks unusual, but its needed for wheel inertia.
110
+ that._update = false;
111
+ }
112
+ that._pressTime = new Date();
113
+ that._releaseTime = new Date(that._pressTime.getTime() + Math.abs(arcLength) * 5.0);
114
+ }, ScreenSpaceEventType.WHEEL, moveModifier);
115
+
116
+ } else { // General mouse buttons
117
+
118
+ var down;
119
+ var up;
120
+ if (moveType === CameraEventType.LEFT_DRAG) {
121
+ down = ScreenSpaceEventType.LEFT_DOWN;
122
+ up = ScreenSpaceEventType.LEFT_UP;
123
+ } else if (moveType === CameraEventType.RIGHT_DRAG) {
124
+ down = ScreenSpaceEventType.RIGHT_DOWN;
125
+ up = ScreenSpaceEventType.RIGHT_UP;
126
+ } else if (moveType === CameraEventType.MIDDLE_DRAG) {
127
+ down = ScreenSpaceEventType.MIDDLE_DOWN;
128
+ up = ScreenSpaceEventType.MIDDLE_UP;
129
+ } else {
130
+ this._eventHandler = this._eventHandler && this._eventHandler.destroy();
131
+ throw new DeveloperError('moveType must be of type CameraEventType.');
132
+ }
133
+
134
+ this._eventHandler.setInputAction(function(movement) {
135
+ that._lastMovement = null;
136
+ that._isDown = true;
137
+ that._pressTime = new Date();
138
+ }, down, moveModifier);
139
+
140
+ this._eventHandler.setInputAction(function(movement) {
141
+ that._isDown = false;
142
+ that._releaseTime = new Date();
143
+ }, up, moveModifier);
144
+
145
+ this._eventHandler.setInputAction(function(movement) {
146
+ if (that._isDown) {
147
+ if (!that._update) {
148
+ that._movement.endPosition = movement.endPosition.clone();
149
+ } else {
150
+ that._lastMovement = that._movement;
151
+ that._movement = movement;
152
+ that._update = false;
153
+ }
154
+ }
155
+ }, ScreenSpaceEventType.MOUSE_MOVE, moveModifier);
156
+ }
157
+ };
158
+
159
+ /**
160
+ * DOC_TBA
161
+ *
162
+ * @memberof CameraEventAggregator
163
+ *
164
+ * @return {Boolean} DOC_TBA
165
+ */
166
+ CameraEventAggregator.prototype.isMoving = function() {
167
+ return !this._update;
168
+ };
169
+
170
+ /**
171
+ * DOC_TBA
172
+ *
173
+ * @memberof CameraEventAggregator
174
+ *
175
+ * @return {Object} DOC_TBA
176
+ */
177
+ CameraEventAggregator.prototype.getMovement = function() {
178
+ var movement = this._movement;
179
+ this._update = true;
180
+ return movement;
181
+ };
182
+
183
+ /**
184
+ * DOC_TBA
185
+ *
186
+ * @memberof CameraEventAggregator
187
+ *
188
+ * @return {Object} DOC_TBA
189
+ */
190
+ CameraEventAggregator.prototype.getLastMovement = function() {
191
+ return this._lastMovement;
192
+ };
193
+
194
+ /**
195
+ * DOC_TBA
196
+ *
197
+ * @memberof CameraEventAggregator
198
+ *
199
+ * @return {Boolean} DOC_TBA
200
+ *
201
+ */
202
+ CameraEventAggregator.prototype.isButtonDown = function() {
203
+ return this._isDown;
204
+ };
205
+
206
+ /**
207
+ * DOC_TBA
208
+ *
209
+ * @memberof CameraEventAggregator
210
+ *
211
+ * @return {Date} DOC_TBA
212
+ *
213
+ */
214
+ CameraEventAggregator.prototype.getButtonPressTime = function() {
215
+ return this._pressTime;
216
+ };
217
+
218
+ /**
219
+ * DOC_TBA
220
+ *
221
+ * @memberof CameraEventAggregator
222
+ *
223
+ * @return {Date} DOC_TBA
224
+ *
225
+ */
226
+ CameraEventAggregator.prototype.getButtonReleaseTime = function() {
227
+ return this._releaseTime;
228
+ };
229
+
230
+ /**
231
+ * Returns true if this object was destroyed; otherwise, false.
232
+ * <br /><br />
233
+ * If this object was destroyed, it should not be used; calling any function other than
234
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
235
+ *
236
+ * @memberof CameraEventAggregator
237
+ *
238
+ * @return {Boolean} <code>true</code> if this object was destroyed; otherwise, <code>false</code>.
239
+ *
240
+ * @see CameraEventAggregator#destroy
241
+ */
242
+ CameraEventAggregator.prototype.isDestroyed = function() {
243
+ return false;
244
+ };
245
+
246
+ /**
247
+ * Removes mouse listeners held by this object.
248
+ * <br /><br />
249
+ * Once an object is destroyed, it should not be used; calling any function other than
250
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
251
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
252
+ *
253
+ * @memberof CameraEventAggregator
254
+ *
255
+ * @return {undefined}
256
+ *
257
+ * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called.
258
+ *
259
+ * @see CameraEventAggregator#isDestroyed
260
+ *
261
+ * @example
262
+ * handler = handler && handler.destroy();
263
+ */
264
+ CameraEventAggregator.prototype.destroy = function() {
265
+ this._eventHandler = this._eventHandler && this._eventHandler.destroy();
266
+ return destroyObject(this);
267
+ };
268
+
269
+ return CameraEventAggregator;
270
+ });
@@ -0,0 +1,53 @@
1
+ /*global define*/
2
+ define(['../Core/Enumeration'], function(Enumeration) {
3
+ "use strict";
4
+
5
+ /**
6
+ * DOC_TBA
7
+ *
8
+ * @exports CameraEventType
9
+ */
10
+ var CameraEventType = {
11
+ /**
12
+ * DOC_TBA
13
+ *
14
+ * @constant
15
+ * @type {Enumeration}
16
+ */
17
+ LEFT_DRAG : new Enumeration(0, 'LEFT_DRAG'),
18
+
19
+ /**
20
+ * DOC_TBA
21
+ *
22
+ * @constant
23
+ * @type {Enumeration}
24
+ */
25
+ RIGHT_DRAG : new Enumeration(1, 'RIGHT_DRAG'),
26
+
27
+ /**
28
+ * DOC_TBA
29
+ *
30
+ * @constant
31
+ * @type {Enumeration}
32
+ */
33
+ MIDDLE_DRAG : new Enumeration(2, 'MIDDLE_DRAG'),
34
+
35
+ /**
36
+ * DOC_TBA
37
+ *
38
+ * @constant
39
+ * @type {Enumeration}
40
+ */
41
+ WHEEL : new Enumeration(3, 'WHEEL'),
42
+
43
+ /**
44
+ * A two-finger touch on a touch surface.
45
+ *
46
+ * @constant
47
+ * @type {Enumeration}
48
+ */
49
+ PINCH : new Enumeration(4, 'PINCH')
50
+ };
51
+
52
+ return CameraEventType;
53
+ });
@@ -0,0 +1,495 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/Cartesian3',
5
+ '../Core/Cartographic',
6
+ '../Core/DeveloperError',
7
+ '../Core/Ellipsoid',
8
+ '../Core/HermiteSpline',
9
+ '../Core/IntersectionTests',
10
+ '../Core/Math',
11
+ '../Core/Matrix3',
12
+ '../Core/OrientationInterpolator',
13
+ '../Core/Quaternion',
14
+ '../Core/Ray',
15
+ '../Scene/PerspectiveFrustum',
16
+ '../Scene/PerspectiveOffCenterFrustum',
17
+ '../Scene/SceneMode',
18
+ '../ThirdParty/Tween'
19
+ ], function(
20
+ defaultValue,
21
+ Cartesian3,
22
+ Cartographic,
23
+ DeveloperError,
24
+ Ellipsoid,
25
+ HermiteSpline,
26
+ IntersectionTests,
27
+ CesiumMath,
28
+ Matrix3,
29
+ OrientationInterpolator,
30
+ Quaternion,
31
+ Ray,
32
+ PerspectiveFrustum,
33
+ PerspectiveOffCenterFrustum,
34
+ SceneMode,
35
+ Tween) {
36
+ "use strict";
37
+
38
+ /**
39
+ * Creates animations for camera flights.
40
+ * @exports CameraFlightPath
41
+ */
42
+ var CameraFlightPath = {
43
+ };
44
+
45
+ function createQuaternion(direction, up) {
46
+ var right = direction.cross(up);
47
+ up = right.cross(direction);
48
+ var viewMat = new Matrix3( right.x, right.y, right.z,
49
+ up.x, up.y, up.z,
50
+ -direction.x, -direction.y, -direction.z);
51
+ return Quaternion.fromRotationMatrix(viewMat);
52
+ }
53
+
54
+ function getAltitude(frustum, dx, dy) {
55
+ var near;
56
+ var top;
57
+ var right;
58
+ if (frustum instanceof PerspectiveFrustum) {
59
+ var tanTheta = Math.tan(0.5 * frustum.fovy);
60
+ near = frustum.near;
61
+ top = frustum.near * tanTheta;
62
+ right = frustum.aspectRatio * top;
63
+ return Math.max(dx * near / right, dy * near / top);
64
+ } else if (frustum instanceof PerspectiveOffCenterFrustum) {
65
+ near = frustum.near;
66
+ top = frustum.top;
67
+ right = frustum.right;
68
+ return Math.max(dx * near / right, dy * near / top);
69
+ }
70
+
71
+ return Math.max(dx, dy);
72
+ }
73
+
74
+ function createSpline(points) {
75
+ if (points.length > 2) {
76
+ return new HermiteSpline(points);
77
+ }
78
+
79
+ // only two points, use linear interpolation
80
+ var p = points[0];
81
+ var q = points[1];
82
+
83
+ return {
84
+ getControlPoints : function() {
85
+ return points;
86
+ },
87
+
88
+ evaluate : function(time) {
89
+ time = CesiumMath.clamp(time, p.time, q.time);
90
+ var t = (time - p.time) / (q.time - p.time);
91
+ return Cartesian3.lerp(p.point, q.point, t);
92
+ }
93
+ };
94
+ }
95
+
96
+ function createPath3D(camera, ellipsoid, start, end, duration) {
97
+ // get minimum altitude from which the whole ellipsoid is visible
98
+ var radius = ellipsoid.getMaximumRadius();
99
+ var frustum = camera.frustum;
100
+ var maxStartAlt = getAltitude(frustum, radius, radius);
101
+
102
+ var dot = start.normalize().dot(end.normalize());
103
+
104
+ var points;
105
+ var altitude;
106
+ var incrementPercentage;
107
+ if (start.magnitude() > maxStartAlt) {
108
+ altitude = radius + 0.6 * (maxStartAlt - radius);
109
+ incrementPercentage = 0.35;
110
+ } else {
111
+ var diff = start.subtract(end);
112
+ altitude = diff.multiplyByScalar(0.5).add(end).magnitude();
113
+ var verticalDistance = camera.up.multiplyByScalar(diff.dot(camera.up)).magnitude();
114
+ var horizontalDistance = camera.right.multiplyByScalar(diff.dot(camera.right)).magnitude();
115
+ altitude += getAltitude(frustum, verticalDistance, horizontalDistance);
116
+ incrementPercentage = CesiumMath.clamp(dot + 1.0, 0.25, 0.5);
117
+ }
118
+
119
+ var aboveEnd = end.normalize().multiplyByScalar(altitude);
120
+ var afterStart = start.normalize().multiplyByScalar(altitude);
121
+
122
+ var axis, angle, rotation, middle;
123
+ if (end.magnitude() > maxStartAlt && dot > 0.75) {
124
+ middle = start.subtract(end).multiplyByScalar(0.5).add(end);
125
+
126
+ points = [{
127
+ point : start
128
+ }, {
129
+ point : middle
130
+ }, {
131
+ point : end
132
+ }];
133
+ } else if (start.magnitude() > maxStartAlt && dot > 0) {
134
+ middle = start.subtract(aboveEnd).multiplyByScalar(0.5).add(aboveEnd);
135
+
136
+ points = [{
137
+ point : start
138
+ }, {
139
+ point : middle
140
+ }, {
141
+ point : end
142
+ }];
143
+ } else {
144
+ points = [{
145
+ point : start
146
+ }];
147
+
148
+ angle = Math.acos(afterStart.normalize().dot(aboveEnd.normalize()));
149
+ axis = afterStart.cross(aboveEnd);
150
+ if (axis.equalsEpsilon(Cartesian3.ZERO, CesiumMath.EPSILON6)) {
151
+ axis = Cartesian3.UNIT_Z;
152
+ }
153
+
154
+ var increment = incrementPercentage * angle;
155
+ var startCondition = angle - increment;
156
+ for ( var i = startCondition; i > 0.0; i = i - increment) {
157
+ rotation = Matrix3.fromQuaternion(Quaternion.fromAxisAngle(axis, i));
158
+ points.push({
159
+ point : rotation.multiplyByVector(aboveEnd)
160
+ });
161
+ }
162
+
163
+ points.push({
164
+ point : end
165
+ });
166
+ }
167
+
168
+ var scalar = duration / (points.length - 1);
169
+ for ( var k = 0; k < points.length; ++k) {
170
+ points[k].time = k * scalar;
171
+ }
172
+
173
+ return createSpline(points);
174
+ }
175
+
176
+ function createOrientations3D(camera, points, endDirection, endUp) {
177
+ points[0].orientation = createQuaternion(camera.direction, camera.up);
178
+
179
+ var point;
180
+ var direction;
181
+ var right;
182
+ var up;
183
+
184
+ var length = points.length - 1;
185
+ for (var i = 1; i < length; ++i) {
186
+ point = points[i];
187
+ direction = point.point.negate().normalize();
188
+ right = direction.cross(Cartesian3.UNIT_Z).normalize();
189
+ up = right.cross(direction);
190
+ point.orientation = createQuaternion(direction, up);
191
+ }
192
+
193
+ point = points[length];
194
+ if (typeof endDirection !== 'undefined' && typeof endUp !== 'undefined') {
195
+ point.orientation = createQuaternion(endDirection, endUp);
196
+ } else {
197
+ direction = point.point.negate().normalize();
198
+ right = direction.cross(Cartesian3.UNIT_Z).normalize();
199
+ up = right.cross(direction);
200
+ point.orientation = createQuaternion(direction, up);
201
+ }
202
+
203
+ return new OrientationInterpolator(points);
204
+ }
205
+
206
+ function createUpdate3D(frameState, destination, duration, direction, up) {
207
+ var camera = frameState.camera;
208
+ var ellipsoid = frameState.scene2D.projection.getEllipsoid();
209
+
210
+ var path = createPath3D(camera, ellipsoid, camera.position, destination, duration);
211
+ var orientations = createOrientations3D(camera, path.getControlPoints(), direction, up);
212
+
213
+ var update = function(value) {
214
+ var time = value.time;
215
+ var orientation = orientations.evaluate(time);
216
+ var rotationMatrix = Matrix3.fromQuaternion(orientation);
217
+
218
+ camera.position = path.evaluate(time);
219
+ camera.right = rotationMatrix.getRow(0);
220
+ camera.up = rotationMatrix.getRow(1);
221
+ camera.direction = rotationMatrix.getRow(2).negate();
222
+ };
223
+
224
+ return update;
225
+ }
226
+
227
+ function createPath2D(camera, ellipsoid, start, end, duration) {
228
+ // get minimum altitude from which the whole map is visible
229
+ var radius = ellipsoid.getMaximumRadius();
230
+ var frustum = camera.frustum;
231
+ var maxStartAlt = getAltitude(frustum, Math.PI * radius, CesiumMath.PI_OVER_TWO * radius);
232
+
233
+ var points;
234
+ var altitude;
235
+ var incrementPercentage = 0.5;
236
+ if (start.z > maxStartAlt) {
237
+ altitude = 0.6 * maxStartAlt;
238
+ } else {
239
+ var diff = start.subtract(end);
240
+ altitude = getAltitude(frustum, Math.abs(diff.y), Math.abs(diff.x));
241
+ }
242
+
243
+ var aboveEnd = end.clone();
244
+ aboveEnd.z = altitude;
245
+ var afterStart = start.clone();
246
+ afterStart.z = altitude;
247
+
248
+ var middle;
249
+ if (end.z > maxStartAlt) {
250
+ middle = start.subtract(end).multiplyByScalar(0.5).add(end);
251
+
252
+ points = [{
253
+ point : start
254
+ }, {
255
+ point : middle
256
+ }, {
257
+ point : end
258
+ }];
259
+ } else if (start.z > maxStartAlt) {
260
+ middle = start.subtract(aboveEnd).multiplyByScalar(0.5).add(aboveEnd);
261
+
262
+ points = [{
263
+ point : start
264
+ }, {
265
+ point : middle
266
+ }, {
267
+ point : end
268
+ }];
269
+ } else {
270
+ points = [{
271
+ point : start
272
+ }];
273
+
274
+ var v = afterStart.subtract(aboveEnd);
275
+ var distance = v.magnitude();
276
+ Cartesian3.normalize(v, v);
277
+
278
+ var increment = incrementPercentage * distance;
279
+ var startCondition = distance - increment;
280
+ for ( var i = startCondition; i > 0.0; i = i - increment) {
281
+ points.push({
282
+ point : v.multiplyByScalar(i).add(aboveEnd)
283
+ });
284
+ }
285
+
286
+ points.push({
287
+ point : end
288
+ });
289
+ }
290
+
291
+ var scalar = duration / (points.length - 1);
292
+ for ( var k = 0; k < points.length; ++k) {
293
+ points[k].time = k * scalar;
294
+ }
295
+
296
+ return createSpline(points);
297
+ }
298
+
299
+ function createOrientations2D(camera, points, endDirection, endUp) {
300
+ points[0].orientation = createQuaternion(camera.direction, camera.up);
301
+
302
+ var point;
303
+ var direction;
304
+ var right;
305
+ var up;
306
+
307
+ var length = points.length - 1;
308
+ for (var i = 1; i < length; ++i) {
309
+ point = points[i];
310
+ direction = Cartesian3.UNIT_Z.negate();
311
+ right = direction.cross(Cartesian3.UNIT_Y).normalize();
312
+ up = right.cross(direction);
313
+ point.orientation = createQuaternion(direction, up);
314
+ }
315
+
316
+ point = points[length];
317
+ if (typeof endDirection !== 'undefined' && typeof endUp !== 'undefined') {
318
+ point.orientation = createQuaternion(endDirection, endUp);
319
+ } else {
320
+ direction = Cartesian3.UNIT_Z.negate();
321
+ right = direction.cross(Cartesian3.UNIT_Y).normalize();
322
+ up = right.cross(direction);
323
+ point.orientation = createQuaternion(direction, up);
324
+ }
325
+
326
+ return new OrientationInterpolator(points);
327
+ }
328
+
329
+ function createUpdateCV(frameState, destination, duration, direction, up) {
330
+ var camera = frameState.camera;
331
+ var ellipsoid = frameState.scene2D.projection.getEllipsoid();
332
+
333
+ var path = createPath2D(camera, ellipsoid, camera.position.clone(), destination, duration);
334
+ var orientations = createOrientations2D(camera, path.getControlPoints(), direction, up);
335
+
336
+ var update = function(value) {
337
+ var time = value.time;
338
+ var orientation = orientations.evaluate(time);
339
+ var rotationMatrix = Matrix3.fromQuaternion(orientation);
340
+
341
+ camera.position = path.evaluate(time);
342
+ camera.right = rotationMatrix.getRow(0);
343
+ camera.up = rotationMatrix.getRow(1);
344
+ camera.direction = rotationMatrix.getRow(2).negate();
345
+ };
346
+
347
+ return update;
348
+ }
349
+
350
+ function createUpdate2D(frameState, destination, duration, direction, up) {
351
+ var camera = frameState.camera;
352
+ var ellipsoid = frameState.scene2D.projection.getEllipsoid();
353
+
354
+ var start = camera.position.clone();
355
+ start.z = camera.frustum.right - camera.frustum.left;
356
+
357
+ var path = createPath2D(camera, ellipsoid, start, destination, duration);
358
+ var points = path.getControlPoints();
359
+ var orientations = createOrientations2D(camera, points, Cartesian3.UNIT_Z.negate(), up);
360
+
361
+ var height = camera.position.z;
362
+
363
+ var update = function(value) {
364
+ var time = value.time;
365
+ var orientation = orientations.evaluate(time);
366
+ var rotationMatrix = Matrix3.fromQuaternion(orientation);
367
+
368
+ camera.position = path.evaluate(time);
369
+ var zoom = camera.position.z;
370
+ camera.position.z = height;
371
+
372
+ camera.right = rotationMatrix.getRow(0);
373
+ camera.up = rotationMatrix.getRow(1);
374
+ camera.direction = rotationMatrix.getRow(2).negate();
375
+
376
+ var frustum = camera.frustum;
377
+ var ratio = frustum.top / frustum.right;
378
+
379
+ var incrementAmount = (zoom - (frustum.right - frustum.left)) * 0.5;
380
+ frustum.right += incrementAmount;
381
+ frustum.left -= incrementAmount;
382
+ frustum.top = ratio * frustum.right;
383
+ frustum.bottom = -frustum.top;
384
+ };
385
+
386
+ return update;
387
+ }
388
+
389
+ /**
390
+ * Creates an animation to fly the camera from it's current position to a position given by a Cartesian. All arguments should
391
+ * be in the current camera reference frame.
392
+ *
393
+ * @param {FrameState} frameState The current frame state.
394
+ * @param {Cartesian3} description.destination The final position of the camera.
395
+ * @param {Cartesian3} [description.direction] The final direction of the camera. By default, the direction will point towards the center of the frame in 3D and in the negative z direction in Columbus view or 2D.
396
+ * @param {Cartesian3} [description.up] The final up direction. By default, the up direction will point towards local north in 3D and in the positive y direction in Columbus view or 2D.
397
+ * @param {Number} [description.duration=3000] The duration of the animation in milliseconds.
398
+ * @param {Function} [onComplete] The function to execute when the animation has completed.
399
+ *
400
+ * @returns {Object} An Object that can be added to an {@link AnimationCollection} for animation.
401
+ *
402
+ * @exception {DeveloperError} frameState is required.
403
+ * @exception {DeveloperError} description.destination is required.
404
+ *
405
+ * @see Scene#getFrameState
406
+ * @see Scene#getAnimationCollection
407
+ * @see CameraFlightPath#createAnimationCartographic
408
+ */
409
+ CameraFlightPath.createAnimation = function(frameState, description) {
410
+ description = defaultValue(description, {});
411
+ var destination = description.destination;
412
+ var direction = description.direction;
413
+ var up = description.up;
414
+
415
+ if (typeof frameState === 'undefined') {
416
+ throw new DeveloperError('frameState is required.');
417
+ }
418
+
419
+ if (typeof destination === 'undefined') {
420
+ throw new DeveloperError('destination is required.');
421
+ }
422
+
423
+ var duration = defaultValue(description.duration, 3000.0);
424
+ var onComplete = description.onComplete;
425
+
426
+ var update;
427
+ if (frameState.mode === SceneMode.SCENE3D) {
428
+ update = createUpdate3D(frameState, destination, duration, direction, up);
429
+ } else if (frameState.mode === SceneMode.SCENE2D) {
430
+ update = createUpdate2D(frameState, destination, duration, direction, up);
431
+ } else {
432
+ update = createUpdateCV(frameState, destination, duration, direction, up);
433
+ }
434
+
435
+ return {
436
+ duration : duration,
437
+ easingFunction : Tween.Easing.Sinusoidal.InOut,
438
+ startValue : {
439
+ time : 0.0
440
+ },
441
+ stopValue : {
442
+ time : duration
443
+ },
444
+ onUpdate : update,
445
+ onComplete : onComplete
446
+ };
447
+ };
448
+
449
+ /**
450
+ * Creates an animation to fly the camera from it's current position to a position given by a Cartographic. Keep in mind that the animation
451
+ * will happen in the camera's current reference frame.
452
+ *
453
+ * @param {FrameState} frameState The current frame state.
454
+ * @param {Cartesian3} description.destination The final position of the camera.
455
+ * @param {Cartesian3} [description.direction] The final direction of the camera. By default, the direction will point towards the center of the frame in 3D and in the negative z direction in Columbus view or 2D.
456
+ * @param {Cartesian3} [description.up] The final up direction. By default, the up direction will point towards local north in 3D and in the positive y direction in Columbus view or 2D.
457
+ * @param {Number} [description.duration=3000] The duration of the animation in milliseconds.
458
+ * @param {Function} [onComplete] The function to execute when the animation has completed.
459
+ *
460
+ * @returns {Object} An Object that can be added to an {@link AnimationCollection} for animation.
461
+ *
462
+ * @exception {DeveloperError} frameState is required.
463
+ * @exception {DeveloperError} description.destination is required.
464
+ *
465
+ * @see Scene#getFrameState
466
+ * @see Scene#getAnimationCollection
467
+ * @see CameraFlightPath#createAnimationCartographic
468
+ */
469
+ CameraFlightPath.createAnimationCartographic = function(frameState, description) {
470
+ description = defaultValue(description, {});
471
+ var destination = description.destination;
472
+
473
+ if (typeof frameState === 'undefined') {
474
+ throw new DeveloperError('frameState is required.');
475
+ }
476
+
477
+ if (typeof destination === 'undefined') {
478
+ throw new DeveloperError('description.destination is required.');
479
+ }
480
+
481
+ var end;
482
+ var projection = frameState.scene2D.projection;
483
+ if (frameState.mode === SceneMode.SCENE3D) {
484
+ var ellipsoid = projection.getEllipsoid();
485
+ end = ellipsoid.cartographicToCartesian(destination);
486
+ } else {
487
+ end = projection.project(destination);
488
+ }
489
+
490
+ description.destination = end;
491
+ return this.createAnimation(frameState, description);
492
+ };
493
+
494
+ return CameraFlightPath;
495
+ });