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,243 @@
1
+ /*global define*/
2
+ define([
3
+ './defaultValue',
4
+ './DeveloperError',
5
+ './Cartesian3',
6
+ './Intersect'
7
+ ], function(
8
+ defaultValue,
9
+ DeveloperError,
10
+ Cartesian3,
11
+ Intersect) {
12
+ "use strict";
13
+
14
+ /**
15
+ * Creates an instance of an AxisAlignedBoundingBox from the minimum and maximum points along the x, y, and z axes.
16
+ * @alias AxisAlignedBoundingBox
17
+ * @constructor
18
+ *
19
+ * @param {Cartesian3} [minimum=Cartesian3.ZERO] The minimum point along the x, y, and z axes.
20
+ * @param {Cartesian3} [maximum=Cartesian3.ZERO] The maximum point along the x, y, and z axes.
21
+ * @param {Cartesian3} [center] The center of the box; automatically computed if not supplied.
22
+ *
23
+ * @see BoundingSphere
24
+ */
25
+ var AxisAlignedBoundingBox = function(minimum, maximum, center) {
26
+ /**
27
+ * The minimum point defining the bounding box.
28
+ * @type {Cartesian3}
29
+ */
30
+ this.minimum = Cartesian3.clone(defaultValue(minimum, Cartesian3.ZERO));
31
+
32
+ /**
33
+ * The maximum point defining the bounding box.
34
+ * @type {Cartesian3}
35
+ */
36
+ this.maximum = Cartesian3.clone(defaultValue(maximum, Cartesian3.ZERO));
37
+
38
+ //If center was not defined, compute it.
39
+ if (typeof center === 'undefined') {
40
+ center = Cartesian3.add(this.minimum, this.maximum);
41
+ Cartesian3.multiplyByScalar(center, 0.5, center);
42
+ } else {
43
+ center = Cartesian3.clone(center);
44
+ }
45
+
46
+ /**
47
+ * The center point of the bounding box.
48
+ * @type {Cartesian3}
49
+ */
50
+ this.center = center;
51
+ };
52
+
53
+ /**
54
+ * Computes an instance of an AxisAlignedBoundingBox. The box is determined by
55
+ * finding the points spaced the farthest apart on the x, y, and z axes.
56
+ * @memberof AxisAlignedBoundingBox
57
+ *
58
+ * @param {Array} positions List of points that the bounding box will enclose. Each point must have a <code>x</code>, <code>y</code>, and <code>z</code> properties.
59
+ * @param {AxisAlignedBoundingBox} [result] The object onto which to store the result.
60
+ * @return {AxisAlignedBoundingBox} The modified result parameter or a new AxisAlignedBoundingBox instance if one was not provided.
61
+ *
62
+ * @example
63
+ * // Compute an axis aligned bounding box enclosing two points.
64
+ * var box = AxisAlignedBoundingBox.fromPoints([new Cartesian3(2, 0, 0), new Cartesian3(-2, 0, 0)]);
65
+ */
66
+ AxisAlignedBoundingBox.fromPoints = function(positions, result) {
67
+ if (typeof result === 'undefined') {
68
+ result = new AxisAlignedBoundingBox();
69
+ }
70
+
71
+ if (typeof positions === 'undefined' || positions.length === 0) {
72
+ result.minimum = Cartesian3.clone(Cartesian3.ZERO, result.minimum);
73
+ result.maximum = Cartesian3.clone(Cartesian3.ZERO, result.maximum);
74
+ result.center = Cartesian3.clone(Cartesian3.ZERO, result.center);
75
+ return result;
76
+ }
77
+
78
+ var minimumX = positions[0].x;
79
+ var minimumY = positions[0].y;
80
+ var minimumZ = positions[0].z;
81
+
82
+ var maximumX = positions[0].x;
83
+ var maximumY = positions[0].y;
84
+ var maximumZ = positions[0].z;
85
+
86
+ var length = positions.length;
87
+ for ( var i = 1; i < length; i++) {
88
+ var p = positions[i];
89
+ var x = p.x;
90
+ var y = p.y;
91
+ var z = p.z;
92
+
93
+ minimumX = Math.min(x, minimumX);
94
+ maximumX = Math.max(x, maximumX);
95
+ minimumY = Math.min(y, minimumY);
96
+ maximumY = Math.max(y, maximumY);
97
+ minimumZ = Math.min(z, minimumZ);
98
+ maximumZ = Math.max(z, maximumZ);
99
+ }
100
+
101
+ var minimum = result.minimum;
102
+ minimum.x = minimumX;
103
+ minimum.y = minimumY;
104
+ minimum.z = minimumZ;
105
+
106
+ var maximum = result.maximum;
107
+ maximum.x = maximumX;
108
+ maximum.y = maximumY;
109
+ maximum.z = maximumZ;
110
+
111
+ var center = Cartesian3.add(minimum, maximum, result.center);
112
+ Cartesian3.multiplyByScalar(center, 0.5, center);
113
+
114
+ return result;
115
+ };
116
+
117
+ /**
118
+ * Duplicates a AxisAlignedBoundingBox instance.
119
+ * @memberof AxisAlignedBoundingBox
120
+ *
121
+ * @param {AxisAlignedBoundingBox} box The bounding box to duplicate.
122
+ * @param {AxisAlignedBoundingBox} [result] The object onto which to store the result.
123
+ * @return {AxisAlignedBoundingBox} The modified result parameter or a new AxisAlignedBoundingBox instance if none was provided.
124
+ *
125
+ * @exception {DeveloperError} box is required.
126
+ */
127
+ AxisAlignedBoundingBox.clone = function(box, result) {
128
+ if (typeof box === 'undefined') {
129
+ throw new DeveloperError('box is required');
130
+ }
131
+
132
+ if (typeof result === 'undefined') {
133
+ return new AxisAlignedBoundingBox(box.minimum, box.maximum);
134
+ }
135
+
136
+ result.minimum = Cartesian3.clone(box.minimum, result.minimum);
137
+ result.maximum = Cartesian3.clone(box.maximum, result.maximum);
138
+ result.center = Cartesian3.clone(box.center, result.center);
139
+ return result;
140
+ };
141
+
142
+ /**
143
+ * Compares the provided AxisAlignedBoundingBox componentwise and returns
144
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
145
+ * @memberof AxisAlignedBoundingBox
146
+ *
147
+ * @param {AxisAlignedBoundingBox} [left] The first AxisAlignedBoundingBox.
148
+ * @param {AxisAlignedBoundingBox} [right] The second AxisAlignedBoundingBox.
149
+ * @return {Boolean} <code>true</code> if left and right are equal, <code>false</code> otherwise.
150
+ */
151
+ AxisAlignedBoundingBox.equals = function(left, right) {
152
+ return (left === right) ||
153
+ ((typeof left !== 'undefined') &&
154
+ (typeof right !== 'undefined') &&
155
+ Cartesian3.equals(left.center, right.center) &&
156
+ Cartesian3.equals(left.minimum, right.minimum) &&
157
+ Cartesian3.equals(left.maximum, right.maximum));
158
+ };
159
+
160
+ var intersectScratch = new Cartesian3();
161
+ /**
162
+ * Determines which side of a plane a box is located.
163
+ * @memberof AxisAlignedBoundingBox
164
+ *
165
+ * @param {AxisAlignedBoundingBox} box The bounding box to test.
166
+ * @param {Cartesian4} plane The coefficients of the plane in the form <code>ax + by + cz + d = 0</code>
167
+ * where the coefficients a, b, c, and d are the components x, y, z, and w
168
+ * of the {Cartesian4}, respectively.
169
+ * @return {Intersect} {Intersect.INSIDE} if the entire box is on the side of the plane the normal is pointing,
170
+ * {Intersect.OUTSIDE} if the entire box is on the opposite side, and {Intersect.INTERSETING}
171
+ * if the box intersects the plane.
172
+ *
173
+ * @exception {DeveloperError} box is required.
174
+ * @exception {DeveloperError} plane is required.
175
+ */
176
+ AxisAlignedBoundingBox.intersect = function(box, plane) {
177
+ if (typeof box === 'undefined') {
178
+ throw new DeveloperError('box is required.');
179
+ }
180
+
181
+ if (typeof plane === 'undefined') {
182
+ throw new DeveloperError('plane is required.');
183
+ }
184
+
185
+ intersectScratch = Cartesian3.subtract(box.maximum, box.minimum, intersectScratch);
186
+ var h = Cartesian3.multiplyByScalar(intersectScratch, 0.5, intersectScratch); //The positive half diagonal
187
+ var e = h.x * Math.abs(plane.x) + h.y * Math.abs(plane.y) + h.z * Math.abs(plane.z);
188
+ var s = Cartesian3.dot(box.center, plane) + plane.w; //signed distance from center
189
+
190
+ if (s - e > 0) {
191
+ return Intersect.INSIDE;
192
+ }
193
+
194
+ if (s + e < 0) {
195
+ //Not in front because normals point inward
196
+ return Intersect.OUTSIDE;
197
+ }
198
+
199
+ return Intersect.INTERSECTING;
200
+ };
201
+
202
+ /**
203
+ * Duplicates this AxisAlignedBoundingBox instance.
204
+ * @memberof AxisAlignedBoundingBox
205
+ *
206
+ * @param {AxisAlignedBoundingBox} [result] The object onto which to store the result.
207
+ * @return {AxisAlignedBoundingBox} The modified result parameter or a new AxisAlignedBoundingBox instance if one was not provided.
208
+ */
209
+ AxisAlignedBoundingBox.prototype.clone = function(result) {
210
+ return AxisAlignedBoundingBox.clone(this, result);
211
+ };
212
+
213
+ /**
214
+ * Determines which side of a plane this box is located.
215
+ * @memberof AxisAlignedBoundingBox
216
+ *
217
+ * @param {Cartesian4} plane The coefficients of the plane in the form <code>ax + by + cz + d = 0</code>
218
+ * where the coefficients a, b, c, and d are the components x, y, z, and w
219
+ * of the {Cartesian4}, respectively.
220
+ * @return {Intersect} {Intersect.INSIDE} if the entire box is on the side of the plane the normal is pointing,
221
+ * {Intersect.OUTSIDE} if the entire box is on the opposite side, and {Intersect.INTERSETING}
222
+ * if the box intersects the plane.
223
+ *
224
+ * @exception {DeveloperError} plane is required.
225
+ */
226
+ AxisAlignedBoundingBox.prototype.intersect = function(plane) {
227
+ return AxisAlignedBoundingBox.intersect(this, plane);
228
+ };
229
+
230
+ /**
231
+ * Compares this AxisAlignedBoundingBox against the provided AxisAlignedBoundingBox componentwise and returns
232
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
233
+ * @memberof AxisAlignedBoundingBox
234
+ *
235
+ * @param {AxisAlignedBoundingBox} [right] The right hand side AxisAlignedBoundingBox.
236
+ * @return {Boolean} <code>true</code> if they are equal, <code>false</code> otherwise.
237
+ */
238
+ AxisAlignedBoundingBox.prototype.equals = function(right) {
239
+ return AxisAlignedBoundingBox.equals(this, right);
240
+ };
241
+
242
+ return AxisAlignedBoundingBox;
243
+ });
@@ -0,0 +1,364 @@
1
+ /*global define*/
2
+ define([
3
+ './defaultValue',
4
+ './DeveloperError',
5
+ './Cartographic',
6
+ './GeographicProjection',
7
+ './Intersect'
8
+ ], function(
9
+ defaultValue,
10
+ DeveloperError,
11
+ Cartographic,
12
+ GeographicProjection,
13
+ Intersect) {
14
+ "use strict";
15
+
16
+ /**
17
+ * A bounding rectangle given by a corner, width and height.
18
+ * @alias BoundingRectangle
19
+ * @constructor
20
+ *
21
+ * @param {Number} [x=0.0] The x coordinate of the rectangle.
22
+ * @param {Number} [y=0.0] The y coordinate of the rectangle.
23
+ * @param {Number} [width=0.0] The width of the rectangle.
24
+ * @param {Number} [height=0.0] The height of the rectangle.
25
+ *
26
+ * @see BoundingSphere
27
+ */
28
+ var BoundingRectangle = function(x, y, width, height) {
29
+ /**
30
+ * The x coordinate of the rectangle.
31
+ * @type Number
32
+ */
33
+ this.x = defaultValue(x, 0.0);
34
+
35
+ /**
36
+ * The y coordinate of the rectangle.
37
+ * @type Number
38
+ */
39
+ this.y = defaultValue(y, 0.0);
40
+
41
+ /**
42
+ * The width of the rectangle.
43
+ * @type Number
44
+ */
45
+ this.width = defaultValue(width, 0.0);
46
+
47
+ /**
48
+ * The height of the rectangle.
49
+ * @type Number
50
+ */
51
+ this.height = defaultValue(height, 0.0);
52
+ };
53
+
54
+ /**
55
+ * Computes a bounding rectangle enclosing the list of 2D points.
56
+ * The rectangle is oriented with the corner at the bottom left.
57
+ * @memberof BoundingRectangle
58
+ *
59
+ * @param {Array} positions List of points that the bounding rectangle will enclose. Each point must have <code>x</code> and <code>y</code> properties.
60
+ * @param {BoundingRectangle} [result] The object onto which to store the result.
61
+ * @return {BoundingRectangle} The modified result parameter or a new BoundingRectangle instance if one was not provided.
62
+ */
63
+ BoundingRectangle.fromPoints = function(positions, result) {
64
+ if (typeof result === 'undefined') {
65
+ result = new BoundingRectangle();
66
+ }
67
+
68
+ if (typeof positions === 'undefined' || positions.length === 0) {
69
+ result.x = 0;
70
+ result.y = 0;
71
+ result.width = 0;
72
+ result.height = 0;
73
+ return result;
74
+ }
75
+
76
+ var length = positions.length;
77
+
78
+ var minimumX = positions[0].x;
79
+ var minimumY = positions[0].y;
80
+
81
+ var maximumX = positions[0].x;
82
+ var maximumY = positions[0].y;
83
+
84
+ for ( var i = 1; i < length; i++) {
85
+ var p = positions[i];
86
+ var x = p.x;
87
+ var y = p.y;
88
+
89
+ minimumX = Math.min(x, minimumX);
90
+ maximumX = Math.max(x, maximumX);
91
+ minimumY = Math.min(y, minimumY);
92
+ maximumY = Math.max(y, maximumY);
93
+ }
94
+
95
+ result.x = minimumX;
96
+ result.y = minimumY;
97
+ result.width = maximumX - minimumX;
98
+ result.height = maximumY - minimumY;
99
+ return result;
100
+ };
101
+
102
+ var defaultProjection = new GeographicProjection();
103
+ var fromExtentLowerLeft = new Cartographic();
104
+ var fromExtentUpperRight = new Cartographic();
105
+ /**
106
+ * Computes a bounding rectangle from an extent.
107
+ * @memberof BoundingRectangle
108
+ *
109
+ * @param {Extent} extent The valid extent used to create a bounding rectangle.
110
+ * @param {Object} [projection=GeographicProjection] The projection used to project the extent into 2D.
111
+ * @param {BoundingRectangle} [result] The object onto which to store the result.
112
+ * @return {BoundingRectangle} The modified result parameter or a new BoundingRectangle instance if one was not provided.
113
+ */
114
+ BoundingRectangle.fromExtent = function(extent, projection, result) {
115
+ if (typeof result === 'undefined') {
116
+ result = new BoundingRectangle();
117
+ }
118
+
119
+ if (typeof extent === 'undefined') {
120
+ result.x = 0;
121
+ result.y = 0;
122
+ result.width = 0;
123
+ result.height = 0;
124
+ return result;
125
+ }
126
+
127
+ projection = (typeof projection !== 'undefined') ? projection : defaultProjection;
128
+
129
+ var lowerLeft = projection.project(extent.getSouthwest(fromExtentLowerLeft));
130
+ var upperRight = projection.project(extent.getNortheast(fromExtentUpperRight));
131
+
132
+ upperRight.subtract(lowerLeft, upperRight);
133
+
134
+ result.x = lowerLeft.x;
135
+ result.y = lowerLeft.y;
136
+ result.width = upperRight.x;
137
+ result.height = upperRight.y;
138
+ return result;
139
+ };
140
+
141
+ /**
142
+ * Duplicates a BoundingRectangle instance.
143
+ * @memberof BoundingRectangle
144
+ *
145
+ * @param {BoundingRectangle} rectangle The bounding rectangle to duplicate.
146
+ * @param {BoundingRectangle} [result] The object onto which to store the result.
147
+ * @return {BoundingRectangle} The modified result parameter or a new BoundingRectangle instance if one was not provided.
148
+ *
149
+ * @exception {DeveloperError} rectangle is required.
150
+ */
151
+ BoundingRectangle.clone = function(rectangle, result) {
152
+ if (typeof rectangle === 'undefined') {
153
+ throw new DeveloperError('rectangle is required');
154
+ }
155
+
156
+ if (typeof result === 'undefined') {
157
+ return new BoundingRectangle(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
158
+ }
159
+
160
+ result.x = rectangle.x;
161
+ result.y = rectangle.y;
162
+ result.width = rectangle.width;
163
+ result.height = rectangle.height;
164
+ return result;
165
+ };
166
+
167
+ /**
168
+ * Computes a bounding rectangle that is the union of the left and right bounding rectangles.
169
+ * @memberof BoundingRectangle
170
+ *
171
+ * @param {BoundingRectangle} left A rectangle to enclose in bounding rectangle.
172
+ * @param {BoundingRectangle} right A rectangle to enclose in a bounding rectangle.
173
+ * @param {BoundingRectangle} [result] The object onto which to store the result.
174
+ * @return {BoundingRectangle} The modified result parameter or a new BoundingRectangle instance if one was not provided.
175
+ *
176
+ * @exception {DeveloperError} left is required.
177
+ * @exception {DeveloperError} right is required.
178
+ */
179
+ BoundingRectangle.union = function(left, right, result) {
180
+ if (typeof left === 'undefined') {
181
+ throw new DeveloperError('left is required.');
182
+ }
183
+
184
+ if (typeof right === 'undefined') {
185
+ throw new DeveloperError('right is required.');
186
+ }
187
+
188
+ if (typeof result === 'undefined') {
189
+ result = new BoundingRectangle();
190
+ }
191
+
192
+ var lowerLeftX = Math.min(left.x, right.x);
193
+ var lowerLeftY = Math.min(left.y, right.y);
194
+ var upperRightX = Math.max(left.x + left.width, right.x + right.width);
195
+ var upperRightY = Math.max(left.y + left.height, right.y + right.height);
196
+
197
+ result.x = lowerLeftX;
198
+ result.y = lowerLeftY;
199
+ result.width = upperRightX - lowerLeftX;
200
+ result.height = upperRightY - lowerLeftY;
201
+ return result;
202
+ };
203
+
204
+ /**
205
+ * Computes a bounding rectangle by enlarging the provided rectangle until it contains the provided point.
206
+ * @memberof BoundingRectangle
207
+ *
208
+ * @param {BoundingRectangle} rectangle A rectangle to expand.
209
+ * @param {Cartesian2} point A point to enclose in a bounding rectangle.
210
+ * @param {BoundingRectangle} [result] The object onto which to store the result.
211
+ * @return {BoundingRectangle} The modified result parameter or a new BoundingRectangle instance if one was not provided.
212
+ *
213
+ * @exception {DeveloperError} rectangle is required.
214
+ * @exception {DeveloperError} point is required.
215
+ */
216
+ BoundingRectangle.expand = function(rectangle, point, result) {
217
+ if (typeof rectangle === 'undefined') {
218
+ throw new DeveloperError('rectangle is required.');
219
+ }
220
+
221
+ if (typeof point === 'undefined') {
222
+ throw new DeveloperError('point is required.');
223
+ }
224
+
225
+ result = BoundingRectangle.clone(rectangle, result);
226
+
227
+ var width = point.x - result.x;
228
+ var height = point.y - result.y;
229
+
230
+ if (width > result.width) {
231
+ result.width = width;
232
+ } else if (width < 0) {
233
+ result.width -= width;
234
+ result.x = point.x;
235
+ }
236
+
237
+ if (height > result.height) {
238
+ result.height = height;
239
+ } else if (height < 0) {
240
+ result.height -= height;
241
+ result.y = point.y;
242
+ }
243
+
244
+ return result;
245
+ };
246
+
247
+ /**
248
+ * Determines if two rectangles intersect.
249
+ * @memberof BoundingRectangle
250
+ *
251
+ * @param {BoundingRectangle} left A rectangle to check for intersection.
252
+ * @param {BoundingRectangle} right The other rectangle to check for intersection.
253
+ * @return {Intersect} <code>Intersect.INTESECTING</code> if the rectangles intersect, <code>Intersect.OUTSIDE</code> otherwise.
254
+ *
255
+ * @exception {DeveloperError} left is required.
256
+ * @exception {DeveloperError} right is required.
257
+ */
258
+ BoundingRectangle.intersect = function(left, right) {
259
+ if (typeof left === 'undefined') {
260
+ throw new DeveloperError('left is required.');
261
+ }
262
+
263
+ if (typeof right === 'undefined') {
264
+ throw new DeveloperError('right is required.');
265
+ }
266
+
267
+ var leftX = left.x;
268
+ var leftY = left.y;
269
+ var rightX = right.x;
270
+ var rightY = right.y;
271
+ if (!(leftX > rightX + right.width ||
272
+ leftX + left.width < rightX ||
273
+ leftY + left.height < rightY ||
274
+ leftY > rightY + right.height)) {
275
+ return Intersect.INTERSECTING;
276
+ }
277
+
278
+ return Intersect.OUTSIDE;
279
+ };
280
+
281
+ /**
282
+ * Compares the provided BoundingRectangles componentwise and returns
283
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
284
+ * @memberof BoundingRectangle
285
+ *
286
+ * @param {BoundingRectangle} [left] The first BoundingRectangle.
287
+ * @param {BoundingRectangle} [right] The second BoundingRectangle.
288
+ * @return {Boolean} <code>true</code> if left and right are equal, <code>false</code> otherwise.
289
+ */
290
+ BoundingRectangle.equals = function(left, right) {
291
+ return (left === right) ||
292
+ ((typeof left !== 'undefined') &&
293
+ (typeof right !== 'undefined') &&
294
+ (left.x === right.x) &&
295
+ (left.y === right.y) &&
296
+ (left.width === right.width) &&
297
+ (left.height === right.height));
298
+ };
299
+
300
+ /**
301
+ * Duplicates this BoundingRectangle instance.
302
+ * @memberof BoundingRectangle
303
+ *
304
+ * @param {BoundingRectangle} [result] The object onto which to store the result.
305
+ * @return {BoundingRectangle} The modified result parameter or a new BoundingRectangle instance if one was not provided.
306
+ */
307
+ BoundingRectangle.prototype.clone = function(result) {
308
+ return BoundingRectangle.clone(this, result);
309
+ };
310
+
311
+ /**
312
+ * Computes a bounding rectangle that contains both this bounding rectangle and the argument rectangle.
313
+ * @memberof BoundingRectangle
314
+ *
315
+ * @param {BoundingRectangle} right The rectangle to enclose in this bounding rectangle.
316
+ * @param {BoundingRectangle} [result] The object onto which to store the result.
317
+ * @return {BoundingRectangle} The modified result parameter or a new BoundingRectangle instance if one was not provided.
318
+ *
319
+ * @exception {DeveloperError} right is required.
320
+ */
321
+ BoundingRectangle.prototype.union = function(right, result) {
322
+ return BoundingRectangle.union(this, right, result);
323
+ };
324
+
325
+ /**
326
+ * Computes a bounding rectangle that is rectangle expanded to contain point.
327
+ * @memberof BoundingRectangle
328
+ *
329
+ * @param {BoundingRectangle} point A point to enclose in a bounding rectangle.
330
+ * @return {BoundingRectangle} The modified result parameter or a new BoundingRectangle instance if one was not provided.
331
+ *
332
+ * @exception {DeveloperError} point is required.
333
+ */
334
+ BoundingRectangle.prototype.expand = function(point, result) {
335
+ return BoundingRectangle.expand(this, point, result);
336
+ };
337
+
338
+ /**
339
+ * Determines if this rectangle intersects with another.
340
+ * @memberof BoundingRectangle
341
+ *
342
+ * @param {BoundingRectangle} right A rectangle to check for intersection.
343
+ * @return {Intersect} <code>Intersect.INTESECTING</code> if the rectangles intersect, <code>Intersect.OUTSIDE</code> otherwise.
344
+ *
345
+ * @exception {DeveloperError} right is required.
346
+ */
347
+ BoundingRectangle.prototype.intersect = function(right) {
348
+ return BoundingRectangle.intersect(this, right);
349
+ };
350
+
351
+ /**
352
+ * Compares this BoundingRectangle against the provided BoundingRectangle componentwise and returns
353
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
354
+ * @memberof BoundingRectangle
355
+ *
356
+ * @param {BoundingRectangle} [right] The right hand side BoundingRectangle.
357
+ * @return {Boolean} <code>true</code> if they are equal, <code>false</code> otherwise.
358
+ */
359
+ BoundingRectangle.prototype.equals = function(right) {
360
+ return BoundingRectangle.equals(this, right);
361
+ };
362
+
363
+ return BoundingRectangle;
364
+ });