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,833 @@
1
+ /*global define*/
2
+ define([
3
+ './Cartesian2',
4
+ './defaultValue',
5
+ './DeveloperError',
6
+ './freezeObject'
7
+ ], function(
8
+ Cartesian2,
9
+ defaultValue,
10
+ DeveloperError,
11
+ freezeObject) {
12
+ "use strict";
13
+
14
+ /**
15
+ * A 2x2 matrix, indexable as a column-major order array.
16
+ * Constructor parameters are in row-major order for code readability.
17
+ * @alias Matrix2
18
+ * @constructor
19
+ *
20
+ * @param {Number} [column0Row0=0.0] The value for column 0, row 0.
21
+ * @param {Number} [column1Row0=0.0] The value for column 1, row 0.
22
+ * @param {Number} [column0Row1=0.0] The value for column 0, row 1.
23
+ * @param {Number} [column1Row1=0.0] The value for column 1, row 1.
24
+ *
25
+ * @see Matrix2.fromColumnMajor
26
+ * @see Matrix2.fromRowMajorArray
27
+ * @see Matrix2.fromScale
28
+ * @see Matrix2.fromUniformScale
29
+ * @see Matrix3
30
+ * @see Matrix4
31
+ */
32
+ var Matrix2 = function(column0Row0, column1Row0, column0Row1, column1Row1) {
33
+ this[0] = defaultValue(column0Row0, 0.0);
34
+ this[1] = defaultValue(column0Row1, 0.0);
35
+ this[2] = defaultValue(column1Row0, 0.0);
36
+ this[3] = defaultValue(column1Row1, 0.0);
37
+ };
38
+
39
+ /**
40
+ * Duplicates a Matrix2 instance.
41
+ * @memberof Matrix2
42
+ *
43
+ * @param {Matrix2} matrix The matrix to duplicate.
44
+ * @param {Matrix2} [result] The object onto which to store the result.
45
+ * @return {Matrix2} The modified result parameter or a new Matrix2 instance if one was not provided.
46
+ *
47
+ * @exception {DeveloperError} matrix is required.
48
+ */
49
+ Matrix2.clone = function(values, result) {
50
+ if (typeof values === 'undefined') {
51
+ throw new DeveloperError('values is required');
52
+ }
53
+ if (typeof result === 'undefined') {
54
+ return new Matrix2(values[0], values[2],
55
+ values[1], values[3]);
56
+ }
57
+ result[0] = values[0];
58
+ result[1] = values[1];
59
+ result[2] = values[2];
60
+ result[3] = values[3];
61
+ return result;
62
+ };
63
+
64
+ /**
65
+ * Creates a Matrix2 instance from a column-major order array.
66
+ * @memberof Matrix2
67
+ * @function
68
+ *
69
+ * @param {Array} values The column-major order array.
70
+ * @param {Matrix2} [result] The object in which the result will be stored, if undefined a new instance will be created.
71
+ * @returns The modified result parameter, or a new Matrix2 instance if one was not provided.
72
+ *
73
+ * @exception {DeveloperError} values is required.
74
+ */
75
+ Matrix2.fromColumnMajorArray = Matrix2.clone;
76
+
77
+ /**
78
+ * Creates a Matrix2 instance from a row-major order array.
79
+ * The resulting matrix will be in column-major order.
80
+ * @memberof Matrix2
81
+ *
82
+ * @param {Array} values The row-major order array.
83
+ * @param {Matrix2} [result] The object in which the result will be stored, if undefined a new instance will be created.
84
+ * @returns The modified result parameter, or a new Matrix2 instance if one was not provided.
85
+ *
86
+ * @exception {DeveloperError} values is required.
87
+ */
88
+ Matrix2.fromRowMajorArray = function(values, result) {
89
+ if (typeof values === 'undefined') {
90
+ throw new DeveloperError('values is required.');
91
+ }
92
+ if (typeof result === 'undefined') {
93
+ return new Matrix2(values[0], values[1],
94
+ values[2], values[3]);
95
+ }
96
+ result[0] = values[0];
97
+ result[1] = values[2];
98
+ result[2] = values[1];
99
+ result[3] = values[3];
100
+ return result;
101
+ };
102
+
103
+ /**
104
+ * Computes a Matrix2 instance representing a non-uniform scale.
105
+ * @memberof Matrix2
106
+ *
107
+ * @param {Cartesian2} scale The x and y scale factors.
108
+ * @param {Matrix2} [result] The object in which the result will be stored, if undefined a new instance will be created.
109
+ * @returns The modified result parameter, or a new Matrix2 instance if one was not provided.
110
+ *
111
+ * @exception {DeveloperError} scale is required.
112
+ *
113
+ * @example
114
+ * // Creates
115
+ * // [7.0, 0.0]
116
+ * // [0.0, 8.0]
117
+ * var m = Matrix2.fromScale(new Cartesian2(7.0, 8.0));
118
+ */
119
+ Matrix2.fromScale = function(scale, result) {
120
+ if (typeof scale === 'undefined') {
121
+ throw new DeveloperError('scale is required.');
122
+ }
123
+ if (typeof result === 'undefined') {
124
+ return new Matrix2(
125
+ scale.x, 0.0,
126
+ 0.0, scale.y);
127
+ }
128
+
129
+ result[0] = scale.x;
130
+ result[1] = 0.0;
131
+ result[2] = 0.0;
132
+ result[3] = scale.y;
133
+ return result;
134
+ };
135
+
136
+ /**
137
+ * Computes a Matrix2 instance representing a uniform scale.
138
+ * @memberof Matrix2
139
+ *
140
+ * @param {Number} scale The uniform scale factor.
141
+ * @param {Matrix2} [result] The object in which the result will be stored, if undefined a new instance will be created.
142
+ * @returns The modified result parameter, or a new Matrix2 instance if one was not provided.
143
+ *
144
+ * @exception {DeveloperError} scale is required.
145
+ *
146
+ * @example
147
+ * // Creates
148
+ * // [2.0, 0.0]
149
+ * // [0.0, 2.0]
150
+ * var m = Matrix2.fromUniformScale(2.0);
151
+ */
152
+ Matrix2.fromUniformScale = function(scale, result) {
153
+ if (typeof scale !== 'number') {
154
+ throw new DeveloperError('scale is required.');
155
+ }
156
+ if (typeof result === 'undefined') {
157
+ return new Matrix2(
158
+ scale, 0.0,
159
+ 0.0, scale);
160
+ }
161
+
162
+ result[0] = scale;
163
+ result[1] = 0.0;
164
+ result[2] = 0.0;
165
+ result[3] = scale;
166
+ return result;
167
+ };
168
+
169
+ /**
170
+ * Creates a rotation matrix.
171
+ *
172
+ * @param {Number} angle The angle, in radians, of the rotation. Positive angles are counterclockwise.
173
+ * @param {Matrix2} [result] The object in which the result will be stored, if undefined a new instance will be created.
174
+ *
175
+ * @returns The modified result parameter, or a new Matrix2 instance if one was not provided.
176
+ *
177
+ * @exception {DeveloperError} angle is required.
178
+ *
179
+ * @example
180
+ * // Rotate a point 45 degrees counterclockwise.
181
+ * var p = new Cartesian2(5, 6);
182
+ * var m = Matrix2.fromRotation(CesiumMath.toRadians(45.0));
183
+ * var rotated = m.multiplyByVector(p);
184
+ */
185
+ Matrix2.fromRotation = function(angle, result) {
186
+ if (typeof angle === 'undefined') {
187
+ throw new DeveloperError('angle is required.');
188
+ }
189
+
190
+ var cosAngle = Math.cos(angle);
191
+ var sinAngle = Math.sin(angle);
192
+
193
+ if (typeof result === 'undefined') {
194
+ return new Matrix2(
195
+ cosAngle, -sinAngle,
196
+ sinAngle, cosAngle);
197
+ }
198
+ result[0] = cosAngle;
199
+ result[1] = sinAngle;
200
+ result[2] = -sinAngle;
201
+ result[3] = cosAngle;
202
+ return result;
203
+ };
204
+
205
+ /**
206
+ * Creates an Array from the provided Matrix2 instance.
207
+ * The array will be in column-major order.
208
+ * @memberof Matrix2
209
+ *
210
+ * @param {Matrix2} matrix The matrix to use..
211
+ * @param {Array} [result] The Array onto which to store the result.
212
+ * @return {Array} The modified Array parameter or a new Array instance if one was not provided.
213
+ *
214
+ * @exception {DeveloperError} matrix is required.
215
+ */
216
+ Matrix2.toArray = function(matrix, result) {
217
+ if (typeof matrix === 'undefined') {
218
+ throw new DeveloperError('matrix is required');
219
+ }
220
+ if (typeof result === 'undefined') {
221
+ return [matrix[0], matrix[1], matrix[2], matrix[3]];
222
+ }
223
+ result[0] = matrix[0];
224
+ result[1] = matrix[1];
225
+ result[2] = matrix[2];
226
+ result[3] = matrix[3];
227
+ return result;
228
+ };
229
+
230
+ /**
231
+ * Computes the array index of the element at the provided row and column.
232
+ * @memberof Matrix2
233
+ *
234
+ * @param {Number} row The zero-based index of the row.
235
+ * @param {Number} column The zero-based index of the column.
236
+ * @return {Number} The index of the element at the provided row and column.
237
+ *
238
+ * @exception {DeveloperError} row is required and must be 0 or 1.
239
+ * @exception {DeveloperError} column is required and must be 0 or 1.
240
+ *
241
+ * @example
242
+ * var myMatrix = new Matrix2();
243
+ * var column1Row0Index = Matrix2.getElementIndex(1, 0);
244
+ * var column1Row0 = myMatrix[column1Row0Index]
245
+ * myMatrix[column1Row0Index] = 10.0;
246
+ */
247
+ Matrix2.getElementIndex = function(column, row) {
248
+ if (typeof row !== 'number' || row < 0 || row > 1) {
249
+ throw new DeveloperError('row is required and must be 0 or 1.');
250
+ }
251
+ if (typeof column !== 'number' || column < 0 || column > 1) {
252
+ throw new DeveloperError('column is required and must be 0 or 1.');
253
+ }
254
+ return column * 2 + row;
255
+ };
256
+
257
+ /**
258
+ * Retrieves a copy of the matrix column at the provided index as a Cartesian2 instance.
259
+ * @memberof Matrix2
260
+ *
261
+ * @param {Matrix2} matrix The matrix to use.
262
+ * @param {Number} index The zero-based index of the column to retrieve.
263
+ * @param {Cartesian2} [result] The object onto which to store the result.
264
+ * @return {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.
265
+ *
266
+ * @exception {DeveloperError} matrix is required.
267
+ * @exception {DeveloperError} index is required and must be 0 or 1.
268
+ *
269
+ * @see Cartesian2
270
+ */
271
+ Matrix2.getColumn = function(matrix, index, result) {
272
+ if (typeof matrix === 'undefined') {
273
+ throw new DeveloperError('matrix is required.');
274
+ }
275
+
276
+ if (typeof index !== 'number' || index < 0 || index > 1) {
277
+ throw new DeveloperError('index is required and must be 0 or 1.');
278
+ }
279
+
280
+ var startIndex = index * 2;
281
+ var x = matrix[startIndex];
282
+ var y = matrix[startIndex + 1];
283
+
284
+ if (typeof result === 'undefined') {
285
+ return new Cartesian2(x, y);
286
+ }
287
+ result.x = x;
288
+ result.y = y;
289
+ return result;
290
+ };
291
+
292
+ /**
293
+ * Computes a new matrix that replaces the specified column in the provided matrix with the provided Cartesian2 instance.
294
+ * @memberof Matrix2
295
+ *
296
+ * @param {Matrix2} matrix The matrix to use.
297
+ * @param {Number} index The zero-based index of the column to set.
298
+ * @param {Cartesian2} cartesian The Cartesian whose values will be assigned to the specified column.
299
+ * @param {Cartesian2} [result] The object onto which to store the result.
300
+ * @return {Matrix2} The modified result parameter or a new Matrix2 instance if one was not provided.
301
+ *
302
+ * @exception {DeveloperError} matrix is required.
303
+ * @exception {DeveloperError} cartesian is required.
304
+ * @exception {DeveloperError} index is required and must be 0 or 1.
305
+ *
306
+ * @see Cartesian2
307
+ */
308
+ Matrix2.setColumn = function(matrix, index, cartesian, result) {
309
+ if (typeof matrix === 'undefined') {
310
+ throw new DeveloperError('matrix is required');
311
+ }
312
+ if (typeof cartesian === 'undefined') {
313
+ throw new DeveloperError('cartesian is required');
314
+ }
315
+ if (typeof index !== 'number' || index < 0 || index > 1) {
316
+ throw new DeveloperError('index is required and must be 0 or 1.');
317
+ }
318
+ result = Matrix2.clone(matrix, result);
319
+ var startIndex = index * 2;
320
+ result[startIndex] = cartesian.x;
321
+ result[startIndex + 1] = cartesian.y;
322
+ return result;
323
+ };
324
+
325
+ /**
326
+ * Retrieves a copy of the matrix row at the provided index as a Cartesian2 instance.
327
+ * @memberof Matrix2
328
+ *
329
+ * @param {Matrix2} matrix The matrix to use.
330
+ * @param {Number} index The zero-based index of the row to retrieve.
331
+ * @param {Cartesian2} [result] The object onto which to store the result.
332
+ * @return {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.
333
+ *
334
+ * @exception {DeveloperError} matrix is required.
335
+ * @exception {DeveloperError} index is required and must be 0 or 1.
336
+ *
337
+ * @see Cartesian2
338
+ */
339
+ Matrix2.getRow = function(matrix, index, result) {
340
+ if (typeof matrix === 'undefined') {
341
+ throw new DeveloperError('matrix is required.');
342
+ }
343
+
344
+ if (typeof index !== 'number' || index < 0 || index > 1) {
345
+ throw new DeveloperError('index is required and must be 0 or 1.');
346
+ }
347
+
348
+ var x = matrix[index];
349
+ var y = matrix[index + 2];
350
+
351
+ if (typeof result === 'undefined') {
352
+ return new Cartesian2(x, y);
353
+ }
354
+ result.x = x;
355
+ result.y = y;
356
+ return result;
357
+ };
358
+
359
+ /**
360
+ * Computes a new matrix that replaces the specified row in the provided matrix with the provided Cartesian2 instance.
361
+ * @memberof Matrix2
362
+ *
363
+ * @param {Matrix2} matrix The matrix to use.
364
+ * @param {Number} index The zero-based index of the row to set.
365
+ * @param {Cartesian2} cartesian The Cartesian whose values will be assigned to the specified row.
366
+ * @param {Cartesian2} [result] The object onto which to store the result.
367
+ * @return {Matrix2} The modified result parameter or a new Matrix2 instance if one was not provided.
368
+ *
369
+ * @exception {DeveloperError} matrix is required.
370
+ * @exception {DeveloperError} cartesian is required.
371
+ * @exception {DeveloperError} index is required and must be 0 or 1.
372
+ *
373
+ * @see Cartesian2
374
+ */
375
+ Matrix2.setRow = function(matrix, index, cartesian, result) {
376
+ if (typeof matrix === 'undefined') {
377
+ throw new DeveloperError('matrix is required');
378
+ }
379
+ if (typeof cartesian === 'undefined') {
380
+ throw new DeveloperError('cartesian is required');
381
+ }
382
+ if (typeof index !== 'number' || index < 0 || index > 1) {
383
+ throw new DeveloperError('index is required and must be 0 or 1.');
384
+ }
385
+
386
+ result = Matrix2.clone(matrix, result);
387
+ result[index] = cartesian.x;
388
+ result[index + 2] = cartesian.y;
389
+ return result;
390
+ };
391
+
392
+ /**
393
+ * Computes the product of two matrices.
394
+ * @memberof Matrix2
395
+ *
396
+ * @param {Matrix2} left The first matrix.
397
+ * @param {Matrix2} right The second matrix.
398
+ * @param {Matrix2} [result] The object onto which to store the result.
399
+ * @return {Matrix2} The modified result parameter or a new Matrix2 instance if one was not provided.
400
+ *
401
+ * @exception {DeveloperError} left is required.
402
+ * @exception {DeveloperError} right is required.
403
+ */
404
+ Matrix2.multiply = function(left, right, result) {
405
+ if (typeof left === 'undefined') {
406
+ throw new DeveloperError('left is required');
407
+ }
408
+ if (typeof right === 'undefined') {
409
+ throw new DeveloperError('right is required');
410
+ }
411
+
412
+ var column0Row0 = left[0] * right[0] + left[2] * right[1];
413
+ var column1Row0 = left[0] * right[2] + left[2] * right[3];
414
+ var column0Row1 = left[1] * right[0] + left[3] * right[1];
415
+ var column1Row1 = left[1] * right[2] + left[3] * right[3];
416
+
417
+ if (typeof result === 'undefined') {
418
+ return new Matrix2(column0Row0, column1Row0,
419
+ column0Row1, column1Row1);
420
+ }
421
+ result[0] = column0Row0;
422
+ result[1] = column0Row1;
423
+ result[2] = column1Row0;
424
+ result[3] = column1Row1;
425
+ return result;
426
+ };
427
+
428
+ /**
429
+ * Computes the product of a matrix and a column vector.
430
+ * @memberof Matrix2
431
+ *
432
+ * @param {Matrix2} matrix The matrix.
433
+ * @param {Cartesian2} cartesian The column.
434
+ * @param {Cartesian2} [result] The object onto which to store the result.
435
+ * @return {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.
436
+ *
437
+ * @exception {DeveloperError} matrix is required.
438
+ * @exception {DeveloperError} cartesian is required.
439
+ */
440
+ Matrix2.multiplyByVector = function(matrix, cartesian, result) {
441
+ if (typeof matrix === 'undefined') {
442
+ throw new DeveloperError('matrix is required');
443
+ }
444
+ if (typeof cartesian === 'undefined') {
445
+ throw new DeveloperError('cartesian is required');
446
+ }
447
+
448
+ var x = matrix[0] * cartesian.x + matrix[2] * cartesian.y;
449
+ var y = matrix[1] * cartesian.x + matrix[3] * cartesian.y;
450
+
451
+ if (typeof result === 'undefined') {
452
+ return new Cartesian2(x, y);
453
+ }
454
+ result.x = x;
455
+ result.y = y;
456
+ return result;
457
+ };
458
+
459
+ /**
460
+ * Computes the product of a matrix and a scalar.
461
+ * @memberof Matrix2
462
+ *
463
+ * @param {Matrix2} matrix The matrix.
464
+ * @param {Number} scalar The number to multiply by.
465
+ * @param {Matrix2} [result] The object onto which to store the result.
466
+ * @return {Matrix2} The modified result parameter or a new Cartesian2 instance if one was not provided.
467
+ *
468
+ * @exception {DeveloperError} matrix is required.
469
+ * @exception {DeveloperError} scalar is required and must be a number.
470
+ */
471
+ Matrix2.multiplyByScalar = function(matrix, scalar, result) {
472
+ if (typeof matrix === 'undefined') {
473
+ throw new DeveloperError('matrix is required');
474
+ }
475
+ if (typeof scalar !== 'number') {
476
+ throw new DeveloperError('scalar is required and must be a number');
477
+ }
478
+
479
+ if (typeof result === 'undefined') {
480
+ return new Matrix2(matrix[0] * scalar, matrix[2] * scalar,
481
+ matrix[1] * scalar, matrix[3] * scalar);
482
+ }
483
+ result[0] = matrix[0] * scalar;
484
+ result[1] = matrix[1] * scalar;
485
+ result[2] = matrix[2] * scalar;
486
+ result[3] = matrix[3] * scalar;
487
+ return result;
488
+ };
489
+
490
+ /**
491
+ * Creates a negated copy of the provided matrix.
492
+ * @memberof Matrix2
493
+ *
494
+ * @param {Matrix2} matrix The matrix to negate.
495
+ * @param {Matrix2} [result] The object onto which to store the result.
496
+ * @return {Matrix2} The modified result parameter or a new Matrix2 instance if one was not provided.
497
+ *
498
+ * @exception {DeveloperError} matrix is required.
499
+ */
500
+ Matrix2.negate = function(matrix, result) {
501
+ if (typeof matrix === 'undefined') {
502
+ throw new DeveloperError('matrix is required');
503
+ }
504
+
505
+ if (typeof result === 'undefined') {
506
+ return new Matrix2(-matrix[0], -matrix[2],
507
+ -matrix[1], -matrix[3]);
508
+ }
509
+ result[0] = -matrix[0];
510
+ result[1] = -matrix[1];
511
+ result[2] = -matrix[2];
512
+ result[3] = -matrix[3];
513
+ return result;
514
+ };
515
+
516
+ /**
517
+ * Computes the transpose of the provided matrix.
518
+ * @memberof Matrix2
519
+ *
520
+ * @param {Matrix2} matrix The matrix to transpose.
521
+ * @param {Matrix2} [result] The object onto which to store the result.
522
+ * @return {Matrix2} The modified result parameter or a new Matrix2 instance if one was not provided.
523
+ *
524
+ * @exception {DeveloperError} matrix is required.
525
+ */
526
+ Matrix2.transpose = function(matrix, result) {
527
+ if (typeof matrix === 'undefined') {
528
+ throw new DeveloperError('matrix is required');
529
+ }
530
+
531
+ var column0Row0 = matrix[0];
532
+ var column0Row1 = matrix[2];
533
+ var column1Row0 = matrix[1];
534
+ var column1Row1 = matrix[3];
535
+
536
+ if (typeof result === 'undefined') {
537
+ return new Matrix2(column0Row0, column1Row0,
538
+ column0Row1, column1Row1);
539
+ }
540
+ result[0] = column0Row0;
541
+ result[1] = column0Row1;
542
+ result[2] = column1Row0;
543
+ result[3] = column1Row1;
544
+ return result;
545
+ };
546
+
547
+ /**
548
+ * Compares the provided matrices componentwise and returns
549
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
550
+ * @memberof Matrix2
551
+ *
552
+ * @param {Matrix2} [left] The first matrix.
553
+ * @param {Matrix2} [right] The second matrix.
554
+ * @return {Boolean} <code>true</code> if left and right are equal, <code>false</code> otherwise.
555
+ */
556
+ Matrix2.equals = function(left, right) {
557
+ return (left === right) ||
558
+ (typeof left !== 'undefined' &&
559
+ typeof right !== 'undefined' &&
560
+ left[0] === right[0] &&
561
+ left[1] === right[1] &&
562
+ left[2] === right[2] &&
563
+ left[3] === right[3]);
564
+ };
565
+
566
+ /**
567
+ * Compares the provided matrices componentwise and returns
568
+ * <code>true</code> if they are within the provided epsilon,
569
+ * <code>false</code> otherwise.
570
+ * @memberof Matrix2
571
+ *
572
+ * @param {Matrix2} [left] The first matrix.
573
+ * @param {Matrix2} [right] The second matrix.
574
+ * @param {Number} epsilon The epsilon to use for equality testing.
575
+ * @return {Boolean} <code>true</code> if left and right are within the provided epsilon, <code>false</code> otherwise.
576
+ *
577
+ * @exception {DeveloperError} epsilon is required and must be a number.
578
+ */
579
+ Matrix2.equalsEpsilon = function(left, right, epsilon) {
580
+ if (typeof epsilon !== 'number') {
581
+ throw new DeveloperError('epsilon is required and must be a number');
582
+ }
583
+
584
+ return (left === right) ||
585
+ (typeof left !== 'undefined' &&
586
+ typeof right !== 'undefined' &&
587
+ Math.abs(left[0] - right[0]) <= epsilon &&
588
+ Math.abs(left[1] - right[1]) <= epsilon &&
589
+ Math.abs(left[2] - right[2]) <= epsilon &&
590
+ Math.abs(left[3] - right[3]) <= epsilon);
591
+ };
592
+
593
+ /**
594
+ * An immutable Matrix2 instance initialized to the identity matrix.
595
+ * @memberof Matrix2
596
+ */
597
+ Matrix2.IDENTITY = freezeObject(new Matrix2(1.0, 0.0,
598
+ 0.0, 1.0));
599
+
600
+ /**
601
+ * The index into Matrix2 for column 0, row 0.
602
+ * @memberof Matrix2
603
+ *
604
+ * @example
605
+ * var matrix = new Matrix2();
606
+ * matrix[Matrix2.COLUMN0ROW0] = 5.0; //set column 0, row 0 to 5.0
607
+ */
608
+ Matrix2.COLUMN0ROW0 = 0;
609
+
610
+ /**
611
+ * The index into Matrix2 for column 0, row 1.
612
+ * @memberof Matrix2
613
+ *
614
+ * @example
615
+ * var matrix = new Matrix2();
616
+ * matrix[Matrix2.COLUMN0ROW1] = 5.0; //set column 0, row 1 to 5.0
617
+ */
618
+ Matrix2.COLUMN0ROW1 = 1;
619
+
620
+ /**
621
+ * The index into Matrix2 for column 1, row 0.
622
+ * @memberof Matrix2
623
+ *
624
+ * @example
625
+ * var matrix = new Matrix2();
626
+ * matrix[Matrix2.COLUMN1ROW0] = 5.0; //set column 1, row 0 to 5.0
627
+ */
628
+ Matrix2.COLUMN1ROW0 = 2;
629
+
630
+ /**
631
+ * The index into Matrix2 for column 1, row 1.
632
+ * @memberof Matrix2
633
+ *
634
+ * @example
635
+ * var matrix = new Matrix2();
636
+ * matrix[Matrix2.COLUMN1ROW1] = 5.0; //set column 1, row 1 to 5.0
637
+ */
638
+ Matrix2.COLUMN1ROW1 = 3;
639
+
640
+ /**
641
+ * Duplicates the provided Matrix2 instance.
642
+ * @memberof Matrix2
643
+ *
644
+ * @param {Matrix2} [result] The object onto which to store the result.
645
+ * @return {Matrix2} The modified result parameter or a new Matrix2 instance if one was not provided.
646
+ */
647
+ Matrix2.prototype.clone = function(result) {
648
+ return Matrix2.clone(this, result);
649
+ };
650
+
651
+ /**
652
+ * Creates an Array from this Matrix2 instance.
653
+ * @memberof Matrix2
654
+ *
655
+ * @param {Array} [result] The Array onto which to store the result.
656
+ * @return {Array} The modified Array parameter or a new Array instance if one was not provided.
657
+ */
658
+ Matrix2.prototype.toArray = function(result) {
659
+ return Matrix2.toArray(this, result);
660
+ };
661
+
662
+ /**
663
+ * Retrieves a copy of the matrix column at the provided index as a Cartesian2 instance.
664
+ * @memberof Matrix2
665
+ *
666
+ * @param {Number} index The zero-based index of the column to retrieve.
667
+ * @param {Cartesian2} [result] The object onto which to store the result.
668
+ * @return {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.
669
+ *
670
+ * @exception {DeveloperError} index is required and must be 0 or 1.
671
+ *
672
+ * @see Cartesian2
673
+ */
674
+ Matrix2.prototype.getColumn = function(index, result) {
675
+ return Matrix2.getColumn(this, index, result);
676
+ };
677
+
678
+ /**
679
+ * Computes a new matrix that replaces the specified column in this matrix with the provided Cartesian2 instance.
680
+ * @memberof Matrix2
681
+ *
682
+ * @param {Number} index The zero-based index of the column to set.
683
+ * @param {Cartesian2} cartesian The Cartesian whose values will be assigned to the specified column.
684
+ *
685
+ * @exception {DeveloperError} cartesian is required.
686
+ * @exception {DeveloperError} index is required and must be 0 or 1.
687
+ *
688
+ * @see Cartesian2
689
+ */
690
+ Matrix2.prototype.setColumn = function(index, cartesian, result) {
691
+ return Matrix2.setColumn(this, index, cartesian, result);
692
+ };
693
+
694
+ /**
695
+ * Retrieves a copy of the matrix row at the provided index as a Cartesian2 instance.
696
+ * @memberof Matrix2
697
+ *
698
+ * @param {Number} index The zero-based index of the row to retrieve.
699
+ * @param {Cartesian2} [result] The object onto which to store the result.
700
+ * @return {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.
701
+ *
702
+ * @exception {DeveloperError} index is required and must be 0 or 1.
703
+ *
704
+ * @see Cartesian2
705
+ */
706
+ Matrix2.prototype.getRow = function(index, result) {
707
+ return Matrix2.getRow(this, index, result);
708
+ };
709
+
710
+ /**
711
+ * Computes a new matrix that replaces the specified row in this matrix with the provided Cartesian2 instance.
712
+ * @memberof Matrix2
713
+ *
714
+ * @param {Number} index The zero-based index of the row to set.
715
+ * @param {Cartesian2} cartesian The Cartesian whose values will be assigned to the specified row.
716
+ *
717
+ * @exception {DeveloperError} cartesian is required.
718
+ * @exception {DeveloperError} index is required and must be 0 or 1.
719
+ *
720
+ * @see Cartesian2
721
+ */
722
+ Matrix2.prototype.setRow = function(index, cartesian, result) {
723
+ return Matrix2.setRow(this, index, cartesian, result);
724
+ };
725
+
726
+ /**
727
+ * Computes the product of this matrix and the provided matrix.
728
+ * @memberof Matrix2
729
+ *
730
+ * @param {Matrix2} right The right hand side matrix.
731
+ * @param {Matrix2} [result] The object onto which to store the result.
732
+ * @return {Matrix2} The modified result parameter or a new Matrix2 instance if one was not provided.
733
+ *
734
+ * @exception {DeveloperError} right is required.
735
+ */
736
+ Matrix2.prototype.multiply = function(right, result) {
737
+ return Matrix2.multiply(this, right, result);
738
+ };
739
+
740
+ /**
741
+ * Computes the product of this matrix and a column vector.
742
+ * @memberof Matrix2
743
+ *
744
+ * @param {Cartesian2} cartesian The column.
745
+ * @param {Cartesian2} [result] The object onto which to store the result.
746
+ * @return {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.
747
+ *
748
+ * @exception {DeveloperError} cartesian is required.
749
+ */
750
+ Matrix2.prototype.multiplyByVector = function(cartesian, result) {
751
+ return Matrix2.multiplyByVector(this, cartesian, result);
752
+ };
753
+
754
+ /**
755
+ * Computes the product of this matrix and a scalar.
756
+ * @memberof Matrix2
757
+ *
758
+ * @param {Number} scalar The number to multiply by.
759
+ * @param {Matrix2} [result] The object onto which to store the result.
760
+ * @return {Matrix2} The modified result parameter or a new Cartesian2 instance if one was not provided.
761
+ *
762
+ * @exception {DeveloperError} scalar is required and must be a number.
763
+ */
764
+ Matrix2.prototype.multiplyByScalar = function(scalar, result) {
765
+ return Matrix2.multiplyByScalar(this, scalar, result);
766
+ };
767
+ /**
768
+ * Creates a negated copy of this matrix.
769
+ * @memberof Matrix2
770
+ *
771
+ * @param {Matrix2} matrix The matrix to negate.
772
+ * @param {Matrix2} [result] The object onto which to store the result.
773
+ * @return {Matrix2} The modified result parameter or a new Matrix2 instance if one was not provided.
774
+ *
775
+ * @exception {DeveloperError} matrix is required.
776
+ */
777
+ Matrix2.prototype.negate = function(result) {
778
+ return Matrix2.negate(this, result);
779
+ };
780
+
781
+ /**
782
+ * Computes the transpose of this matrix.
783
+ * @memberof Matrix2
784
+ *
785
+ * @param {Matrix2} [result] The object onto which to store the result.
786
+ * @return {Matrix2} The modified result parameter or a new Matrix2 instance if one was not provided.
787
+ */
788
+ Matrix2.prototype.transpose = function(result) {
789
+ return Matrix2.transpose(this, result);
790
+ };
791
+
792
+ /**
793
+ * Compares this matrix to the provided matrix componentwise and returns
794
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
795
+ * @memberof Matrix2
796
+ *
797
+ * @param {Matrix2} [right] The right hand side matrix.
798
+ * @return {Boolean} <code>true</code> if they are equal, <code>false</code> otherwise.
799
+ */
800
+ Matrix2.prototype.equals = function(right) {
801
+ return Matrix2.equals(this, right);
802
+ };
803
+
804
+ /**
805
+ * Compares this matrix to the provided matrix componentwise and returns
806
+ * <code>true</code> if they are within the provided epsilon,
807
+ * <code>false</code> otherwise.
808
+ * @memberof Matrix2
809
+ *
810
+ * @param {Matrix2} [right] The right hand side matrix.
811
+ * @param {Number} epsilon The epsilon to use for equality testing.
812
+ * @return {Boolean} <code>true</code> if they are within the provided epsilon, <code>false</code> otherwise.
813
+ *
814
+ * @exception {DeveloperError} epsilon is required and must be a number.
815
+ */
816
+ Matrix2.prototype.equalsEpsilon = function(right, epsilon) {
817
+ return Matrix2.equalsEpsilon(this, right, epsilon);
818
+ };
819
+
820
+ /**
821
+ * Creates a string representing this Matrix with each row being
822
+ * on a separate line and in the format '(column0, column1)'.
823
+ * @memberof Matrix2
824
+ *
825
+ * @return {String} A string representing the provided Matrix with each row being on a separate line and in the format '(column0, column1)'.
826
+ */
827
+ Matrix2.prototype.toString = function() {
828
+ return '(' + this[0] + ', ' + this[2] + ')\n' +
829
+ '(' + this[1] + ', ' + this[3] + ')';
830
+ };
831
+
832
+ return Matrix2;
833
+ });