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,90 @@
1
+ /*global define*/
2
+ define(['./Cartographic',
3
+ './Cartesian3'
4
+ ], function(
5
+ Cartographic,
6
+ Cartesian3) {
7
+ "use strict";
8
+
9
+ /**
10
+ * DOC_TBA
11
+ *
12
+ * @exports PolylinePipeline
13
+ */
14
+ var PolylinePipeline = {
15
+ /**
16
+ * Breaks a {@link Polyline} into segments such that it does not cross the ±180 degree meridian of an ellipsoid.
17
+ *
18
+ * @param {Ellipsoid} ellipsoid The ellipsoid to wrap around.
19
+ * @param {Array} positions The polyline's Cartesian positions.
20
+ *
21
+ * @returns An array of polyline segment objects containing the Cartesian and {@link Cartographic} positions and indices.
22
+ *
23
+ * @see Polyline
24
+ * @see PolylineCollection
25
+ *
26
+ * @example
27
+ * var polylines = new PolylineCollection();
28
+ * polylines.add(...);
29
+ * var positions = polylines.get(0).getPositions();
30
+ * var segments = PolylinePipeline.wrapLongitude(ellipsoid, positions);
31
+ */
32
+ wrapLongitude : function(ellipsoid, positions) {
33
+ var segments = [];
34
+
35
+ if (positions && (positions.length > 0)) {
36
+ var length = positions.length;
37
+
38
+ var currentSegment = [{
39
+ cartesian : Cartesian3.clone(positions[0]),
40
+ cartographic : ellipsoid.cartesianToCartographic(positions[0]),
41
+ index : 0
42
+ }];
43
+
44
+ var prev = currentSegment[0].cartographic;
45
+
46
+ for ( var i = 1; i < length; ++i) {
47
+ var cur = ellipsoid.cartesianToCartographic(positions[i]);
48
+
49
+ if (Math.abs(prev.longitude - cur.longitude) > Math.PI) {
50
+ var interpolatedLongitude = prev.longitude < 0.0 ? -Math.PI : Math.PI;
51
+ var longitude = cur.longitude + (2.0 * interpolatedLongitude);
52
+ var ratio = (interpolatedLongitude - prev.longitude) / (longitude - prev.longitude);
53
+ var interpolatedLatitude = prev.latitude + (cur.latitude - prev.latitude) * ratio;
54
+ var interpolatedHeight = prev.height + (cur.height - prev.height) * ratio;
55
+
56
+ currentSegment.push({
57
+ cartesian : ellipsoid.cartographicToCartesian(new Cartographic(interpolatedLongitude, interpolatedLatitude, interpolatedHeight)),
58
+ cartographic : new Cartographic(interpolatedLongitude, interpolatedLatitude, interpolatedHeight),
59
+ index : i
60
+ });
61
+ segments.push(currentSegment);
62
+
63
+ currentSegment = [];
64
+ currentSegment.push({
65
+ cartesian : ellipsoid.cartographicToCartesian(new Cartographic(-interpolatedLongitude, interpolatedLatitude, interpolatedHeight)),
66
+ cartographic : new Cartographic(-interpolatedLongitude, interpolatedLatitude, interpolatedHeight),
67
+ index : i
68
+ });
69
+ }
70
+
71
+ currentSegment.push({
72
+ cartesian : Cartesian3.clone(positions[i]),
73
+ cartographic : ellipsoid.cartesianToCartographic(positions[i]),
74
+ index : i
75
+ });
76
+
77
+ prev = cur.clone();
78
+ }
79
+
80
+ if (currentSegment.length > 1) {
81
+ segments.push(currentSegment);
82
+ }
83
+ }
84
+
85
+ return segments;
86
+ }
87
+ };
88
+
89
+ return PolylinePipeline;
90
+ });
@@ -0,0 +1,80 @@
1
+ /*global define*/
2
+ define(['./Enumeration'], function(Enumeration) {
3
+ "use strict";
4
+
5
+ /**
6
+ * DOC_TBA
7
+ *
8
+ * @exports PrimitiveType
9
+ */
10
+ var PrimitiveType = {
11
+ /**
12
+ * DOC_TBA
13
+ *
14
+ * @constant
15
+ * @type {Enumeration}
16
+ */
17
+ POINTS : new Enumeration(0x0000, 'POINTS'),
18
+ /**
19
+ * DOC_TBA
20
+ *
21
+ * @constant
22
+ * @type {Enumeration}
23
+ */
24
+ LINES : new Enumeration(0x0001, 'LINES'),
25
+ /**
26
+ * DOC_TBA
27
+ *
28
+ * @constant
29
+ * @type {Enumeration}
30
+ */
31
+ LINE_LOOP : new Enumeration(0x0002, 'LINE_LOOP'),
32
+ /**
33
+ * DOC_TBA
34
+ *
35
+ * @constant
36
+ * @type {Enumeration}
37
+ */
38
+ LINE_STRIP : new Enumeration(0x0003, 'LINE_STRIP'),
39
+ /**
40
+ * DOC_TBA
41
+ *
42
+ * @constant
43
+ * @type {Enumeration}
44
+ */
45
+ TRIANGLES : new Enumeration(0x0004, 'TRIANGLES'),
46
+ /**
47
+ * DOC_TBA
48
+ *
49
+ * @constant
50
+ * @type {Enumeration}
51
+ */
52
+ TRIANGLE_STRIP : new Enumeration(0x0005, 'TRIANGLE_STRIP'),
53
+ /**
54
+ * DOC_TBA
55
+ *
56
+ * @constant
57
+ * @type {Enumeration}
58
+ */
59
+ TRIANGLE_FAN : new Enumeration(0x0006, 'TRIANGLE_FAN'),
60
+
61
+ /**
62
+ * DOC_TBA
63
+ *
64
+ * @param primitiveType
65
+ *
66
+ * @returns {Boolean}
67
+ */
68
+ validate : function(primitiveType) {
69
+ return ((primitiveType === PrimitiveType.POINTS) ||
70
+ (primitiveType === PrimitiveType.LINES) ||
71
+ (primitiveType === PrimitiveType.LINE_LOOP) ||
72
+ (primitiveType === PrimitiveType.LINE_STRIP) ||
73
+ (primitiveType === PrimitiveType.TRIANGLES) ||
74
+ (primitiveType === PrimitiveType.TRIANGLE_STRIP) ||
75
+ (primitiveType === PrimitiveType.TRIANGLE_FAN));
76
+ }
77
+ };
78
+
79
+ return PrimitiveType;
80
+ });
@@ -0,0 +1,146 @@
1
+ /*global define*/
2
+ define([
3
+ './DeveloperError',
4
+ './Math'
5
+ ],
6
+ function(
7
+ DeveloperError,
8
+ CesiumMath) {
9
+ "use strict";
10
+
11
+ /**
12
+ * Defines functions for 2nd order polynomial functions of one variable with only real coefficients.
13
+ *
14
+ * @exports QuadraticRealPolynomial
15
+ */
16
+ var QuadraticRealPolynomial = {};
17
+
18
+ /**
19
+ * Provides the discriminant of the quadratic equation from the supplied coefficients.
20
+ * @memberof QuadraticRealPolynomial
21
+ *
22
+ * @param {Number} a The coefficient of the 2nd order monomial.
23
+ * @param {Number} b The coefficient of the 1st order monomial.
24
+ * @param {Number} c The coefficient of the 0th order monomial.
25
+ * @returns {Number} The value of the discriminant.
26
+ *
27
+ * @exception {DeveloperError} a is a required number.
28
+ * @exception {DeveloperError} b is a required number.
29
+ * @exception {DeveloperError} c is a required number.
30
+ */
31
+ QuadraticRealPolynomial.discriminant = function(a, b, c) {
32
+ if (typeof a !== 'number') {
33
+ throw new DeveloperError('a is a required number.');
34
+ }
35
+ if (typeof b !== 'number') {
36
+ throw new DeveloperError('b is a required number.');
37
+ }
38
+ if (typeof c !== 'number') {
39
+ throw new DeveloperError('c is a required number.');
40
+ }
41
+
42
+ var discriminant = b * b - 4.0 * a * c;
43
+ return discriminant;
44
+ };
45
+
46
+ function addWithCancellationCheck(left, right, tolerance) {
47
+ var difference = left + right;
48
+ if ((CesiumMath.sign(left) !== CesiumMath.sign(right)) &&
49
+ Math.abs(difference / Math.max(Math.abs(left), Math.abs(right))) < tolerance) {
50
+ return 0.0;
51
+ }
52
+
53
+ return difference;
54
+ }
55
+
56
+ /**
57
+ * Provides the real valued roots of the quadratic polynomial with the provided coefficients.
58
+ * @memberof QuadraticRealPolynomial
59
+ *
60
+ * @param {Number} a The coefficient of the 2nd order monomial.
61
+ * @param {Number} b The coefficient of the 1st order monomial.
62
+ * @param {Number} c The coefficient of the 0th order monomial.
63
+ * @returns {Array} The real valued roots.
64
+ *
65
+ * @exception {DeveloperError} a is a required number.
66
+ * @exception {DeveloperError} b is a required number.
67
+ * @exception {DeveloperError} c is a required number.
68
+ */
69
+ QuadraticRealPolynomial.realRoots = function(a, b, c) {
70
+ if (typeof a !== 'number') {
71
+ throw new DeveloperError('a is a required number.');
72
+ }
73
+ if (typeof b !== 'number') {
74
+ throw new DeveloperError('b is a required number.');
75
+ }
76
+ if (typeof c !== 'number') {
77
+ throw new DeveloperError('c is a required number.');
78
+ }
79
+
80
+ var ratio;
81
+ if (a === 0.0) {
82
+ if (b === 0.0) {
83
+ // Constant function: c = 0.
84
+ return [];
85
+ }
86
+
87
+ // Linear function: b * x + c = 0.
88
+ return [-c / b];
89
+ } else if (b === 0.0) {
90
+ if (c === 0.0) {
91
+ // 2nd order monomial: a * x^2 = 0.
92
+ return [0.0, 0.0];
93
+ }
94
+
95
+ var cMagnitude = Math.abs(c);
96
+ var aMagnitude = Math.abs(a);
97
+
98
+ if ((cMagnitude < aMagnitude) && (cMagnitude / aMagnitude < CesiumMath.EPSILON14)) { // c ~= 0.0.
99
+ // 2nd order monomial: a * x^2 = 0.
100
+ return [0.0, 0.0];
101
+ } else if ((cMagnitude > aMagnitude) && (aMagnitude / cMagnitude < CesiumMath.EPSILON14)) { // a ~= 0.0.
102
+ // Constant function: c = 0.
103
+ return [];
104
+ }
105
+
106
+ // a * x^2 + c = 0
107
+ ratio = -c / a;
108
+
109
+ if (ratio < 0.0) {
110
+ // Both roots are complex.
111
+ return [];
112
+ }
113
+
114
+ // Both roots are real.
115
+ var root = Math.sqrt(ratio);
116
+ return [-root, root];
117
+ } else if (c === 0.0) {
118
+ // a * x^2 + b * x = 0
119
+ ratio = -b / a;
120
+ if (ratio < 0.0) {
121
+ return [ratio, 0.0];
122
+ }
123
+
124
+ return [0.0, ratio];
125
+ }
126
+
127
+ // a * x^2 + b * x + c = 0
128
+ var b2 = b * b;
129
+ var four_ac = 4.0 * a * c;
130
+ var radicand = addWithCancellationCheck(b2, -four_ac, CesiumMath.EPSILON14);
131
+
132
+ if (radicand < 0.0) {
133
+ // Both roots are complex.
134
+ return [];
135
+ }
136
+
137
+ var q = -0.5 * addWithCancellationCheck(b, CesiumMath.sign(b) * Math.sqrt(radicand), CesiumMath.EPSILON14);
138
+ if (b > 0.0) {
139
+ return [q / a, c / q];
140
+ }
141
+
142
+ return [c / q, q / a];
143
+ };
144
+
145
+ return QuadraticRealPolynomial;
146
+ });
@@ -0,0 +1,339 @@
1
+ /*global define*/
2
+ define([
3
+ './DeveloperError',
4
+ './Math',
5
+ './CubicRealPolynomial',
6
+ './QuadraticRealPolynomial'
7
+ ],
8
+ function(
9
+ DeveloperError,
10
+ CesiumMath,
11
+ CubicRealPolynomial,
12
+ QuadraticRealPolynomial) {
13
+ "use strict";
14
+
15
+ /**
16
+ * Defines functions for 4th order polynomial functions of one variable with only real coefficients.
17
+ *
18
+ * @exports QuarticRealPolynomial
19
+ */
20
+ var QuarticRealPolynomial = {};
21
+
22
+ /**
23
+ * Provides the discriminant of the quartic equation from the supplied coefficients.
24
+ * @memberof QuarticRealPolynomial
25
+ *
26
+ * @param {Number} a The coefficient of the 4th order monomial.
27
+ * @param {Number} b The coefficient of the 3rd order monomial.
28
+ * @param {Number} c The coefficient of the 2nd order monomial.
29
+ * @param {Number} d The coefficient of the 1st order monomial.
30
+ * @param {Number} e The coefficient of the 0th order monomial.
31
+ * @returns {Number} The value of the discriminant.
32
+ *
33
+ * @exception {DeveloperError} a is a required number.
34
+ * @exception {DeveloperError} b is a required number.
35
+ * @exception {DeveloperError} c is a required number.
36
+ * @exception {DeveloperError} d is a required number.
37
+ * @exception {DeveloperError} e is a required number.
38
+ */
39
+ QuarticRealPolynomial.discriminant = function(a, b, c, d, e) {
40
+ if (typeof a !== 'number') {
41
+ throw new DeveloperError('a is a required number.');
42
+ }
43
+ if (typeof b !== 'number') {
44
+ throw new DeveloperError('b is a required number.');
45
+ }
46
+ if (typeof c !== 'number') {
47
+ throw new DeveloperError('c is a required number.');
48
+ }
49
+ if (typeof d !== 'number') {
50
+ throw new DeveloperError('d is a required number.');
51
+ }
52
+ if (typeof e !== 'number') {
53
+ throw new DeveloperError('e is a required number.');
54
+ }
55
+
56
+ var a2 = a * a;
57
+ var a3 = a2 * a;
58
+ var b2 = b * b;
59
+ var b3 = b2 * b;
60
+ var c2 = c * c;
61
+ var c3 = c2 * c;
62
+ var d2 = d * d;
63
+ var d3 = d2 * d;
64
+ var e2 = e * e;
65
+ var e3 = e2 * e;
66
+
67
+ var discriminant = (b2 * c2 * d2 - 4.0 * b3 * d3 - 4.0 * a * c3 * d2 + 18 * a * b * c * d3 - 27.0 * a2 * d2 * d2 + 256.0 * a3 * e3) +
68
+ e * (18.0 * b3 * c * d - 4.0 * b2 * c3 + 16.0 * a * c2 * c2 - 80.0 * a * b * c2 * d - 6.0 * a * b2 * d2 + 144.0 * a2 * c * d2) +
69
+ e2 * (144.0 * a * b2 * c - 27.0 * b2 * b2 - 128.0 * a2 * c2 - 192.0 * a2 * b * d);
70
+ return discriminant;
71
+ };
72
+
73
+ function original(a3, a2, a1, a0) {
74
+ var a3Squared = a3 * a3;
75
+
76
+ var p = a2 - 3.0 * a3Squared / 8.0;
77
+ var q = a1 - a2 * a3 / 2.0 + a3Squared * a3 / 8.0;
78
+ var r = a0 - a1 * a3 / 4.0 + a2 * a3Squared / 16.0 - 3.0 * a3Squared * a3Squared / 256.0;
79
+
80
+ // Find the roots of the cubic equations: h^6 + 2 p h^4 + (p^2 - 4 r) h^2 - q^2 = 0.
81
+ var cubicRoots = CubicRealPolynomial.realRoots(1.0, 2.0 * p, p * p - 4.0 * r, -q * q);
82
+
83
+ if (cubicRoots.length > 0) {
84
+ var temp = -a3 / 4.0;
85
+
86
+ // Use the largest positive root.
87
+ var hSquared = cubicRoots[cubicRoots.length - 1];
88
+
89
+ if (Math.abs(hSquared) < CesiumMath.EPSILON14) {
90
+ // y^4 + p y^2 + r = 0.
91
+ var roots = QuadraticRealPolynomial.realRoots(1.0, p, r);
92
+
93
+ if (roots.length === 2) {
94
+ var root0 = roots[0];
95
+ var root1 = roots[1];
96
+
97
+ var y;
98
+ if (root0 >= 0.0 && root1 >= 0.0) {
99
+ var y0 = Math.sqrt(root0);
100
+ var y1 = Math.sqrt(root1);
101
+
102
+ return [temp - y1, temp - y0, temp + y0, temp + y1];
103
+ } else if (root0 >= 0.0 && root1 < 0.0) {
104
+ y = Math.sqrt(root0);
105
+ return [temp - y, temp + y];
106
+ } else if (root0 < 0.0 && root1 >= 0.0) {
107
+ y = Math.sqrt(root1);
108
+ return [temp - y, temp + y];
109
+ }
110
+ }
111
+ return [];
112
+ } else if (hSquared > 0.0) {
113
+ var h = Math.sqrt(hSquared);
114
+
115
+ var m = (p + hSquared - q / h) / 2.0;
116
+ var n = (p + hSquared + q / h) / 2.0;
117
+
118
+ // Now solve the two quadratic factors: (y^2 + h y + m)(y^2 - h y + n);
119
+ var roots1 = QuadraticRealPolynomial.realRoots(1.0, h, m);
120
+ var roots2 = QuadraticRealPolynomial.realRoots(1.0, -h, n);
121
+
122
+ if (roots1.length !== 0) {
123
+ roots1[0] += temp;
124
+ roots1[1] += temp;
125
+
126
+ if (roots2.length !== 0) {
127
+ roots2[0] += temp;
128
+ roots2[1] += temp;
129
+
130
+ if (roots1[1] <= roots2[0]) {
131
+ return [roots1[0], roots1[1], roots2[0], roots2[1]];
132
+ } else if (roots2[1] <= roots1[0]) {
133
+ return [roots2[0], roots2[1], roots1[0], roots1[1]];
134
+ } else if (roots1[0] >= roots2[0] && roots1[1] <= roots2[1]) {
135
+ return [roots2[0], roots1[0], roots1[1], roots2[1]];
136
+ } else if (roots2[0] >= roots1[0] && roots2[1] <= roots1[1]) {
137
+ return [roots1[0], roots2[0], roots2[1], roots1[1]];
138
+ } else if (roots1[0] > roots2[0] && roots1[0] < roots2[1]) {
139
+ return [roots2[0], roots1[0], roots2[1], roots1[1]];
140
+ }
141
+ return [roots1[0], roots2[0], roots1[1], roots2[1]];
142
+ }
143
+ return roots1;
144
+ }
145
+
146
+ if (roots2.length !== 0) {
147
+ roots2[0] += temp;
148
+ roots2[1] += temp;
149
+
150
+ return roots2;
151
+ }
152
+ return [];
153
+ }
154
+ }
155
+ return [];
156
+ }
157
+
158
+ function neumark(a3, a2, a1, a0) {
159
+ var a1Squared = a1 * a1;
160
+ var a2Squared = a2 * a2;
161
+ var a3Squared = a3 * a3;
162
+
163
+ var p = -2.0 * a2;
164
+ var q = a1 * a3 + a2Squared - 4.0 * a0;
165
+ var r = a3Squared * a0 - a1 * a2 * a3 + a1Squared;
166
+
167
+ var cubicRoots = CubicRealPolynomial.realRoots(1.0, p, q, r);
168
+
169
+ if (cubicRoots.length > 0) {
170
+ // Use the most positive root
171
+ var y = cubicRoots[0];
172
+
173
+ var temp = (a2 - y);
174
+ var tempSquared = temp * temp;
175
+
176
+ var g1 = a3 / 2.0;
177
+ var h1 = temp / 2.0;
178
+
179
+ var m = tempSquared - 4.0 * a0;
180
+ var mError = tempSquared + 4.0 * Math.abs(a0);
181
+
182
+ var n = a3Squared - 4.0 * y;
183
+ var nError = a3Squared + 4.0 * Math.abs(y);
184
+
185
+ var g2;
186
+ var h2;
187
+
188
+ if (y < 0.0 || (m * nError < n * mError)) {
189
+ var squareRootOfN = Math.sqrt(n);
190
+ g2 = squareRootOfN / 2.0;
191
+ h2 = squareRootOfN === 0.0 ? 0.0 : (a3 * h1 - a1) / squareRootOfN;
192
+ } else {
193
+ var squareRootOfM = Math.sqrt(m);
194
+ g2 = squareRootOfM === 0.0 ? 0.0 : (a3 * h1 - a1) / squareRootOfM;
195
+ h2 = squareRootOfM / 2.0;
196
+ }
197
+
198
+ var G;
199
+ var g;
200
+ if (g1 === 0.0 && g2 === 0.0) {
201
+ G = 0.0;
202
+ g = 0.0;
203
+ } else if (CesiumMath.sign(g1) === CesiumMath.sign(g2)) {
204
+ G = g1 + g2;
205
+ g = y / G;
206
+ } else {
207
+ g = g1 - g2;
208
+ G = y / g;
209
+ }
210
+
211
+ var H;
212
+ var h;
213
+ if (h1 === 0.0 && h2 === 0.0) {
214
+ H = 0.0;
215
+ h = 0.0;
216
+ } else if (CesiumMath.sign(h1) === CesiumMath.sign(h2)) {
217
+ H = h1 + h2;
218
+ h = a0 / H;
219
+ } else {
220
+ h = h1 - h2;
221
+ H = a0 / h;
222
+ }
223
+
224
+ // Now solve the two quadratic factors: (y^2 + G y + H)(y^2 + g y + h);
225
+ var roots1 = QuadraticRealPolynomial.realRoots(1.0, G, H);
226
+ var roots2 = QuadraticRealPolynomial.realRoots(1.0, g, h);
227
+
228
+ if (roots1.length !== 0) {
229
+ if (roots2.length !== 0) {
230
+ if (roots1[1] <= roots2[0]) {
231
+ return [roots1[0], roots1[1], roots2[0], roots2[1]];
232
+ } else if (roots2[1] <= roots1[0]) {
233
+ return [roots2[0], roots2[1], roots1[0], roots1[1]];
234
+ } else if (roots1[0] >= roots2[0] && roots1[1] <= roots2[1]) {
235
+ return [roots2[0], roots1[0], roots1[1], roots2[1]];
236
+ } else if (roots2[0] >= roots1[0] && roots2[1] <= roots1[1]) {
237
+ return [roots1[0], roots2[0], roots2[1], roots1[1]];
238
+ } else if (roots1[0] > roots2[0] && roots1[0] < roots2[1]) {
239
+ return [roots2[0], roots1[0], roots2[1], roots1[1]];
240
+ } else {
241
+ return [roots1[0], roots2[0], roots1[1], roots2[1]];
242
+ }
243
+ }
244
+ return roots1;
245
+ }
246
+ if (roots2.length !== 0) {
247
+ return roots2;
248
+ }
249
+ }
250
+ return [];
251
+ }
252
+
253
+ /**
254
+ * Provides the real valued roots of the quartic polynomial with the provided coefficients.
255
+ * @memberof QuarticRealPolynomial
256
+ *
257
+ * @param {Number} a The coefficient of the 4th order monomial.
258
+ * @param {Number} b The coefficient of the 3rd order monomial.
259
+ * @param {Number} c The coefficient of the 2nd order monomial.
260
+ * @param {Number} d The coefficient of the 1st order monomial.
261
+ * @param {Number} e The coefficient of the 0th order monomial.
262
+ * @returns {Array} The real valued roots.
263
+ *
264
+ * @exception {DeveloperError} a is a required number.
265
+ * @exception {DeveloperError} b is a required number.
266
+ * @exception {DeveloperError} c is a required number.
267
+ * @exception {DeveloperError} d is a required number.
268
+ * @exception {DeveloperError} e is a required number.
269
+ */
270
+ QuarticRealPolynomial.realRoots = function(a, b, c, d, e) {
271
+ if (typeof a !== 'number') {
272
+ throw new DeveloperError('a is a required number.');
273
+ }
274
+ if (typeof b !== 'number') {
275
+ throw new DeveloperError('b is a required number.');
276
+ }
277
+ if (typeof c !== 'number') {
278
+ throw new DeveloperError('c is a required number.');
279
+ }
280
+ if (typeof d !== 'number') {
281
+ throw new DeveloperError('d is a required number.');
282
+ }
283
+ if (typeof e !== 'number') {
284
+ throw new DeveloperError('e is a required number.');
285
+ }
286
+
287
+ if (Math.abs(a) < CesiumMath.EPSILON15) {
288
+ return CubicRealPolynomial.realRoots(b, c, d, e);
289
+ }
290
+ var a3 = b / a;
291
+ var a2 = c / a;
292
+ var a1 = d / a;
293
+ var a0 = e / a;
294
+
295
+ var k = (a3 < 0.0) ? 1 : 0;
296
+ k += (a2 < 0.0) ? k + 1 : k;
297
+ k += (a1 < 0.0) ? k + 1 : k;
298
+ k += (a0 < 0.0) ? k + 1 : k;
299
+
300
+ switch (k) {
301
+ case 0:
302
+ return original(a3, a2, a1, a0);
303
+ case 1:
304
+ return neumark(a3, a2, a1, a0);
305
+ case 2:
306
+ return neumark(a3, a2, a1, a0);
307
+ case 3:
308
+ return original(a3, a2, a1, a0);
309
+ case 4:
310
+ return original(a3, a2, a1, a0);
311
+ case 5:
312
+ return neumark(a3, a2, a1, a0);
313
+ case 6:
314
+ return original(a3, a2, a1, a0);
315
+ case 7:
316
+ return original(a3, a2, a1, a0);
317
+ case 8:
318
+ return neumark(a3, a2, a1, a0);
319
+ case 9:
320
+ return original(a3, a2, a1, a0);
321
+ case 10:
322
+ return original(a3, a2, a1, a0);
323
+ case 11:
324
+ return neumark(a3, a2, a1, a0);
325
+ case 12:
326
+ return original(a3, a2, a1, a0);
327
+ case 13:
328
+ return original(a3, a2, a1, a0);
329
+ case 14:
330
+ return original(a3, a2, a1, a0);
331
+ case 15:
332
+ return original(a3, a2, a1, a0);
333
+ default:
334
+ return undefined;
335
+ }
336
+ };
337
+
338
+ return QuarticRealPolynomial;
339
+ });