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,149 @@
1
+ /*global define*/
2
+ define(['./Enumeration'], function(Enumeration) {
3
+ "use strict";
4
+
5
+ /**
6
+ * This enumerated type is for classifying mouse events: down, up, click, double click, move and move while a button is held down.
7
+ *
8
+ * @exports ScreenSpaceEventType
9
+ */
10
+ var ScreenSpaceEventType = {
11
+ /**
12
+ * Represents a mouse left button down event.
13
+ *
14
+ * @constant
15
+ * @type {Enumeration}
16
+ */
17
+ LEFT_DOWN : new Enumeration(0, 'LEFT_DOWN'),
18
+
19
+ /**
20
+ * Represents a mouse left button up event.
21
+ *
22
+ * @constant
23
+ * @type {Enumeration}
24
+ */
25
+ LEFT_UP : new Enumeration(1, 'LEFT_UP'),
26
+
27
+ /**
28
+ * Represents a mouse left click event.
29
+ *
30
+ * @constant
31
+ * @type {Enumeration}
32
+ */
33
+ LEFT_CLICK : new Enumeration(2, 'LEFT_CLICK'),
34
+
35
+ /**
36
+ * Represents a mouse left double click event.
37
+ *
38
+ * @constant
39
+ * @type {Enumeration}
40
+ */
41
+ LEFT_DOUBLE_CLICK : new Enumeration(3, 'LEFT_DOUBLE_CLICK'),
42
+
43
+ /**
44
+ * Represents a mouse left button down event.
45
+ *
46
+ * @constant
47
+ * @type {Enumeration}
48
+ */
49
+ RIGHT_DOWN : new Enumeration(5, 'RIGHT_DOWN'),
50
+
51
+ /**
52
+ * Represents a mouse right button up event.
53
+ *
54
+ * @constant
55
+ * @type {Enumeration}
56
+ */
57
+ RIGHT_UP : new Enumeration(6, 'RIGHT_UP'),
58
+
59
+ /**
60
+ * Represents a mouse right click event.
61
+ *
62
+ * @constant
63
+ * @type {Enumeration}
64
+ */
65
+ RIGHT_CLICK : new Enumeration(7, 'RIGHT_CLICK'),
66
+
67
+ /**
68
+ * Represents a mouse right double click event.
69
+ *
70
+ * @constant
71
+ * @type {Enumeration}
72
+ */
73
+ RIGHT_DOUBLE_CLICK : new Enumeration(8, 'RIGHT_DOUBLE_CLICK'),
74
+
75
+ /**
76
+ * Represents a mouse middle button down event.
77
+ *
78
+ * @constant
79
+ * @type {Enumeration}
80
+ */
81
+ MIDDLE_DOWN : new Enumeration(10, 'MIDDLE_DOWN'),
82
+
83
+ /**
84
+ * Represents a mouse middle button up event.
85
+ *
86
+ * @constant
87
+ * @type {Enumeration}
88
+ */
89
+ MIDDLE_UP : new Enumeration(11, 'MIDDLE_UP'),
90
+
91
+ /**
92
+ * Represents a mouse middle click event.
93
+ *
94
+ * @constant
95
+ * @type {Enumeration}
96
+ */
97
+ MIDDLE_CLICK : new Enumeration(12, 'MIDDLE_CLICK'),
98
+
99
+ /**
100
+ * Represents a mouse middle double click event.
101
+ *
102
+ * @constant
103
+ * @type {Enumeration}
104
+ */
105
+ MIDDLE_DOUBLE_CLICK : new Enumeration(13, 'MIDDLE_DOUBLE_CLICK'),
106
+
107
+ /**
108
+ * Represents a mouse move event.
109
+ *
110
+ * @constant
111
+ * @type {Enumeration}
112
+ */
113
+ MOUSE_MOVE : new Enumeration(15, 'MOUSE_MOVE'),
114
+
115
+ /**
116
+ * Represents a mouse wheel event.
117
+ *
118
+ * @constant
119
+ * @type {Enumeration}
120
+ */
121
+ WHEEL : new Enumeration(16, 'WHEEL'),
122
+
123
+ /**
124
+ * Represents the start of a two-finger event on a touch surface.
125
+ *
126
+ * @constant
127
+ * @type {Enumeration}
128
+ */
129
+ PINCH_START : new Enumeration(17, 'PINCH_START'),
130
+
131
+ /**
132
+ * Represents the end of a two-finger event on a touch surface.
133
+ *
134
+ * @constant
135
+ * @type {Enumeration}
136
+ */
137
+ PINCH_END : new Enumeration(18, 'PINCH_END'),
138
+
139
+ /**
140
+ * Represents a change of a two-finger event on a touch surface.
141
+ *
142
+ * @constant
143
+ * @type {Enumeration}
144
+ */
145
+ PINCH_MOVE : new Enumeration(19, 'PINCH_MOVE')
146
+ };
147
+
148
+ return ScreenSpaceEventType;
149
+ });
@@ -0,0 +1,230 @@
1
+ /*global define*/
2
+ define([
3
+ './DeveloperError',
4
+ './Math',
5
+ './Cartesian2',
6
+ './Cartesian3',
7
+ './Quaternion',
8
+ './Matrix3'
9
+ ], function(
10
+ DeveloperError,
11
+ CesiumMath,
12
+ Cartesian2,
13
+ Cartesian3,
14
+ Quaternion,
15
+ Matrix3) {
16
+ "use strict";
17
+
18
+ function _computeEllipseQuadrant(cb, cbRadius, aSqr, bSqr, ab, ecc, mag, unitPos, eastVec, northVec, bearing,
19
+ thetaPts, thetaPtsIndex, offset, clockDir, ellipsePts, ellipsePtsIndex, numPts) {
20
+ var angle;
21
+ var theta;
22
+ var radius;
23
+ var azimuth;
24
+ var temp;
25
+ var temp2;
26
+ var rotAxis;
27
+ var tempVec;
28
+
29
+ for (var i = 0; i < numPts; i++, thetaPtsIndex += clockDir, ++ellipsePtsIndex) {
30
+ theta = (clockDir > 0) ? (thetaPts[thetaPtsIndex] + offset) : (offset - thetaPts[thetaPtsIndex]);
31
+
32
+ azimuth = theta + bearing;
33
+
34
+ temp = -Math.cos(azimuth);
35
+
36
+ rotAxis = eastVec.multiplyByScalar(temp);
37
+
38
+ temp = Math.sin(azimuth);
39
+ tempVec = northVec.multiplyByScalar(temp);
40
+
41
+ rotAxis = rotAxis.add(tempVec);
42
+
43
+ temp = Math.cos(theta);
44
+ temp = temp * temp;
45
+
46
+ temp2 = Math.sin(theta);
47
+ temp2 = temp2 * temp2;
48
+
49
+ radius = ab / Math.sqrt(bSqr * temp + aSqr * temp2);
50
+ angle = radius / cbRadius;
51
+
52
+ // Create the quaternion to rotate the position vector to the boundary of the ellipse.
53
+ temp = Math.sin(angle / 2.0);
54
+
55
+ var unitQuat = (new Quaternion(rotAxis.x * temp, rotAxis.y * temp, rotAxis.z * temp, Math.cos(angle / 2.0))).normalize();
56
+ var rotMtx = Matrix3.fromQuaternion(unitQuat);
57
+
58
+ var tmpEllipsePts = rotMtx.multiplyByVector(unitPos);
59
+ var unitCart = tmpEllipsePts.normalize();
60
+ tmpEllipsePts = unitCart.multiplyByScalar(mag);
61
+ ellipsePts[ellipsePtsIndex] = tmpEllipsePts;
62
+ }
63
+ }
64
+
65
+ /**
66
+ * Functions to compute the boundary positions for shapes, such as circles,
67
+ * drawn on the ellipsoid.
68
+ *
69
+ * @exports Shapes
70
+ */
71
+ var Shapes = {
72
+ /**
73
+ * Computes boundary points for a circle on the ellipsoid.
74
+ * <br /><br />
75
+ * The <code>granularity</code> determines the number of points
76
+ * in the boundary. A lower granularity results in more points and a more
77
+ * exact circle.
78
+ * <br /><br />
79
+ * An outlined circle is rendered by passing the result of this function call to
80
+ * {@link Polyline#setPositions}. A filled circle is rendered by passing
81
+ * the result to {@link Polygon#setPositions}.
82
+ *
83
+ * @param {Ellipsoid} ellipsoid The ellipsoid the circle will be on.
84
+ * @param {Cartesian3} center The circle's center point in the fixed frame.
85
+ * @param {Number} radius The radius in meters.
86
+ * @param {Number} [granularity] The angular distance between points on the circle.
87
+ *
88
+ * @exception {DeveloperError} ellipsoid, center, and radius are required.
89
+ * @exception {DeveloperError} radius must be greater than zero.
90
+ * @exception {DeveloperError} granularity must be greater than zero.
91
+ *
92
+ * @see Polyline#setPositions
93
+ * @see Polygon#setPositions
94
+ *
95
+ * @example
96
+ * // Create a polyline of a circle
97
+ * var polyline = new Polyline();
98
+ * polyline.setPositions(Shapes.computeCircleBoundary(
99
+ * ellipsoid, ellipsoid.cartographicToCartesian(
100
+ * Cartographic.fromDegrees(-75.59777, 40.03883, 0.0)), 100000.0));
101
+ */
102
+ computeCircleBoundary : function(ellipsoid, center, radius, granularity) {
103
+ if (!ellipsoid || !center || !radius) {
104
+ throw new DeveloperError('ellipsoid, center, and radius are required.');
105
+ }
106
+
107
+ if (radius <= 0.0) {
108
+ throw new DeveloperError('radius must be greater than zero.');
109
+ }
110
+
111
+ granularity = granularity || CesiumMath.toRadians(1.0);
112
+ if (granularity <= 0.0) {
113
+ throw new DeveloperError('granularity must be greater than zero.');
114
+ }
115
+
116
+ return this.computeEllipseBoundary(ellipsoid, center, radius, radius, 0, granularity);
117
+ },
118
+
119
+ /**
120
+ * Computes boundary points for an ellipse on the ellipsoid.
121
+ * <br /><br />
122
+ * The <code>granularity</code> determines the number of points
123
+ * in the boundary. A lower granularity results in more points and a more
124
+ * exact circle.
125
+ * <br /><br />
126
+ * An outlined ellipse is rendered by passing the result of this function call to
127
+ * {@link Polyline#setPositions}. A filled ellipse is rendered by passing
128
+ * the result to {@link Polygon#setPositions}.
129
+ *
130
+ * @param {Ellipsoid} ellipsoid The ellipsoid the ellipse will be on.
131
+ * @param {Cartesian3} center The ellipse's center point in the fixed frame.
132
+ * @param {Number} semiMajorAxis The length of the ellipse's semi-major axis in meters.
133
+ * @param {Number} semiMinorAxis The length of the ellipse's semi-minor axis in meters.
134
+ * @param {Number} [bearing] The angle from north (clockwise) in radians. The default is zero.
135
+ * @param {Number} [granularity] The angular distance between points on the circle.
136
+ *
137
+ * @exception {DeveloperError} ellipsoid, center, semiMajorAxis, and semiMinorAxis are required.
138
+ * @exception {DeveloperError} Semi-major and semi-minor axes must be greater than zero.
139
+ * @exception {DeveloperError} granularity must be greater than zero.
140
+ *
141
+ * @see Polyline#setPositions
142
+ * @see Polygon#setPositions
143
+ *
144
+ * @return The set of points that form the ellipse's boundary.
145
+ *
146
+ * @example
147
+ * // Create a filled ellipse.
148
+ * var polygon = new Polygon();
149
+ * polygon.setPositions(Shapes.computeEllipseBoundary(
150
+ * ellipsoid, ellipsoid.cartographicToCartesian(
151
+ * Cartographic.fromDegrees(-75.59777, 40.03883)), 500000.0, 300000.0, Math.toRadians(60)));
152
+ */
153
+ computeEllipseBoundary : function(ellipsoid, center, semiMajorAxis, semiMinorAxis, bearing, granularity) {
154
+ if (!ellipsoid || !center || !semiMajorAxis || !semiMinorAxis) {
155
+ throw new DeveloperError('ellipsoid, center, semiMajorAxis, and semiMinorAxis are required.');
156
+ }
157
+
158
+ if (semiMajorAxis <= 0.0 || semiMinorAxis <= 0.0) {
159
+ throw new DeveloperError('Semi-major and semi-minor axes must be greater than zero.');
160
+ }
161
+
162
+ bearing = bearing || 0.0;
163
+ granularity = granularity || CesiumMath.toRadians(1.0);
164
+
165
+ if (granularity <= 0.0) {
166
+ throw new DeveloperError('granularity must be greater than zero.');
167
+ }
168
+
169
+ if (semiMajorAxis < semiMinorAxis) {
170
+ var t = semiMajorAxis;
171
+ semiMajorAxis = semiMinorAxis;
172
+ semiMinorAxis = t;
173
+ }
174
+
175
+ var MAX_ANOMALY_LIMIT = 2.31;
176
+
177
+ var aSqr = semiMajorAxis * semiMajorAxis;
178
+ var bSqr = semiMinorAxis * semiMinorAxis;
179
+ var ab = semiMajorAxis * semiMinorAxis;
180
+
181
+ var value = 1.0 - (bSqr / aSqr);
182
+ var ecc = Math.sqrt(value);
183
+
184
+ var surfPos = Cartesian3.clone(center);
185
+ var mag = surfPos.magnitude();
186
+
187
+ var tempVec = new Cartesian3(0.0, 0.0, 1);
188
+ var temp = 1.0 / mag;
189
+
190
+ var unitPos = surfPos.multiplyByScalar(temp);
191
+ var eastVec = tempVec.cross(surfPos).normalize();
192
+ var northVec = unitPos.cross(eastVec);
193
+
194
+ var numQuadrantPts = 1 + Math.ceil(CesiumMath.PI_OVER_TWO / granularity);
195
+ var deltaTheta = MAX_ANOMALY_LIMIT / (numQuadrantPts - 1);
196
+ var thetaPts = [];
197
+ var thetaPtsIndex = 0;
198
+
199
+ var sampleTheta = 0.0;
200
+ for (var i = 0; i < numQuadrantPts; i++, sampleTheta += deltaTheta, ++thetaPtsIndex) {
201
+ thetaPts[thetaPtsIndex] = sampleTheta - ecc * Math.sin(sampleTheta);
202
+ if (thetaPts[thetaPtsIndex] >= CesiumMath.PI_OVER_TWO) {
203
+ thetaPts[thetaPtsIndex] = CesiumMath.PI_OVER_TWO;
204
+ numQuadrantPts = i + 1;
205
+ break;
206
+ }
207
+ }
208
+
209
+ var ellipsePts = [];
210
+
211
+ _computeEllipseQuadrant(ellipsoid, surfPos.magnitude(), aSqr, bSqr, ab, ecc, mag, unitPos, eastVec, northVec, bearing,
212
+ thetaPts, 0.0, 0.0, 1, ellipsePts, 0, numQuadrantPts - 1);
213
+
214
+ _computeEllipseQuadrant(ellipsoid, surfPos.magnitude(), aSqr, bSqr, ab, ecc, mag, unitPos, eastVec, northVec, bearing,
215
+ thetaPts, numQuadrantPts - 1, Math.PI, -1, ellipsePts, numQuadrantPts - 1, numQuadrantPts - 1);
216
+
217
+ _computeEllipseQuadrant(ellipsoid, surfPos.magnitude(), aSqr, bSqr, ab, ecc, mag, unitPos, eastVec, northVec, bearing,
218
+ thetaPts, 0.0, Math.PI, 1, ellipsePts, (2 * numQuadrantPts) - 2, numQuadrantPts - 1);
219
+
220
+ _computeEllipseQuadrant(ellipsoid, surfPos.magnitude(), aSqr, bSqr, ab, ecc, mag, unitPos, eastVec, northVec, bearing,
221
+ thetaPts, numQuadrantPts - 1, CesiumMath.TWO_PI, -1, ellipsePts, (3 * numQuadrantPts) - 3, numQuadrantPts);
222
+
223
+ ellipsePts.push(ellipsePts[0].clone()); // Duplicates first and last point for polyline
224
+
225
+ return ellipsePts;
226
+ }
227
+ };
228
+
229
+ return Shapes;
230
+ });
@@ -0,0 +1,192 @@
1
+ /*global define*/
2
+ define(function() {
3
+ "use strict";
4
+
5
+ /**
6
+ * A set of curvilinear 3-dimensional coordinates.
7
+ *
8
+ * @alias Spherical
9
+ * @constructor
10
+ *
11
+ * @param {Number} [clock=0.0] The angular coordinate lying in the xy-plane measured from the positive x-axis and toward the positive y-axis.
12
+ * @param {Number} [cone=0.0] The angular coordinate measured from the positive z-axis and toward the negative z-axis.
13
+ * @param {Number} [magnitude=1.0] The linear coordinate measured from the origin.
14
+ */
15
+ var Spherical = function(clock, cone, magnitude) {
16
+ this.clock = typeof clock === 'undefined' ? 0.0 : clock;
17
+ this.cone = typeof cone === 'undefined' ? 0.0 : cone;
18
+ this.magnitude = typeof magnitude === 'undefined' ? 1.0 : magnitude;
19
+ };
20
+
21
+ /**
22
+ * Converts the provided Cartesian3 into Spherical coordinates.
23
+ * @memberof Spherical
24
+ *
25
+ * @param {Cartesian3} cartesian3 The Cartesian3 to be converted to Spherical.
26
+ * @param {Spherical} [spherical] The object in which the result will be stored, if undefined a new instance will be created.
27
+ *
28
+ * @returns The modified result parameter, or a new instance if one was not provided.
29
+ */
30
+ Spherical.fromCartesian3 = function(cartesian3, result) {
31
+ if (typeof result === 'undefined') {
32
+ result = new Spherical();
33
+ }
34
+ var x = cartesian3.x;
35
+ var y = cartesian3.y;
36
+ var z = cartesian3.z;
37
+ var radialSquared = x * x + y * y;
38
+ result.clock = Math.atan2(y, x);
39
+ result.cone = Math.atan2(Math.sqrt(radialSquared), z);
40
+ result.magnitude = Math.sqrt(radialSquared + z * z);
41
+ return result;
42
+ };
43
+
44
+ /**
45
+ * Creates a duplicate of a Spherical.
46
+ * @memberof Spherical
47
+ *
48
+ * @param {Spherical} spherical The spherical to clone.
49
+ * @param {Spherical} [result] The object to store the result into, if undefined a new instance will be created.
50
+ *
51
+ * @return The modified result parameter or a new instance if result was undefined.
52
+ */
53
+ Spherical.clone = function(spherical, result) {
54
+ if (typeof result === 'undefined') {
55
+ result = new Spherical();
56
+ }
57
+ result.clock = spherical.clock;
58
+ result.cone = spherical.cone;
59
+ result.magnitude = spherical.magnitude;
60
+ return result;
61
+ };
62
+
63
+ /**
64
+ * Computes the normalized version of the provided spherical.
65
+ * @memberof Spherical
66
+ *
67
+ * @param {Spherical} spherical The spherical to be normalized.
68
+ * @param {Spherical} [result] The object to store the result into, if undefined a new instance will be created.
69
+ *
70
+ * @return The modified result parameter or a new instance if result was undefined.
71
+ */
72
+ Spherical.normalize = function(spherical, result) {
73
+ if (typeof result === 'undefined') {
74
+ result = new Spherical();
75
+ }
76
+ result.clock = spherical.clock;
77
+ result.cone = spherical.cone;
78
+ result.magnitude = 1.0;
79
+ return result;
80
+ };
81
+
82
+ /**
83
+ * Returns true if the first spherical is equal to the second spherical, false otherwise.
84
+ * @memberof Spherical
85
+ *
86
+ * @param {Spherical} left The first Spherical to be compared.
87
+ * @param {Spherical} right The second Spherical to be compared.
88
+ *
89
+ * @return true if the first spherical is equal to the second spherical, false otherwise.
90
+ */
91
+ Spherical.equals = function(left, right) {
92
+ return (left === right) ||
93
+ ((typeof left !== 'undefined') &&
94
+ (typeof right !== 'undefined') &&
95
+ (left.clock === right.clock) &&
96
+ (left.cone === right.cone) &&
97
+ (left.magnitude === right.magnitude));
98
+ };
99
+
100
+ /**
101
+ * Returns true if the first spherical is within the provided epsilon of the second spherical, false otherwise.
102
+ * @memberof Spherical
103
+ *
104
+ * @param {Spherical} left The first Spherical to be compared.
105
+ * @param {Spherical} right The second Spherical to be compared.
106
+ * @param {Number} [epsilon=0.0] The epsilon to compare against.
107
+ *
108
+ * @return true if the first spherical is within the provided epsilon of the second spherical, false otherwise.
109
+ */
110
+ Spherical.equalsEpsilon = function(left, right, epsilon) {
111
+ epsilon = typeof epsilon === 'undefined' ? 0.0 : epsilon;
112
+ return (left === right) ||
113
+ ((typeof left !== 'undefined') &&
114
+ (typeof right !== 'undefined') &&
115
+ (Math.abs(left.clock - right.clock) <= epsilon) &&
116
+ (Math.abs(left.cone - right.cone) <= epsilon) &&
117
+ (Math.abs(left.magnitude - right.magnitude) <= epsilon));
118
+ };
119
+
120
+ /**
121
+ * Returns a string representing the provided instance in the format (clock, cone, magnitude).
122
+ * @memberof Spherical
123
+ *
124
+ * @param {Spherical} spherical The object to be converted.
125
+ *
126
+ * @return A string representing the provided instance.
127
+ */
128
+ Spherical.toString = function(spherical) {
129
+ return '(' + spherical.clock + ', ' + spherical.cone + ', ' + spherical.magnitude + ')';
130
+ };
131
+
132
+ /**
133
+ * Creates a duplicate of this Spherical.
134
+ * @memberof Spherical
135
+ *
136
+ * @param {Spherical} [result] The object to store the result into, if undefined a new instance will be created.
137
+ *
138
+ * @return The modified result parameter or a new instance if result was undefined.
139
+ */
140
+ Spherical.prototype.clone = function(result) {
141
+ return Spherical.clone(this, result);
142
+ };
143
+
144
+ /**
145
+ * Computes the normalized version of this spherical.
146
+ * @memberof Spherical
147
+ *
148
+ * @param {Spherical} [result] The object to store the result into, if undefined a new instance will be created.
149
+ *
150
+ * @return The modified result parameter or a new instance if result was undefined.
151
+ */
152
+ Spherical.prototype.normalize = function(result) {
153
+ return Spherical.normalize(this, result);
154
+ };
155
+
156
+ /**
157
+ * Returns true if this spherical is equal to the provided spherical, false otherwise.
158
+ * @memberof Spherical
159
+ *
160
+ * @param {Spherical} other The Spherical to be compared.
161
+ *
162
+ * @return true if this spherical is equal to the provided spherical, false otherwise.
163
+ */
164
+ Spherical.prototype.equals = function(other) {
165
+ return Spherical.equals(this, other);
166
+ };
167
+
168
+ /**
169
+ * Returns true if this spherical is within the provided epsilon of the provided spherical, false otherwise.
170
+ * @memberof Spherical
171
+ *
172
+ * @param {Spherical} other The Spherical to be compared.
173
+ * @param {Number} epsilon The epsilon to compare against.
174
+ *
175
+ * @return true if this spherical is within the provided epsilon of the provided spherical, false otherwise.
176
+ */
177
+ Spherical.prototype.equalsEpsilon = function(other, epsilon) {
178
+ return Spherical.equalsEpsilon(this, other, epsilon);
179
+ };
180
+
181
+ /**
182
+ * Returns a string representing this instance in the format (clock, cone, magnitude).
183
+ * @memberof Spherical
184
+ *
185
+ * @return A string representing this instance.
186
+ */
187
+ Spherical.prototype.toString = function() {
188
+ return Spherical.toString(this);
189
+ };
190
+
191
+ return Spherical;
192
+ });