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,799 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ '../Core/defaultValue',
5
+ '../Core/Ellipsoid',
6
+ '../Core/Matrix3',
7
+ '../Core/Matrix4',
8
+ '../Core/Cartesian2',
9
+ '../Core/Cartesian3',
10
+ '../Core/Cartesian4',
11
+ '../Core/EncodedCartesian3',
12
+ '../Core/BoundingRectangle',
13
+ '../Core/Transforms',
14
+ '../Core/computeSunPosition',
15
+ '../Scene/SceneMode'
16
+ ], function(
17
+ DeveloperError,
18
+ defaultValue,
19
+ Ellipsoid,
20
+ Matrix3,
21
+ Matrix4,
22
+ Cartesian2,
23
+ Cartesian3,
24
+ Cartesian4,
25
+ EncodedCartesian3,
26
+ BoundingRectangle,
27
+ Transforms,
28
+ computeSunPosition,
29
+ SceneMode) {
30
+ "use strict";
31
+
32
+ /**
33
+ * DOC_TBA
34
+ *
35
+ * @alias UniformState
36
+ *
37
+ * @internalConstructor
38
+ */
39
+ var UniformState = function() {
40
+ this._viewport = new BoundingRectangle();
41
+ this._viewportDirty = false;
42
+ this._viewportOrthographicMatrix = Matrix4.IDENTITY.clone();
43
+ this._viewportTransformation = Matrix4.IDENTITY.clone();
44
+
45
+ this._model = Matrix4.IDENTITY.clone();
46
+ this._view = Matrix4.IDENTITY.clone();
47
+ this._inverseView = Matrix4.IDENTITY.clone();
48
+ this._projection = Matrix4.IDENTITY.clone();
49
+ this._infiniteProjection = Matrix4.IDENTITY.clone();
50
+ this._entireFrustum = new Cartesian2();
51
+
52
+ this._frameNumber = 1.0;
53
+ this._time = undefined;
54
+ this._temeToPseudoFixed = Matrix3.IDENTITY.clone();
55
+
56
+ // Derived members
57
+ this._inverseModelDirty = true;
58
+ this._inverseModel = new Matrix4();
59
+
60
+ this._viewRotation = new Matrix3();
61
+ this._inverseViewRotation = new Matrix3();
62
+
63
+ this._inverseProjectionDirty = true;
64
+ this._inverseProjection = new Matrix4();
65
+
66
+ this._modelViewDirty = true;
67
+ this._modelView = new Matrix4();
68
+
69
+ this._modelViewRelativeToEyeDirty = true;
70
+ this._modelViewRelativeToEye = new Matrix4();
71
+
72
+ this._inverseModelViewDirty = true;
73
+ this._inverseModelView = new Matrix4();
74
+
75
+ this._viewProjectionDirty = true;
76
+ this._viewProjection = new Matrix4();
77
+
78
+ this._modelViewProjectionDirty = true;
79
+ this._modelViewProjection = new Matrix4();
80
+
81
+ this._modelViewProjectionRelativeToEyeDirty = true;
82
+ this._modelViewProjectionRelativeToEye = new Matrix4();
83
+
84
+ this._modelViewInfiniteProjectionDirty = true;
85
+ this._modelViewInfiniteProjection = new Matrix4();
86
+
87
+ this._normalDirty = true;
88
+ this._normal = new Matrix3();
89
+
90
+ this._inverseNormalDirty = true;
91
+ this._inverseNormal = new Matrix3();
92
+
93
+ this._encodedCameraPositionMCDirty = true;
94
+ this._encodedCameraPositionMC = new EncodedCartesian3();
95
+ this._cameraPosition = new Cartesian3();
96
+
97
+ this._sunDirectionWC = new Cartesian3();
98
+ this._sunDirectionEC = new Cartesian3();
99
+ this._moonDirectionEC = new Cartesian3();
100
+ };
101
+
102
+ function setView(uniformState, matrix) {
103
+ Matrix4.clone(matrix, uniformState._view);
104
+ Matrix4.getRotation(matrix, uniformState._viewRotation);
105
+
106
+ uniformState._modelViewDirty = true;
107
+ uniformState._modelViewRelativeToEyeDirty = true;
108
+ uniformState._inverseModelViewDirty = true;
109
+ uniformState._viewProjectionDirty = true;
110
+ uniformState._modelViewProjectionDirty = true;
111
+ uniformState._modelViewProjectionRelativeToEyeDirty = true;
112
+ uniformState._modelViewInfiniteProjectionDirty = true;
113
+ uniformState._normalDirty = true;
114
+ uniformState._inverseNormalDirty = true;
115
+ }
116
+
117
+ function setInverseView(uniformState, matrix) {
118
+ Matrix4.clone(matrix, uniformState._inverseView);
119
+ Matrix4.getRotation(matrix, uniformState._inverseViewRotation);
120
+ }
121
+
122
+ function setProjection(uniformState, matrix) {
123
+ Matrix4.clone(matrix, uniformState._projection);
124
+
125
+ uniformState._inverseProjectionDirty = true;
126
+ uniformState._viewProjectionDirty = true;
127
+ uniformState._modelViewProjectionDirty = true;
128
+ uniformState._modelViewProjectionRelativeToEyeDirty = true;
129
+ }
130
+
131
+ function setInfiniteProjection(uniformState, matrix) {
132
+ Matrix4.clone(matrix, uniformState._infiniteProjection);
133
+
134
+ uniformState._modelViewInfiniteProjectionDirty = true;
135
+ }
136
+
137
+ function setCameraPosition(uniformState, position) {
138
+ Cartesian3.clone(position, uniformState._cameraPosition);
139
+ uniformState._encodedCameraPositionMCDirty = true;
140
+ }
141
+
142
+ var sunPositionWC = new Cartesian3();
143
+ var sunPositionScratch = new Cartesian3();
144
+
145
+ function setSunAndMoonDirections(uniformState, frameState) {
146
+ if (frameState.mode === SceneMode.SCENE3D) {
147
+ computeSunPosition(frameState.time, sunPositionWC);
148
+
149
+ Cartesian3.normalize(sunPositionWC, uniformState._sunDirectionWC);
150
+ Matrix3.multiplyByVector(uniformState._viewRotation, sunPositionWC, sunPositionScratch);
151
+ Cartesian3.normalize(sunPositionScratch, uniformState._sunDirectionEC);
152
+
153
+ // Pseudo direction for now just for lighting
154
+ Cartesian3.negate(uniformState._sunDirectionEC, uniformState._moonDirectionEC);
155
+ } else {
156
+ // Made up direction for now just for lighting
157
+
158
+ sunPositionWC.x = 1000000.0; // height
159
+ sunPositionWC.y = -10000000.0; // x
160
+ sunPositionWC.z = 0.0; // y
161
+
162
+ Cartesian3.normalize(sunPositionWC, uniformState._sunDirectionWC);
163
+ Matrix3.multiplyByVector(uniformState._viewRotation, sunPositionWC, sunPositionScratch);
164
+ Cartesian3.normalize(sunPositionScratch, uniformState._sunDirectionEC);
165
+
166
+ sunPositionWC.x = 1000000.0; // height
167
+ sunPositionWC.y = 10000000.0; // x
168
+ sunPositionWC.z = 0.0; // y
169
+
170
+ Cartesian3.normalize(sunPositionWC, sunPositionScratch);
171
+ Matrix3.multiplyByVector(uniformState._viewRotation, sunPositionScratch, sunPositionScratch);
172
+ Cartesian3.normalize(sunPositionScratch, uniformState._moonDirectionEC);
173
+ }
174
+ }
175
+
176
+ /**
177
+ * Synchronizes the frustum's state with the uniform state. This is called
178
+ * by the {@link Scene} when rendering to ensure that automatic GLSL uniforms
179
+ * are set to the right value.
180
+ *
181
+ * @memberof UniformState
182
+ *
183
+ * @param {Object} frustum The frustum to synchronize with.
184
+ */
185
+ UniformState.prototype.updateFrustum = function(frustum) {
186
+ setProjection(this, frustum.getProjectionMatrix());
187
+ if (typeof frustum.getInfiniteProjectionMatrix !== 'undefined') {
188
+ setInfiniteProjection(this, frustum.getInfiniteProjectionMatrix());
189
+ }
190
+ };
191
+
192
+ /**
193
+ * Synchronizes frame state with the uniform state. This is called
194
+ * by the {@link Scene} when rendering to ensure that automatic GLSL uniforms
195
+ * are set to the right value.
196
+ *
197
+ * @memberof UniformState
198
+ *
199
+ * @param {FrameState} frameState The frameState to synchronize with.
200
+ */
201
+ UniformState.prototype.update = function(frameState) {
202
+ var camera = frameState.camera;
203
+
204
+ setView(this, camera.getViewMatrix());
205
+ setInverseView(this, camera.getInverseViewMatrix());
206
+ setCameraPosition(this, camera.getPositionWC());
207
+ setSunAndMoonDirections(this, frameState);
208
+
209
+ this._entireFrustum.x = camera.frustum.near;
210
+ this._entireFrustum.y = camera.frustum.far;
211
+ this.updateFrustum(camera.frustum);
212
+
213
+ this._frameNumber = frameState.frameNumber;
214
+ this._time = frameState.time;
215
+ this._temeToPseudoFixed = Transforms.computeTemeToPseudoFixedMatrix(frameState.time);
216
+ };
217
+
218
+ /**
219
+ * DOC_TBA
220
+ *
221
+ * @memberof UniformState
222
+ *
223
+ * @param {BoundingRectangle} viewport DOC_TBA.
224
+ *
225
+ * @see UniformState#getViewport
226
+ * @see czm_viewport
227
+ */
228
+ UniformState.prototype.setViewport = function(viewport) {
229
+ if (!BoundingRectangle.equals(viewport, this._viewport)) {
230
+ BoundingRectangle.clone(viewport, this._viewport);
231
+ this._viewportDirty = true;
232
+ }
233
+ };
234
+
235
+ /**
236
+ * DOC_TBA
237
+ *
238
+ * @memberof UniformState
239
+ *
240
+ * return {BoundingRectangle} DOC_TBA.
241
+ *
242
+ * @see UniformState#setViewport
243
+ * @see czm_viewport
244
+ */
245
+ UniformState.prototype.getViewport = function () {
246
+ return this._viewport;
247
+ };
248
+
249
+ function cleanViewport(uniformState) {
250
+ if (uniformState._viewportDirty) {
251
+ var v = uniformState._viewport;
252
+ Matrix4.computeOrthographicOffCenter(v.x, v.x + v.width, v.y, v.y + v.height, 0.0, 1.0, uniformState._viewportOrthographicMatrix);
253
+ Matrix4.computeViewportTransformation(v, 0.0, 1.0, uniformState._viewportTransformation);
254
+ uniformState._viewportDirty = false;
255
+ }
256
+ }
257
+
258
+ /**
259
+ * DOC_TBA
260
+ * @memberof UniformState
261
+ *
262
+ *
263
+ * @see czm_viewportOrthographic
264
+ */
265
+ UniformState.prototype.getViewportOrthographic = function() {
266
+ cleanViewport(this);
267
+ return this._viewportOrthographicMatrix;
268
+ };
269
+
270
+ /**
271
+ * DOC_TBA
272
+ *
273
+ * @memberof UniformState
274
+ *
275
+ * @see czm_viewportTransformation
276
+ */
277
+ UniformState.prototype.getViewportTransformation = function() {
278
+ cleanViewport(this);
279
+ return this._viewportTransformation;
280
+ };
281
+
282
+ /**
283
+ * DOC_TBA
284
+ *
285
+ * @memberof UniformState
286
+ *
287
+ * @param {Matrix4} [matrix] DOC_TBA.
288
+ *
289
+ * @see UniformState#getModel
290
+ * @see czm_model
291
+ */
292
+ UniformState.prototype.setModel = function(matrix) {
293
+ Matrix4.clone(matrix, this._model);
294
+
295
+ this._inverseModelDirty = true;
296
+ this._modelViewDirty = true;
297
+ this._modelViewRelativeToEyeDirty = true;
298
+ this._inverseModelViewDirty = true;
299
+ this._modelViewProjectionDirty = true;
300
+ this._modelViewProjectionRelativeToEyeDirty = true;
301
+ this._modelViewInfiniteProjectionDirty = true;
302
+ this._normalDirty = true;
303
+ this._inverseNormalDirty = true;
304
+ this._encodedCameraPositionMCDirty = true;
305
+ };
306
+
307
+ /**
308
+ * DOC_TBA
309
+ *
310
+ * @memberof UniformState
311
+ *
312
+ * @return {Matrix4} DOC_TBA.
313
+ *
314
+ * @see UniformState#setModel
315
+ * @see czm_model
316
+ */
317
+ UniformState.prototype.getModel = function() {
318
+ return this._model;
319
+ };
320
+
321
+ /**
322
+ * Returns the inverse model matrix used to define the {@link czm_inverseModel} GLSL uniform.
323
+ *
324
+ * @memberof UniformState
325
+ *
326
+ * @return {Matrix4} The inverse model matrix.
327
+ *
328
+ * @see UniformState#setModel
329
+ * @see UniformState#getModel
330
+ * @see czm_inverseModel
331
+ */
332
+ UniformState.prototype.getInverseModel = function() {
333
+ if (this._inverseModelDirty) {
334
+ this._inverseModelDirty = false;
335
+
336
+ this._model.inverse(this._inverseModel);
337
+ }
338
+
339
+ return this._inverseModel;
340
+ };
341
+
342
+ /**
343
+ * DOC_TBA
344
+ *
345
+ * @memberof UniformState
346
+ *
347
+ * @return {Matrix4} DOC_TBA.
348
+ *
349
+ * @see czm_view
350
+ */
351
+ UniformState.prototype.getView = function() {
352
+ return this._view;
353
+ };
354
+
355
+ /**
356
+ * Returns the 3x3 rotation matrix of the current view matrix ({@link UniformState#getView}).
357
+ *
358
+ * @memberof UniformState
359
+ *
360
+ * @return {Matrix3} The 3x3 rotation matrix of the current view matrix.
361
+ *
362
+ * @see UniformState#getView
363
+ * @see czm_viewRotation
364
+ */
365
+ UniformState.prototype.getViewRotation = function() {
366
+ return this._viewRotation;
367
+ };
368
+
369
+ /**
370
+ * Returns the 4x4 inverse-view matrix that transforms from eye to world coordinates.
371
+ *
372
+ * @memberof UniformState
373
+ *
374
+ * @return {Matrix4} The 4x4 inverse-view matrix that transforms from eye to world coordinates.
375
+ *
376
+ * @see czm_inverseView
377
+ */
378
+ UniformState.prototype.getInverseView = function() {
379
+ return this._inverseView;
380
+ };
381
+
382
+ /**
383
+ * Returns the 3x3 rotation matrix of the current inverse-view matrix ({@link UniformState#getInverseView}).
384
+ *
385
+ * @memberof UniformState
386
+ *
387
+ * @return {Matrix3} The 3x3 rotation matrix of the current inverse-view matrix.
388
+ *
389
+ * @see UniformState#getInverseView
390
+ * @see czm_inverseViewRotation
391
+ */
392
+ UniformState.prototype.getInverseViewRotation = function() {
393
+ return this._inverseViewRotation;
394
+ };
395
+
396
+ /**
397
+ * DOC_TBA
398
+ *
399
+ * @memberof UniformState
400
+ *
401
+ * @return {Matrix4} DOC_TBA.
402
+ *
403
+ * @see UniformState#setProjection
404
+ * @see czm_projection
405
+ */
406
+ UniformState.prototype.getProjection = function() {
407
+ return this._projection;
408
+ };
409
+
410
+ function cleanInverseProjection(uniformState) {
411
+ if (uniformState._inverseProjectionDirty) {
412
+ uniformState._inverseProjectionDirty = false;
413
+
414
+ Matrix4.inverse(uniformState._projection, uniformState._inverseProjection);
415
+ }
416
+ }
417
+
418
+ /**
419
+ * DOC_TBA
420
+ *
421
+ * @memberof UniformState
422
+ *
423
+ * @return {Matrix4} DOC_TBA.
424
+ *
425
+ * @see czm_inverseProjection
426
+ */
427
+ UniformState.prototype.getInverseProjection = function() {
428
+ cleanInverseProjection(this);
429
+ return this._inverseProjection;
430
+ };
431
+
432
+ /**
433
+ * DOC_TBA
434
+ *
435
+ * @memberof UniformState
436
+ *
437
+ * @return {Matrix4} DOC_TBA.
438
+ *
439
+ * @see UniformState#setInfiniteProjection
440
+ * @see czm_infiniteProjection
441
+ */
442
+ UniformState.prototype.getInfiniteProjection = function() {
443
+ return this._infiniteProjection;
444
+ };
445
+
446
+ // Derived
447
+ function cleanModelView(uniformState) {
448
+ if (uniformState._modelViewDirty) {
449
+ uniformState._modelViewDirty = false;
450
+
451
+ Matrix4.multiply(uniformState._view, uniformState._model, uniformState._modelView);
452
+ }
453
+ }
454
+
455
+ /**
456
+ * DOC_TBA
457
+ *
458
+ * @memberof UniformState
459
+ *
460
+ * @return {Matrix4} DOC_TBA.
461
+ *
462
+ * @see czm_modelView
463
+ */
464
+ UniformState.prototype.getModelView = function() {
465
+ cleanModelView(this);
466
+ return this._modelView;
467
+ };
468
+
469
+ function cleanModelViewRelativeToEye(uniformState) {
470
+ if (uniformState._modelViewRelativeToEyeDirty) {
471
+ uniformState._modelViewRelativeToEyeDirty = false;
472
+
473
+ var mv = uniformState.getModelView();
474
+ var mvRte = uniformState._modelViewRelativeToEye;
475
+ mvRte[0] = mv[0];
476
+ mvRte[1] = mv[1];
477
+ mvRte[2] = mv[2];
478
+ mvRte[3] = mv[3];
479
+ mvRte[4] = mv[4];
480
+ mvRte[5] = mv[5];
481
+ mvRte[6] = mv[6];
482
+ mvRte[7] = mv[7];
483
+ mvRte[8] = mv[8];
484
+ mvRte[9] = mv[9];
485
+ mvRte[10] = mv[10];
486
+ mvRte[11] = mv[11];
487
+ mvRte[12] = 0.0;
488
+ mvRte[13] = 0.0;
489
+ mvRte[14] = 0.0;
490
+ mvRte[15] = mv[15];
491
+ }
492
+ }
493
+
494
+ /**
495
+ * Returns the model-view relative to eye matrix used to define the {@link czm_modelViewRelativeToEye} GLSL uniform.
496
+ *
497
+ * @memberof UniformState
498
+ *
499
+ * @return {Matrix4} The model-view relative to eye matrix.
500
+ *
501
+ * @see czm_modelViewRelativeToEye
502
+ */
503
+ UniformState.prototype.getModelViewRelativeToEye = function() {
504
+ cleanModelViewRelativeToEye(this);
505
+ return this._modelViewRelativeToEye;
506
+ };
507
+
508
+ function cleanInverseModelView(uniformState) {
509
+ if (uniformState._inverseModelViewDirty) {
510
+ uniformState._inverseModelViewDirty = false;
511
+
512
+ Matrix4.inverse(uniformState.getModelView(), uniformState._inverseModelView);
513
+ }
514
+ }
515
+
516
+ /**
517
+ * DOC_TBA
518
+ *
519
+ * @memberof UniformState
520
+ *
521
+ * @return {Matrix4} DOC_TBA.
522
+ *
523
+ * @see czm_inverseModelView
524
+ */
525
+ UniformState.prototype.getInverseModelView = function() {
526
+ cleanInverseModelView(this);
527
+ return this._inverseModelView;
528
+ };
529
+
530
+ function cleanViewProjection(uniformState) {
531
+ if (uniformState._viewProjectionDirty) {
532
+ uniformState._viewProjectionDirty = false;
533
+
534
+ Matrix4.multiply(uniformState._projection, uniformState._view, uniformState._viewProjection);
535
+ }
536
+ }
537
+
538
+ /**
539
+ * DOC_TBA
540
+ *
541
+ * @memberof UniformState
542
+ *
543
+ * @return {Matrix4} DOC_TBA.
544
+ *
545
+ * @see czm_viewProjection
546
+ */
547
+ UniformState.prototype.getViewProjection = function() {
548
+ cleanViewProjection(this);
549
+ return this._viewProjection;
550
+ };
551
+
552
+ function cleanModelViewProjection(uniformState) {
553
+ if (uniformState._modelViewProjectionDirty) {
554
+ uniformState._modelViewProjectionDirty = false;
555
+
556
+ Matrix4.multiply(uniformState._projection, uniformState.getModelView(), uniformState._modelViewProjection);
557
+ }
558
+ }
559
+
560
+ /**
561
+ * DOC_TBA
562
+ *
563
+ * @memberof UniformState
564
+ *
565
+ * @return {Matrix4} DOC_TBA.
566
+ *
567
+ * @see czm_modelViewProjection
568
+ */
569
+ UniformState.prototype.getModelViewProjection = function() {
570
+ cleanModelViewProjection(this);
571
+ return this._modelViewProjection;
572
+ };
573
+
574
+ function cleanModelViewProjectionRelativeToEye(uniformState) {
575
+ if (uniformState._modelViewProjectionRelativeToEyeDirty) {
576
+ uniformState._modelViewProjectionRelativeToEyeDirty = false;
577
+
578
+ Matrix4.multiply(uniformState._projection, uniformState.getModelViewRelativeToEye(), uniformState._modelViewProjectionRelativeToEye);
579
+ }
580
+ }
581
+
582
+ /**
583
+ * Returns the model-view-projection relative to eye matrix used to define the {@link czm_modelViewProjectionRelativeToEye} GLSL uniform.
584
+ *
585
+ * @memberof UniformState
586
+ *
587
+ * @return {Matrix4} The model-view-projection relative to eye matrix.
588
+ *
589
+ * @see czm_modelViewProjectionRelativeToEye
590
+ */
591
+ UniformState.prototype.getModelViewProjectionRelativeToEye = function() {
592
+ cleanModelViewProjectionRelativeToEye(this);
593
+ return this._modelViewProjectionRelativeToEye;
594
+ };
595
+
596
+ function cleanModelViewInfiniteProjection(uniformState) {
597
+ if (uniformState._modelViewInfiniteProjectionDirty) {
598
+ uniformState._modelViewInfiniteProjectionDirty = false;
599
+
600
+ Matrix4.multiply(uniformState._infiniteProjection, uniformState.getModelView(), uniformState._modelViewInfiniteProjection);
601
+ }
602
+ }
603
+
604
+ /**
605
+ * DOC_TBA
606
+ *
607
+ * @memberof UniformState
608
+ *
609
+ * @return {Matrix4} DOC_TBA.
610
+ *
611
+ * @see czm_modelViewProjection
612
+ */
613
+ UniformState.prototype.getModelViewInfiniteProjection = function() {
614
+ cleanModelViewInfiniteProjection(this);
615
+ return this._modelViewInfiniteProjection;
616
+ };
617
+
618
+ var normalScratch = new Matrix4();
619
+
620
+ function cleanNormal(uniformState) {
621
+ if (uniformState._normalDirty) {
622
+ uniformState._normalDirty = false;
623
+
624
+ Matrix4.transpose(uniformState.getInverseModelView(), normalScratch);
625
+ Matrix4.getRotation(normalScratch, uniformState._normal);
626
+ }
627
+ }
628
+
629
+ /**
630
+ * DOC_TBA
631
+ *
632
+ * @memberof UniformState
633
+ *
634
+ * @return {Matrix3} DOC_TBA.
635
+ *
636
+ * @see czm_normal
637
+ */
638
+ UniformState.prototype.getNormal = function() {
639
+ cleanNormal(this);
640
+ return this._normal;
641
+ };
642
+
643
+ function cleanInverseNormal(uniformState) {
644
+ if (uniformState._inverseNormalDirty) {
645
+ uniformState._inverseNormalDirty = false;
646
+
647
+ Matrix4.getRotation(uniformState.getInverseModelView(), uniformState._inverseNormal);
648
+ }
649
+ }
650
+
651
+ /**
652
+ * DOC_TBA
653
+ *
654
+ * @memberof UniformState
655
+ *
656
+ * @return {Matrix3} DOC_TBA.
657
+ *
658
+ * @see czm_inverseNormal
659
+ */
660
+ UniformState.prototype.getInverseNormal = function() {
661
+ cleanInverseNormal(this);
662
+ return this._inverseNormal;
663
+ };
664
+
665
+ /**
666
+ * Returns the near distance (<code>x</code>) and the far distance (<code>y</code>) of the frustum defined by the camera.
667
+ *
668
+ * @memberof UniformState
669
+ *
670
+ * @return {Cartesian2} Returns the near distance and the far distance of the frustum defined by the camera.
671
+ *
672
+ * @see czm_entireFrustum
673
+ */
674
+ UniformState.prototype.getEntireFrustum = function() {
675
+ return this._entireFrustum;
676
+ };
677
+
678
+ /**
679
+ * Returns a normalized vector to the sun in world coordinates at the current scene time.
680
+ *
681
+ * @memberof UniformState
682
+ *
683
+ * @return {Cartesian3} A normalized vector to the sun in world coordinates at the current scene time.
684
+ *
685
+ * @see czm_sunDirectionWC
686
+ */
687
+ UniformState.prototype.getSunDirectionWC = function() {
688
+ return this._sunDirectionWC;
689
+ };
690
+
691
+ /**
692
+ * Returns a normalized vector to the sun in eye coordinates at the current scene time.
693
+ *
694
+ * @memberof UniformState
695
+ *
696
+ * @return {Cartesian3} A normalized vector to the sun in eye coordinates at the current scene time.
697
+ *
698
+ * @see czm_sunDirectionEC
699
+ */
700
+ UniformState.prototype.getSunDirectionEC = function() {
701
+ return this._sunDirectionEC;
702
+ };
703
+
704
+ /**
705
+ * Returns a normalized vector to the moon in eye coordinates at the current scene time.
706
+ *
707
+ * @memberof UniformState
708
+ *
709
+ * @return {Cartesian3} A normalized vector to the moon in eye coordinates at the current scene time.
710
+ *
711
+ * @see czm_moonDirectionEC
712
+ */
713
+ UniformState.prototype.getMoonDirectionEC = function() {
714
+ return this._moonDirectionEC;
715
+ };
716
+
717
+ var cameraPositionMC = new Cartesian3();
718
+
719
+ function cleanEncodedCameraPositionMC(uniformState) {
720
+ if (uniformState._encodedCameraPositionMCDirty) {
721
+ uniformState._encodedCameraPositionMCDirty = false;
722
+
723
+ uniformState.getInverseModel().multiplyByPoint(uniformState._cameraPosition, cameraPositionMC);
724
+ EncodedCartesian3.fromCartesian(cameraPositionMC, uniformState._encodedCameraPositionMC);
725
+ }
726
+ }
727
+
728
+ /**
729
+ * Returns the high bits of the camera position used to define the {@link czm_encodedCameraPositionMCHigh} GLSL uniform.
730
+ *
731
+ * @memberof UniformState
732
+ *
733
+ * @return {Cartesian3} The high bits of the camera position.
734
+ *
735
+ * @see UniformState#getEncodedCameraPositionMCLow
736
+ */
737
+ UniformState.prototype.getEncodedCameraPositionMCHigh = function() {
738
+ cleanEncodedCameraPositionMC(this);
739
+ return this._encodedCameraPositionMC.high;
740
+ };
741
+
742
+ /**
743
+ * Returns the low bits of the camera position used to define the {@link czm_encodedCameraPositionMCLow} GLSL uniform.
744
+ *
745
+ * @memberof UniformState
746
+ *
747
+ * @return {Cartesian3} The low bits of the camera position.
748
+ *
749
+ * @see UniformState#getEncodedCameraPositionMCHigh
750
+ */
751
+ UniformState.prototype.getEncodedCameraPositionMCLow = function() {
752
+ cleanEncodedCameraPositionMC(this);
753
+ return this._encodedCameraPositionMC.low;
754
+ };
755
+
756
+ /**
757
+ * Gets the current frame number.
758
+ *
759
+ * @memberof UniformState
760
+ *
761
+ * @return {number} A number representing the current frame number.
762
+ *
763
+ * @see czm_frameNumber
764
+ */
765
+ UniformState.prototype.getFrameNumber = function() {
766
+ return this._frameNumber;
767
+ };
768
+
769
+ /**
770
+ * Gets the scene's current time.
771
+ *
772
+ * @memberof UniformState
773
+ *
774
+ * @return {JulianDate} The scene's current time.
775
+ */
776
+ UniformState.prototype.getTime = function() {
777
+ return this._time;
778
+ };
779
+
780
+ /**
781
+ * Returns a 3x3 matrix that transforms from True Equator Mean Equinox (TEME) axes to the
782
+ * pseudo-fixed axes at the Scene's current time.
783
+ *
784
+ * @memberof UniformState
785
+ *
786
+ * @return {Matrix3} The transform from TEME to pseudo-fixed.
787
+ *
788
+ * @see czm_temeToPseudoFixed
789
+ */
790
+ UniformState.prototype.getTemeToPseudoFixedMatrix = function() {
791
+ return this._temeToPseudoFixed;
792
+ };
793
+
794
+ UniformState.prototype.getHighResolutionSnapScale = function() {
795
+ return 1.0;
796
+ };
797
+
798
+ return UniformState;
799
+ });