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,137 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/Event',
4
+ '../Core/TimeInterval',
5
+ '../Core/Iso8601',
6
+ '../Core/DeveloperError',
7
+ './DynamicObject'
8
+ ], function(
9
+ Event,
10
+ TimeInterval,
11
+ Iso8601,
12
+ DeveloperError,
13
+ DynamicObject) {
14
+ "use strict";
15
+
16
+ /**
17
+ * A collection of DynamicObject instances.
18
+ * @alias DynamicObjectCollection
19
+ * @constructor
20
+ */
21
+ var DynamicObjectCollection = function() {
22
+ this._hash = {};
23
+ this._array = [];
24
+
25
+ /**
26
+ * The CompositeDynamicObjectCollection, if any, that this collection is in.
27
+ */
28
+ this.compositeCollection = undefined;
29
+
30
+ /**
31
+ * An {@link Event} that is fired whenever DynamicObjects in the collection have properties added.
32
+ */
33
+ this.objectPropertiesChanged = new Event();
34
+
35
+ /**
36
+ * An {@link Event} that is fired whenever DynamicObjects are removed from the collection.
37
+ */
38
+ this.objectsRemoved = new Event();
39
+ };
40
+
41
+ /**
42
+ * Computes the maximum availability of the DynamicObjects in the collection.
43
+ * If the collection contains a mix of infinitely available data and non-infinite data,
44
+ * It will return the interval pertaining to the non-infinite data only. If all
45
+ * data is infinite, an infinite interval will be returned.
46
+ *
47
+ * @returns {TimeInterval} The availability of DynamicObjects in the collection.
48
+ */
49
+ DynamicObjectCollection.prototype.computeAvailability = function() {
50
+ var startTime = Iso8601.MAXIMUM_VALUE;
51
+ var stopTime = Iso8601.MINIMUM_VALUE;
52
+ var i;
53
+ var len;
54
+ var object;
55
+ var dynamicObjects = this._array;
56
+ for (i = 0, len = dynamicObjects.length; i < len; i++) {
57
+ object = dynamicObjects[i];
58
+ var availability = object.availability;
59
+ if (typeof availability !== 'undefined') {
60
+ var start = availability.start;
61
+ var stop = availability.stop;
62
+ if (start.lessThan(startTime) && !start.equals(Iso8601.MINIMUM_VALUE)) {
63
+ startTime = object.availability.start;
64
+ }
65
+ if (stop.greaterThan(stopTime) && !stop.equals(Iso8601.MAXIMUM_VALUE)) {
66
+ stopTime = object.availability.stop;
67
+ }
68
+ }
69
+ }
70
+
71
+ if (startTime === Iso8601.MAXIMUM_VALUE) {
72
+ startTime = Iso8601.MINIMUM_VALUE;
73
+ }
74
+ if (stopTime === Iso8601.MINIMUM_VALUE) {
75
+ stopTime = Iso8601.MAXIMUM_VALUE;
76
+ }
77
+ return new TimeInterval(startTime, stopTime, true, true);
78
+ };
79
+
80
+ /**
81
+ * Gets an object with the specified id.
82
+ * @param {Object} id The id of the object to retrieve.
83
+ *
84
+ * @exception {DeveloperError} id is required.
85
+ *
86
+ * @returns The DynamicObject with the provided id, or undefined if no such object exists.
87
+ */
88
+ DynamicObjectCollection.prototype.getObject = function(id) {
89
+ if (typeof id === 'undefined') {
90
+ throw new DeveloperError('id is required.');
91
+ }
92
+ return this._hash[id];
93
+ };
94
+
95
+ /**
96
+ * Gets the array of DynamicObject instances in this composite collection.
97
+ * @returns {Array} the array of DynamicObject instances in this composite collection.
98
+ */
99
+ DynamicObjectCollection.prototype.getObjects = function() {
100
+ return this._array;
101
+ };
102
+
103
+ /**
104
+ * Gets an object with the specified id or creates it and adds it to the collection if it does not exist.
105
+ * @param {Object} id The id of the object to retrieve.
106
+ *
107
+ * @exception {DeveloperError} id is required.
108
+ *
109
+ * @returns The DynamicObject with the provided id.
110
+ */
111
+ DynamicObjectCollection.prototype.getOrCreateObject = function(id) {
112
+ if (typeof id === 'undefined') {
113
+ throw new DeveloperError('id is required.');
114
+ }
115
+ var obj = this._hash[id];
116
+ if (!obj) {
117
+ obj = new DynamicObject(id);
118
+ this._hash[id] = obj;
119
+ this._array.push(obj);
120
+ }
121
+ return obj;
122
+ };
123
+
124
+ /**
125
+ * Removes all objects from the collection.
126
+ */
127
+ DynamicObjectCollection.prototype.clear = function() {
128
+ var removedObjects = this._array;
129
+ this._hash = {};
130
+ this._array = [];
131
+ if (removedObjects.length > 0) {
132
+ this.objectsRemoved.raiseEvent(this, removedObjects);
133
+ }
134
+ };
135
+
136
+ return DynamicObjectCollection;
137
+ });
@@ -0,0 +1,299 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/defaultValue',
4
+ '../Core/DeveloperError',
5
+ '../Core/Math',
6
+ '../Core/Cartesian2',
7
+ '../Core/Cartesian3',
8
+ '../Core/Cartesian4',
9
+ '../Core/Cartographic',
10
+ '../Core/Quaternion',
11
+ '../Core/Matrix3',
12
+ '../Core/Ellipsoid',
13
+ '../Core/Transforms',
14
+ '../Scene/CameraColumbusViewMode',
15
+ '../Scene/SceneMode'
16
+ ], function(
17
+ defaultValue,
18
+ DeveloperError,
19
+ CesiumMath,
20
+ Cartesian2,
21
+ Cartesian3,
22
+ Cartesian4,
23
+ Cartographic,
24
+ Quaternion,
25
+ Matrix3,
26
+ Ellipsoid,
27
+ Transforms,
28
+ CameraColumbusViewMode,
29
+ SceneMode) {
30
+ "use strict";
31
+
32
+ function update2D(that, camera, objectChanged, offset, positionProperty, time, projection) {
33
+ var viewDistance;
34
+ var scene = that.scene;
35
+ var modeChanged = scene.mode !== that._mode;
36
+
37
+ if (modeChanged) {
38
+ that._mode = scene.mode;
39
+ that._screenSpaceCameraController.enableTranslate = false;
40
+ viewDistance = offset.magnitude();
41
+ } else if (objectChanged) {
42
+ viewDistance = offset.magnitude();
43
+ } else {
44
+ viewDistance = camera.position.z;
45
+ }
46
+
47
+ var cartographic = positionProperty.getValueCartographic(time, that._lastCartographic);
48
+ if (typeof cartographic !== 'undefined') {
49
+ //We are assigning the position of the camera, not of the object, so modify the height appropriately.
50
+ cartographic.height = viewDistance;
51
+ if (objectChanged || modeChanged) {
52
+ camera.controller.setPositionCartographic(cartographic);
53
+
54
+ //Set rotation to match offset.
55
+ Cartesian3.normalize(offset, camera.up);
56
+ Cartesian3.negate(camera.up, camera.up);
57
+ Cartesian3.cross(camera.direction, camera.up, camera.right);
58
+
59
+ //z is always zero in 2D for up and right
60
+ camera.up.z = 0;
61
+ Cartesian3.normalize(camera.up, camera.up);
62
+ camera.right.z = 0;
63
+ Cartesian3.normalize(camera.right, camera.right);
64
+
65
+ //Remember what up was when we started, so we
66
+ //can detect rotation when we are finished.
67
+ Cartesian2.clone(camera.right, that._first2dUp);
68
+ } else {
69
+ camera.position = projection.project(cartographic);
70
+ }
71
+
72
+ //Store last view distance and up vector.
73
+ that._lastDistance = camera.frustum.right - camera.frustum.left;
74
+ Cartesian2.clone(camera.right, that._last2dUp);
75
+ }
76
+ }
77
+
78
+ var update3DTransform;
79
+ function update3D(that, camera, objectChanged, offset, positionProperty, time, ellipsoid) {
80
+ update3DController(that, camera, objectChanged, offset);
81
+
82
+ var cartesian = positionProperty.getValueCartesian(time, that._lastCartesian);
83
+ if (typeof cartesian !== 'undefined') {
84
+ camera.transform = Transforms.eastNorthUpToFixedFrame(cartesian, ellipsoid, update3DTransform);
85
+ that._screenSpaceCameraController.setEllipsoid(Ellipsoid.UNIT_SPHERE);
86
+
87
+ var position = camera.position;
88
+ Cartesian3.clone(position, that._lastOffset);
89
+ that._lastDistance = Cartesian3.magnitude(position);
90
+ }
91
+ }
92
+
93
+ var updateColumbusCartesian4 = new Cartesian4(0.0, 0.0, 0.0, 1.0);
94
+ function updateColumbus(that, camera, objectChanged, offset, positionProperty, time, ellipsoid, projection) {
95
+ update3DController(that, camera, objectChanged, offset);
96
+
97
+ //The swizzling here is intentional because ColumbusView uses a different coordinate system.
98
+ var cartographic = positionProperty.getValueCartographic(time, that._lastCartographic);
99
+ if (typeof cartographic !== 'undefined') {
100
+ var projectedPosition = projection.project(cartographic);
101
+ updateColumbusCartesian4.x = projectedPosition.z;
102
+ updateColumbusCartesian4.y = projectedPosition.x;
103
+ updateColumbusCartesian4.z = projectedPosition.y;
104
+
105
+ var tranform = camera.transform;
106
+ tranform.setColumn(3, updateColumbusCartesian4, tranform);
107
+
108
+ var controller = that._screenSpaceCameraController;
109
+ controller.enableTranslate = false;
110
+ controller.setEllipsoid(Ellipsoid.UNIT_SPHERE);
111
+ controller.columbusViewMode = CameraColumbusViewMode.LOCKED;
112
+
113
+ camera.controller.constrainedAxis = Cartesian3.UNIT_Z;
114
+
115
+ var position = camera.position;
116
+ Cartesian3.clone(position, that._lastOffset);
117
+ that._lastDistance = Cartesian3.magnitude(position);
118
+ }
119
+ }
120
+
121
+ var update3DControllerQuaternion = new Quaternion();
122
+ var update3DControllerMatrix3 = new Matrix3();
123
+
124
+ function update3DController(that, camera, objectChanged, offset) {
125
+ var scene = that.scene;
126
+ that._screenSpaceCameraController.enableTilt = false;
127
+ camera.controller.constrainedAxis = Cartesian3.UNIT_Z;
128
+
129
+ if (objectChanged) {
130
+ camera.controller.lookAt(offset, Cartesian3.ZERO, Cartesian3.UNIT_Z);
131
+ } else if (scene.mode !== that._mode) {
132
+ that._mode = scene.mode;
133
+
134
+ //If we're switching from 2D and any rotation was applied to the camera,
135
+ //apply that same rotation to the last offset used in 3D or Columbus view.
136
+ var first2dUp = that._first2dUp;
137
+ var last2dUp = that._last2dUp;
138
+ if (!Cartesian2.equals(first2dUp, last2dUp)) {
139
+ var startTheta = Math.acos(first2dUp.x);
140
+ if (first2dUp.y < 0) {
141
+ startTheta = CesiumMath.TWO_PI - startTheta;
142
+ }
143
+ var endTheta = Math.acos(last2dUp.x);
144
+ if (last2dUp.y < 0) {
145
+ endTheta = CesiumMath.TWO_PI - endTheta;
146
+ }
147
+ last2dUp.x = 0.0;
148
+ last2dUp.y = 0.0;
149
+ first2dUp.x = 0.0;
150
+ first2dUp.y = 0.0;
151
+
152
+ var theta = startTheta - endTheta;
153
+ var rotation = Quaternion.fromAxisAngle(Cartesian3.UNIT_Z, theta, update3DControllerQuaternion);
154
+ Matrix3.fromQuaternion(rotation, update3DControllerMatrix3).multiplyByVector(offset, offset);
155
+ }
156
+ offset.normalize(offset).multiplyByScalar(that._lastDistance, offset);
157
+ camera.controller.lookAt(offset, Cartesian3.ZERO, Cartesian3.UNIT_Z);
158
+ }
159
+ }
160
+
161
+ var dynamicObjectViewDefaultOffset = new Cartesian3(10000, -10000, 10000);
162
+ var dynamicObjectViewCartesian3Scratch = new Cartesian3();
163
+
164
+ /**
165
+ * A utility object for tracking an object with the camera.
166
+ * @alias DynamicObject
167
+ * @constructor
168
+ *
169
+ * @param {DynamicObject} dynamicObject The object to track with the camera.
170
+ * @param {Scene} scene The scene to use.
171
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid to use for orienting the camera.
172
+ */
173
+ var DynamicObjectView = function(dynamicObject, scene, ellipsoid) {
174
+ /**
175
+ * The object to track with the camera.
176
+ * @type DynamicObject
177
+ */
178
+ this.dynamicObject = dynamicObject;
179
+
180
+ /**
181
+ * The scene in which to track the object.
182
+ * @type Scene
183
+ */
184
+ this.scene = scene;
185
+ this._lastScene = undefined;
186
+
187
+ /**
188
+ * The ellipsoid to use for orienting the camera.
189
+ * @type Ellipsoid
190
+ */
191
+ this.ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);
192
+
193
+ //Shadow copies of the objects so we can detect changes.
194
+ this._lastDynamicObject = undefined;
195
+ this._mode = undefined;
196
+
197
+ //Re-usable objects to be used for retrieving position.
198
+ this._lastCartesian = new Cartesian3();
199
+ this._lastCartographic = new Cartographic();
200
+
201
+ //Current distance of dynamicObject from camera so we can maintain view distance across scene modes.
202
+ this._lastDistance = undefined;
203
+
204
+ //Last viewing offset in 3D/Columbus view, this way we can restore to a sensible view across scene modes.
205
+ this._lastOffset = new Cartesian3();
206
+
207
+ //Scratch value for calculating offsets
208
+ this._offsetScratch = new Cartesian3();
209
+
210
+ //Tracks camera up so that we can detect 2D camera rotation and modify the 3D/Columbus view to match when switching modes.
211
+ this._first2dUp = new Cartesian2();
212
+ this._last2dUp = new Cartesian2();
213
+ };
214
+
215
+ /**
216
+ * Should be called each animation frame to update the camera
217
+ * to the latest settings.
218
+ * @param {JulianDate} time The current animation time.
219
+ *
220
+ * @exception {DeveloperError} time is required.
221
+ * @exception {DeveloperError} DynamicObjectView.scene is required.
222
+ * @exception {DeveloperError} DynamicObjectView.dynamicObject is required.
223
+ * @exception {DeveloperError} DynamicObjectView.ellipsoid is required.
224
+ * @exception {DeveloperError} DynamicObjectView.dynamicObject.position is required.
225
+ */
226
+ DynamicObjectView.prototype.update = function(time) {
227
+ if (typeof time === 'undefined') {
228
+ throw new DeveloperError('time is required.');
229
+ }
230
+
231
+ var scene = this.scene;
232
+ if (typeof scene === 'undefined') {
233
+ throw new DeveloperError('DynamicObjectView.scene is required.');
234
+ }
235
+
236
+ if (scene !== this._lastScene) {
237
+ this._lastScene = scene;
238
+ this._screenSpaceCameraController = scene.getScreenSpaceCameraController();
239
+ }
240
+
241
+ var dynamicObject = this.dynamicObject;
242
+ if (typeof dynamicObject === 'undefined') {
243
+ throw new DeveloperError('DynamicObjectView.dynamicObject is required.');
244
+ }
245
+
246
+ var ellipsoid = this.ellipsoid;
247
+ if (typeof ellipsoid === 'undefined') {
248
+ throw new DeveloperError('DynamicObjectView.ellipsoid is required.');
249
+ }
250
+
251
+ var positionProperty = this.dynamicObject.position;
252
+ if (typeof positionProperty === 'undefined') {
253
+ throw new DeveloperError('dynamicObject.position is required.');
254
+ }
255
+
256
+ var objectChanged = dynamicObject !== this._lastDynamicObject;
257
+
258
+ //Determine what the current camera offset should be, this is used
259
+ //to either set the default view when a new object is selected or
260
+ //maintain a similar view when changing scene modes.
261
+ var offset = this._offsetScratch;
262
+ if (objectChanged) {
263
+ this._lastDynamicObject = dynamicObject;
264
+
265
+ var viewFromProperty = this.dynamicObject.viewFrom;
266
+ if (typeof viewFromProperty === 'undefined' || typeof viewFromProperty.getValue(time, offset) === 'undefined') {
267
+ Cartesian3.clone(dynamicObjectViewDefaultOffset, offset);
268
+ }
269
+
270
+ //Reset object-based cached values.
271
+ var first2dUp = this._first2dUp;
272
+ var last2dUp = this._last2dUp;
273
+ first2dUp.x = first2dUp.y = 0;
274
+ last2dUp.x = last2dUp.y = 0;
275
+ Cartesian3.clone(offset, this._lastOffset);
276
+ this._lastDistance = offset.magnitude();
277
+
278
+ //If looking straight down, move the camera slightly south the avoid gimbal lock.
279
+ if (Cartesian3.equals(offset.normalize(dynamicObjectViewCartesian3Scratch), Cartesian3.UNIT_Z)) {
280
+ offset.y -= 0.01;
281
+ }
282
+ } else if (typeof this._lastOffset !== 'undefined') {
283
+ offset = this._lastOffset;
284
+ } else {
285
+ Cartesian3.clone(dynamicObjectViewDefaultOffset, offset);
286
+ }
287
+
288
+ var mode = scene.mode;
289
+ if (mode === SceneMode.SCENE2D) {
290
+ update2D(this, scene.getCamera(), objectChanged, offset, positionProperty, time, scene.scene2D.projection);
291
+ } else if (mode === SceneMode.SCENE3D) {
292
+ update3D(this, scene.getCamera(), objectChanged, offset, positionProperty, time, ellipsoid);
293
+ } else if (mode === SceneMode.COLUMBUS_VIEW) {
294
+ updateColumbus(this, scene.getCamera(), objectChanged, offset, positionProperty, time, ellipsoid, scene.scene2D.projection);
295
+ }
296
+ };
297
+
298
+ return DynamicObjectView;
299
+ });
@@ -0,0 +1,214 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/TimeInterval',
4
+ '../Core/defaultValue',
5
+ './CzmlBoolean',
6
+ './CzmlNumber',
7
+ './CzmlColor',
8
+ './DynamicProperty'],
9
+ function(
10
+ TimeInterval,
11
+ defaultValue,
12
+ CzmlBoolean,
13
+ CzmlNumber,
14
+ CzmlColor,
15
+ DynamicProperty) {
16
+ "use strict";
17
+
18
+ /**
19
+ * Represents a time-dynamic path, typically used in conjunction with DynamicPathVisualizer and
20
+ * DynamicObjectCollection to visualize CZML.
21
+ *
22
+ * @alias DynamicPath
23
+ * @constructor
24
+ *
25
+ * @see DynamicObject
26
+ * @see DynamicProperty
27
+ * @see DynamicObjectCollection
28
+ * @see DynamicPathVisualizer
29
+ * @see VisualizerCollection
30
+ * @see Polyline
31
+ * @see CzmlDefaults
32
+ */
33
+ var DynamicPath = function() {
34
+ /**
35
+ * A DynamicProperty of type CzmlColor which determines the line's color.
36
+ * @type DynamicProperty
37
+ */
38
+ this.color = undefined;
39
+ /**
40
+ * A DynamicProperty of type CzmlColor which determines the line's outline color.
41
+ * @type DynamicProperty
42
+ */
43
+ this.outlineColor = undefined;
44
+ /**
45
+ * A DynamicProperty of type CzmlNumber which determines the line's outline width.
46
+ * @type DynamicProperty
47
+ */
48
+ this.outlineWidth = undefined;
49
+ /**
50
+ * A DynamicProperty of type CzmlBoolean which determines the lines's visibility.
51
+ * @type DynamicProperty
52
+ */
53
+ this.show = undefined;
54
+ /**
55
+ * A DynamicProperty of type CzmlNumber which determines the line's width.
56
+ * @type DynamicProperty
57
+ */
58
+ this.width = undefined;
59
+ /**
60
+ * A DynamicProperty of type CzmlNumber which determines the number of seconds in front of the object to show.
61
+ * @type DynamicProperty
62
+ */
63
+ this.leadTime = undefined;
64
+ /**
65
+ * A DynamicProperty of type CzmlNumber which determines the the number of seconds behind the object to show.
66
+ * @type DynamicProperty
67
+ */
68
+ this.trailTime = undefined;
69
+ };
70
+
71
+ /**
72
+ * Processes a single CZML packet and merges its data into the provided DynamicObject's path.
73
+ * If the DynamicObject does not have a path, one is created. This method is not
74
+ * normally called directly, but is part of the array of CZML processing functions that is
75
+ * passed into the DynamicObjectCollection constructor.
76
+ *
77
+ * @param {DynamicObject} dynamicObject The DynamicObject which will contain the path data.
78
+ * @param {Object} packet The CZML packet to process.
79
+ * @returns {Boolean} true if any new properties were created while processing the packet, false otherwise.
80
+ *
81
+ * @see DynamicObject
82
+ * @see DynamicProperty
83
+ * @see DynamicObjectCollection
84
+ * @see CzmlDefaults#updaters
85
+ */
86
+ DynamicPath.processCzmlPacket = function(dynamicObject, packet) {
87
+ var pathData = packet.path;
88
+ if (typeof pathData === 'undefined') {
89
+ return false;
90
+ }
91
+
92
+ var pathUpdated = false;
93
+ var path = dynamicObject.path;
94
+ pathUpdated = typeof path === 'undefined';
95
+ if (pathUpdated) {
96
+ dynamicObject.path = path = new DynamicPath();
97
+ }
98
+
99
+ var interval = pathData.interval;
100
+ if (typeof interval !== 'undefined') {
101
+ interval = TimeInterval.fromIso8601(interval);
102
+ }
103
+
104
+ if (typeof pathData.color !== 'undefined') {
105
+ var color = path.color;
106
+ if (typeof color === 'undefined') {
107
+ path.color = color = new DynamicProperty(CzmlColor);
108
+ pathUpdated = true;
109
+ }
110
+ color.processCzmlIntervals(pathData.color, interval);
111
+ }
112
+
113
+ if (typeof pathData.width !== 'undefined') {
114
+ var width = path.width;
115
+ if (typeof width === 'undefined') {
116
+ path.width = width = new DynamicProperty(CzmlNumber);
117
+ pathUpdated = true;
118
+ }
119
+ width.processCzmlIntervals(pathData.width, interval);
120
+ }
121
+
122
+ if (typeof pathData.outlineColor !== 'undefined') {
123
+ var outlineColor = path.outlineColor;
124
+ if (typeof outlineColor === 'undefined') {
125
+ path.outlineColor = outlineColor = new DynamicProperty(CzmlColor);
126
+ pathUpdated = true;
127
+ }
128
+ outlineColor.processCzmlIntervals(pathData.outlineColor, interval);
129
+ }
130
+
131
+ if (typeof pathData.outlineWidth !== 'undefined') {
132
+ var outlineWidth = path.outlineWidth;
133
+ if (typeof outlineWidth === 'undefined') {
134
+ path.outlineWidth = outlineWidth = new DynamicProperty(CzmlNumber);
135
+ pathUpdated = true;
136
+ }
137
+ outlineWidth.processCzmlIntervals(pathData.outlineWidth, interval);
138
+ }
139
+
140
+ if (typeof pathData.show !== 'undefined') {
141
+ var show = path.show;
142
+ if (typeof show === 'undefined') {
143
+ path.show = show = new DynamicProperty(CzmlBoolean);
144
+ pathUpdated = true;
145
+ }
146
+ show.processCzmlIntervals(pathData.show, interval);
147
+ }
148
+
149
+ if (typeof pathData.leadTime !== 'undefined') {
150
+ var leadTime = path.leadTime;
151
+ if (typeof leadTime === 'undefined') {
152
+ path.leadTime = leadTime = new DynamicProperty(CzmlNumber);
153
+ pathUpdated = true;
154
+ }
155
+ leadTime.processCzmlIntervals(pathData.leadTime, interval);
156
+ }
157
+
158
+ if (typeof pathData.trailTime !== 'undefined') {
159
+ var trailTime = path.trailTime;
160
+ if (typeof trailTime === 'undefined') {
161
+ path.trailTime = trailTime = new DynamicProperty(CzmlNumber);
162
+ pathUpdated = true;
163
+ }
164
+ trailTime.processCzmlIntervals(pathData.trailTime, interval);
165
+ }
166
+
167
+ return pathUpdated;
168
+ };
169
+
170
+ /**
171
+ * Given two DynamicObjects, takes the path properties from the second
172
+ * and assigns them to the first, assuming such a property did not already exist.
173
+ * This method is not normally called directly, but is part of the array of CZML processing
174
+ * functions that is passed into the CompositeDynamicObjectCollection constructor.
175
+ *
176
+ * @param {DynamicObject} targetObject The DynamicObject which will have properties merged onto it.
177
+ * @param {DynamicObject} objectToMerge The DynamicObject containing properties to be merged.
178
+ *
179
+ * @see CzmlDefaults
180
+ */
181
+ DynamicPath.mergeProperties = function(targetObject, objectToMerge) {
182
+ var pathToMerge = objectToMerge.path;
183
+ if (typeof pathToMerge !== 'undefined') {
184
+
185
+ var targetpath = targetObject.path;
186
+ if (typeof targetpath === 'undefined') {
187
+ targetObject.path = targetpath = new DynamicPath();
188
+ }
189
+
190
+ targetpath.color = defaultValue(targetpath.color, pathToMerge.color);
191
+ targetpath.width = defaultValue(targetpath.width, pathToMerge.width);
192
+ targetpath.outlineColor = defaultValue(targetpath.outlineColor, pathToMerge.outlineColor);
193
+ targetpath.outlineWidth = defaultValue(targetpath.outlineWidth, pathToMerge.outlineWidth);
194
+ targetpath.show = defaultValue(targetpath.show, pathToMerge.show);
195
+ targetpath.leadTime = defaultValue(targetpath.leadTime, pathToMerge.leadTime);
196
+ targetpath.trailTime = defaultValue(targetpath.trailTime, pathToMerge.trailTime);
197
+ }
198
+ };
199
+
200
+ /**
201
+ * Given a DynamicObject, undefines the path associated with it.
202
+ * This method is not normally called directly, but is part of the array of CZML processing
203
+ * functions that is passed into the CompositeDynamicObjectCollection constructor.
204
+ *
205
+ * @param {DynamicObject} dynamicObject The DynamicObject to remove the path from.
206
+ *
207
+ * @see CzmlDefaults
208
+ */
209
+ DynamicPath.undefineProperties = function(dynamicObject) {
210
+ dynamicObject.path = undefined;
211
+ };
212
+
213
+ return DynamicPath;
214
+ });