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,1099 @@
1
+ /*global define*/
2
+ define([
3
+ './Cartesian3',
4
+ './defaultValue',
5
+ './DeveloperError',
6
+ './freezeObject'
7
+ ], function(
8
+ Cartesian3,
9
+ defaultValue,
10
+ DeveloperError,
11
+ freezeObject) {
12
+ "use strict";
13
+
14
+ /**
15
+ * A 3x3 matrix, indexable as a column-major order array.
16
+ * Constructor parameters are in row-major order for code readability.
17
+ * @alias Matrix3
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} [column2Row0=0.0] The value for column 2, row 0.
23
+ * @param {Number} [column0Row1=0.0] The value for column 0, row 1.
24
+ * @param {Number} [column1Row1=0.0] The value for column 1, row 1.
25
+ * @param {Number} [column2Row1=0.0] The value for column 2, row 1.
26
+ * @param {Number} [column0Row2=0.0] The value for column 0, row 2.
27
+ * @param {Number} [column1Row2=0.0] The value for column 1, row 2.
28
+ * @param {Number} [column2Row2=0.0] The value for column 2, row 2.
29
+ *
30
+ * @see Matrix3.fromColumnMajor
31
+ * @see Matrix3.fromRowMajorArray
32
+ * @see Matrix3.fromQuaternion
33
+ * @see Matrix3.fromScale
34
+ * @see Matrix3.fromUniformScale
35
+ * @see Matrix2
36
+ * @see Matrix4
37
+ */
38
+ var Matrix3 = function(column0Row0, column1Row0, column2Row0,
39
+ column0Row1, column1Row1, column2Row1,
40
+ column0Row2, column1Row2, column2Row2) {
41
+ this[0] = defaultValue(column0Row0, 0.0);
42
+ this[1] = defaultValue(column0Row1, 0.0);
43
+ this[2] = defaultValue(column0Row2, 0.0);
44
+ this[3] = defaultValue(column1Row0, 0.0);
45
+ this[4] = defaultValue(column1Row1, 0.0);
46
+ this[5] = defaultValue(column1Row2, 0.0);
47
+ this[6] = defaultValue(column2Row0, 0.0);
48
+ this[7] = defaultValue(column2Row1, 0.0);
49
+ this[8] = defaultValue(column2Row2, 0.0);
50
+ };
51
+
52
+ /**
53
+ * Duplicates a Matrix3 instance.
54
+ * @memberof Matrix3
55
+ *
56
+ * @param {Matrix3} matrix The matrix to duplicate.
57
+ * @param {Matrix3} [result] The object onto which to store the result.
58
+ * @return {Matrix3} The modified result parameter or a new Matrix3 instance if one was not provided.
59
+ *
60
+ * @exception {DeveloperError} matrix is required.
61
+ */
62
+ Matrix3.clone = function(values, result) {
63
+ if (typeof values === 'undefined') {
64
+ throw new DeveloperError('values is required');
65
+ }
66
+ if (typeof result === 'undefined') {
67
+ return new Matrix3(values[0], values[3], values[6],
68
+ values[1], values[4], values[7],
69
+ values[2], values[5], values[8]);
70
+ }
71
+ result[0] = values[0];
72
+ result[1] = values[1];
73
+ result[2] = values[2];
74
+ result[3] = values[3];
75
+ result[4] = values[4];
76
+ result[5] = values[5];
77
+ result[6] = values[6];
78
+ result[7] = values[7];
79
+ result[8] = values[8];
80
+ return result;
81
+ };
82
+
83
+ /**
84
+ * Creates a Matrix3 instance from a column-major order array.
85
+ * @memberof Matrix3
86
+ * @function
87
+ *
88
+ * @param {Array} values The column-major order array.
89
+ * @param {Matrix3} [result] The object in which the result will be stored, if undefined a new instance will be created.
90
+ * @returns The modified result parameter, or a new Matrix3 instance if one was not provided.
91
+ *
92
+ * @exception {DeveloperError} values is required.
93
+ */
94
+ Matrix3.fromColumnMajorArray = Matrix3.clone;
95
+
96
+ /**
97
+ * Creates a Matrix3 instance from a row-major order array.
98
+ * The resulting matrix will be in column-major order.
99
+ * @memberof Matrix3
100
+ *
101
+ * @param {Array} values The row-major order array.
102
+ * @param {Matrix3} [result] The object in which the result will be stored, if undefined a new instance will be created.
103
+ * @returns The modified result parameter, or a new Matrix3 instance if one was not provided.
104
+ *
105
+ * @exception {DeveloperError} values is required.
106
+ */
107
+ Matrix3.fromRowMajorArray = function(values, result) {
108
+ if (typeof values === 'undefined') {
109
+ throw new DeveloperError('values is required.');
110
+ }
111
+ if (typeof result === 'undefined') {
112
+ return new Matrix3(values[0], values[1], values[2],
113
+ values[3], values[4], values[5],
114
+ values[6], values[7], values[8]);
115
+ }
116
+ result[0] = values[0];
117
+ result[1] = values[3];
118
+ result[2] = values[6];
119
+ result[3] = values[1];
120
+ result[4] = values[4];
121
+ result[5] = values[7];
122
+ result[6] = values[2];
123
+ result[7] = values[5];
124
+ result[8] = values[8];
125
+ return result;
126
+ };
127
+
128
+ /**
129
+ * Computes a 3x3 rotation matrix from the provided quaternion.
130
+ * @memberof Matrix3
131
+ *
132
+ * @param {Quaternion} quaternion the quaternion to use.
133
+ *
134
+ * @return {Matrix3} The 3x3 rotation matrix from this quaternion.
135
+ */
136
+ Matrix3.fromQuaternion = function(quaternion, result) {
137
+ if (typeof quaternion === 'undefined') {
138
+ throw new DeveloperError('quaternion is required');
139
+ }
140
+ var x2 = quaternion.x * quaternion.x;
141
+ var xy = quaternion.x * quaternion.y;
142
+ var xz = quaternion.x * quaternion.z;
143
+ var xw = quaternion.x * quaternion.w;
144
+ var y2 = quaternion.y * quaternion.y;
145
+ var yz = quaternion.y * quaternion.z;
146
+ var yw = quaternion.y * quaternion.w;
147
+ var z2 = quaternion.z * quaternion.z;
148
+ var zw = quaternion.z * quaternion.w;
149
+ var w2 = quaternion.w * quaternion.w;
150
+
151
+ var m00 = x2 - y2 - z2 + w2;
152
+ var m01 = 2.0 * (xy + zw);
153
+ var m02 = 2.0 * (xz - yw);
154
+
155
+ var m10 = 2.0 * (xy - zw);
156
+ var m11 = -x2 + y2 - z2 + w2;
157
+ var m12 = 2.0 * (yz + xw);
158
+
159
+ var m20 = 2.0 * (xz + yw);
160
+ var m21 = 2.0 * (yz - xw);
161
+ var m22 = -x2 - y2 + z2 + w2;
162
+
163
+ if (typeof result === 'undefined') {
164
+ return new Matrix3(m00, m01, m02,
165
+ m10, m11, m12,
166
+ m20, m21, m22);
167
+ }
168
+ result[0] = m00;
169
+ result[1] = m10;
170
+ result[2] = m20;
171
+ result[3] = m01;
172
+ result[4] = m11;
173
+ result[5] = m21;
174
+ result[6] = m02;
175
+ result[7] = m12;
176
+ result[8] = m22;
177
+ return result;
178
+ };
179
+
180
+ /**
181
+ * Computes a Matrix3 instance representing a non-uniform scale.
182
+ * @memberof Matrix3
183
+ *
184
+ * @param {Cartesian3} scale The x, y, and z scale factors.
185
+ * @param {Matrix3} [result] The object in which the result will be stored, if undefined a new instance will be created.
186
+ * @returns The modified result parameter, or a new Matrix3 instance if one was not provided.
187
+ *
188
+ * @exception {DeveloperError} scale is required.
189
+ *
190
+ * @example
191
+ * // Creates
192
+ * // [7.0, 0.0, 0.0]
193
+ * // [0.0, 8.0, 0.0]
194
+ * // [0.0, 0.0, 9.0]
195
+ * var m = Matrix3.fromScale(new Cartesian3(7.0, 8.0, 9.0));
196
+ */
197
+ Matrix3.fromScale = function(scale, result) {
198
+ if (typeof scale === 'undefined') {
199
+ throw new DeveloperError('scale is required.');
200
+ }
201
+ if (typeof result === 'undefined') {
202
+ return new Matrix3(
203
+ scale.x, 0.0, 0.0,
204
+ 0.0, scale.y, 0.0,
205
+ 0.0, 0.0, scale.z);
206
+ }
207
+
208
+ result[0] = scale.x;
209
+ result[1] = 0.0;
210
+ result[2] = 0.0;
211
+ result[3] = 0.0;
212
+ result[4] = scale.y;
213
+ result[5] = 0.0;
214
+ result[6] = 0.0;
215
+ result[7] = 0.0;
216
+ result[8] = scale.z;
217
+ return result;
218
+ };
219
+
220
+ /**
221
+ * Computes a Matrix3 instance representing a uniform scale.
222
+ * @memberof Matrix3
223
+ *
224
+ * @param {Number} scale The uniform scale factor.
225
+ * @param {Matrix3} [result] The object in which the result will be stored, if undefined a new instance will be created.
226
+ * @returns The modified result parameter, or a new Matrix3 instance if one was not provided.
227
+ *
228
+ * @exception {DeveloperError} scale is required.
229
+ *
230
+ * @example
231
+ * // Creates
232
+ * // [2.0, 0.0, 0.0]
233
+ * // [0.0, 2.0, 0.0]
234
+ * // [0.0, 0.0, 2.0]
235
+ * var m = Matrix3.fromUniformScale(2.0);
236
+ */
237
+ Matrix3.fromUniformScale = function(scale, result) {
238
+ if (typeof scale !== 'number') {
239
+ throw new DeveloperError('scale is required.');
240
+ }
241
+ if (typeof result === 'undefined') {
242
+ return new Matrix3(
243
+ scale, 0.0, 0.0,
244
+ 0.0, scale, 0.0,
245
+ 0.0, 0.0, scale);
246
+ }
247
+
248
+ result[0] = scale;
249
+ result[1] = 0.0;
250
+ result[2] = 0.0;
251
+ result[3] = 0.0;
252
+ result[4] = scale;
253
+ result[5] = 0.0;
254
+ result[6] = 0.0;
255
+ result[7] = 0.0;
256
+ result[8] = scale;
257
+ return result;
258
+ };
259
+
260
+ /**
261
+ * Creates a rotation matrix around the x-axis.
262
+ *
263
+ * @param {Number} angle The angle, in radians, of the rotation. Positive angles are counterclockwise.
264
+ * @param {Matrix3} [result] The object in which the result will be stored, if undefined a new instance will be created.
265
+ *
266
+ * @returns The modified result parameter, or a new Matrix3 instance if one was not provided.
267
+ *
268
+ * @exception {DeveloperError} angle is required.
269
+ *
270
+ * @example
271
+ * // Rotate a point 45 degrees counterclockwise around the x-axis.
272
+ * var p = new Cartesian3(5, 6, 7);
273
+ * var m = Matrix3.fromRotationX(CesiumMath.toRadians(45.0));
274
+ * var rotated = m.multiplyByVector(p);
275
+ */
276
+ Matrix3.fromRotationX = function(angle, result) {
277
+ if (typeof angle === 'undefined') {
278
+ throw new DeveloperError('angle is required.');
279
+ }
280
+
281
+ var cosAngle = Math.cos(angle);
282
+ var sinAngle = Math.sin(angle);
283
+
284
+ if (typeof result === 'undefined') {
285
+ return new Matrix3(
286
+ 1.0, 0.0, 0.0,
287
+ 0.0, cosAngle, -sinAngle,
288
+ 0.0, sinAngle, cosAngle);
289
+ }
290
+
291
+ result[0] = 1.0;
292
+ result[1] = 0.0;
293
+ result[2] = 0.0;
294
+ result[3] = 0.0;
295
+ result[4] = cosAngle;
296
+ result[5] = sinAngle;
297
+ result[6] = 0.0;
298
+ result[7] = -sinAngle;
299
+ result[8] = cosAngle;
300
+
301
+ return result;
302
+ };
303
+
304
+ /**
305
+ * Creates a rotation matrix around the y-axis.
306
+ *
307
+ * @param {Number} angle The angle, in radians, of the rotation. Positive angles are counterclockwise.
308
+ * @param {Matrix3} [result] The object in which the result will be stored, if undefined a new instance will be created.
309
+ *
310
+ * @returns The modified result parameter, or a new Matrix3 instance if one was not provided.
311
+ *
312
+ * @exception {DeveloperError} angle is required.
313
+ *
314
+ * @example
315
+ * // Rotate a point 45 degrees counterclockwise around the y-axis.
316
+ * var p = new Cartesian3(5, 6, 7);
317
+ * var m = Matrix3.fromRotationY(CesiumMath.toRadians(45.0));
318
+ * var rotated = m.multiplyByVector(p);
319
+ */
320
+ Matrix3.fromRotationY = function(angle, result) {
321
+ if (typeof angle === 'undefined') {
322
+ throw new DeveloperError('angle is required.');
323
+ }
324
+
325
+ var cosAngle = Math.cos(angle);
326
+ var sinAngle = Math.sin(angle);
327
+
328
+ if (typeof result === 'undefined') {
329
+ return new Matrix3(
330
+ cosAngle, 0.0, sinAngle,
331
+ 0.0, 1.0, 0.0,
332
+ -sinAngle, 0.0, cosAngle);
333
+ }
334
+
335
+ result[0] = cosAngle;
336
+ result[1] = 0.0;
337
+ result[2] = -sinAngle;
338
+ result[3] = 0.0;
339
+ result[4] = 1.0;
340
+ result[5] = 0.0;
341
+ result[6] = sinAngle;
342
+ result[7] = 0.0;
343
+ result[8] = cosAngle;
344
+
345
+ return result;
346
+ };
347
+
348
+ /**
349
+ * Creates a rotation matrix around the z-axis.
350
+ *
351
+ * @param {Number} angle The angle, in radians, of the rotation. Positive angles are counterclockwise.
352
+ * @param {Matrix3} [result] The object in which the result will be stored, if undefined a new instance will be created.
353
+ *
354
+ * @returns The modified result parameter, or a new Matrix3 instance if one was not provided.
355
+ *
356
+ * @exception {DeveloperError} angle is required.
357
+ *
358
+ * @example
359
+ * // Rotate a point 45 degrees counterclockwise around the z-axis.
360
+ * var p = new Cartesian3(5, 6, 7);
361
+ * var m = Matrix3.fromRotationZ(CesiumMath.toRadians(45.0));
362
+ * var rotated = m.multiplyByVector(p);
363
+ */
364
+ Matrix3.fromRotationZ = function(angle, result) {
365
+ if (typeof angle === 'undefined') {
366
+ throw new DeveloperError('angle is required.');
367
+ }
368
+
369
+ var cosAngle = Math.cos(angle);
370
+ var sinAngle = Math.sin(angle);
371
+
372
+ if (typeof result === 'undefined') {
373
+ return new Matrix3(
374
+ cosAngle, -sinAngle, 0.0,
375
+ sinAngle, cosAngle, 0.0,
376
+ 0.0, 0.0, 1.0);
377
+ }
378
+
379
+ result[0] = cosAngle;
380
+ result[1] = sinAngle;
381
+ result[2] = 0.0;
382
+ result[3] = -sinAngle;
383
+ result[4] = cosAngle;
384
+ result[5] = 0.0;
385
+ result[6] = 0.0;
386
+ result[7] = 0.0;
387
+ result[8] = 1.0;
388
+
389
+ return result;
390
+ };
391
+
392
+ /**
393
+ * Creates an Array from the provided Matrix3 instance.
394
+ * The array will be in column-major order.
395
+ * @memberof Matrix3
396
+ *
397
+ * @param {Matrix3} matrix The matrix to use..
398
+ * @param {Array} [result] The Array onto which to store the result.
399
+ * @return {Array} The modified Array parameter or a new Array instance if one was not provided.
400
+ *
401
+ * @exception {DeveloperError} matrix is required.
402
+ */
403
+ Matrix3.toArray = function(matrix, result) {
404
+ if (typeof matrix === 'undefined') {
405
+ throw new DeveloperError('matrix is required');
406
+ }
407
+ if (typeof result === 'undefined') {
408
+ return [matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5], matrix[6], matrix[7], matrix[8]];
409
+ }
410
+ result[0] = matrix[0];
411
+ result[1] = matrix[1];
412
+ result[2] = matrix[2];
413
+ result[3] = matrix[3];
414
+ result[4] = matrix[4];
415
+ result[5] = matrix[5];
416
+ result[6] = matrix[6];
417
+ result[7] = matrix[7];
418
+ result[8] = matrix[8];
419
+ return result;
420
+ };
421
+
422
+ /**
423
+ * Computes the array index of the element at the provided row and column.
424
+ * @memberof Matrix3
425
+ *
426
+ * @param {Number} row The zero-based index of the row.
427
+ * @param {Number} column The zero-based index of the column.
428
+ * @return {Number} The index of the element at the provided row and column.
429
+ *
430
+ * @exception {DeveloperError} row is required and must be 0, 1, or 2.
431
+ * @exception {DeveloperError} column is required and must be 0, 1, or 2.
432
+ *
433
+ * @example
434
+ * var myMatrix = new Matrix3();
435
+ * var column1Row0Index = Matrix3.getElementIndex(1, 0);
436
+ * var column1Row0 = myMatrix[column1Row0Index]
437
+ * myMatrix[column1Row0Index] = 10.0;
438
+ */
439
+ Matrix3.getElementIndex = function(column, row) {
440
+ if (typeof row !== 'number' || row < 0 || row > 2) {
441
+ throw new DeveloperError('row is required and must be 0, 1, or 2.');
442
+ }
443
+ if (typeof column !== 'number' || column < 0 || column > 2) {
444
+ throw new DeveloperError('column is required and must be 0, 1, or 2.');
445
+ }
446
+ return column * 3 + row;
447
+ };
448
+
449
+ /**
450
+ * Retrieves a copy of the matrix column at the provided index as a Cartesian3 instance.
451
+ * @memberof Matrix3
452
+ *
453
+ * @param {Matrix3} matrix The matrix to use.
454
+ * @param {Number} index The zero-based index of the column to retrieve.
455
+ * @param {Cartesian3} [result] The object onto which to store the result.
456
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.
457
+ *
458
+ * @exception {DeveloperError} matrix is required.
459
+ * @exception {DeveloperError} index is required and must be 0, 1, or 2.
460
+ *
461
+ * @see Cartesian3
462
+ */
463
+ Matrix3.getColumn = function(matrix, index, result) {
464
+ if (typeof matrix === 'undefined') {
465
+ throw new DeveloperError('matrix is required.');
466
+ }
467
+
468
+ if (typeof index !== 'number' || index < 0 || index > 2) {
469
+ throw new DeveloperError('index is required and must be 0, 1, or 2.');
470
+ }
471
+
472
+ var startIndex = index * 3;
473
+ var x = matrix[startIndex];
474
+ var y = matrix[startIndex + 1];
475
+ var z = matrix[startIndex + 2];
476
+
477
+ if (typeof result === 'undefined') {
478
+ return new Cartesian3(x, y, z);
479
+ }
480
+ result.x = x;
481
+ result.y = y;
482
+ result.z = z;
483
+ return result;
484
+ };
485
+
486
+ /**
487
+ * Computes a new matrix that replaces the specified column in the provided matrix with the provided Cartesian3 instance.
488
+ * @memberof Matrix3
489
+ *
490
+ * @param {Matrix3} matrix The matrix to use.
491
+ * @param {Number} index The zero-based index of the column to set.
492
+ * @param {Cartesian3} cartesian The Cartesian whose values will be assigned to the specified column.
493
+ * @param {Cartesian3} [result] The object onto which to store the result.
494
+ * @return {Matrix3} The modified result parameter or a new Matrix3 instance if one was not provided.
495
+ *
496
+ * @exception {DeveloperError} matrix is required.
497
+ * @exception {DeveloperError} cartesian is required.
498
+ * @exception {DeveloperError} index is required and must be 0, 1, or 2.
499
+ *
500
+ * @see Cartesian3
501
+ */
502
+ Matrix3.setColumn = function(matrix, index, cartesian, result) {
503
+ if (typeof matrix === 'undefined') {
504
+ throw new DeveloperError('matrix is required');
505
+ }
506
+ if (typeof cartesian === 'undefined') {
507
+ throw new DeveloperError('cartesian is required');
508
+ }
509
+ if (typeof index !== 'number' || index < 0 || index > 2) {
510
+ throw new DeveloperError('index is required and must be 0, 1, or 2.');
511
+ }
512
+ result = Matrix3.clone(matrix, result);
513
+ var startIndex = index * 3;
514
+ result[startIndex] = cartesian.x;
515
+ result[startIndex + 1] = cartesian.y;
516
+ result[startIndex + 2] = cartesian.z;
517
+ return result;
518
+ };
519
+
520
+ /**
521
+ * Retrieves a copy of the matrix row at the provided index as a Cartesian3 instance.
522
+ * @memberof Matrix3
523
+ *
524
+ * @param {Matrix3} matrix The matrix to use.
525
+ * @param {Number} index The zero-based index of the row to retrieve.
526
+ * @param {Cartesian3} [result] The object onto which to store the result.
527
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.
528
+ *
529
+ * @exception {DeveloperError} matrix is required.
530
+ * @exception {DeveloperError} index is required and must be 0, 1, or 2.
531
+ *
532
+ * @see Cartesian3
533
+ */
534
+ Matrix3.getRow = function(matrix, index, result) {
535
+ if (typeof matrix === 'undefined') {
536
+ throw new DeveloperError('matrix is required.');
537
+ }
538
+
539
+ if (typeof index !== 'number' || index < 0 || index > 2) {
540
+ throw new DeveloperError('index is required and must be 0, 1, or 2.');
541
+ }
542
+
543
+ var x = matrix[index];
544
+ var y = matrix[index + 3];
545
+ var z = matrix[index + 6];
546
+
547
+ if (typeof result === 'undefined') {
548
+ return new Cartesian3(x, y, z);
549
+ }
550
+ result.x = x;
551
+ result.y = y;
552
+ result.z = z;
553
+ return result;
554
+ };
555
+
556
+ /**
557
+ * Computes a new matrix that replaces the specified row in the provided matrix with the provided Cartesian3 instance.
558
+ * @memberof Matrix3
559
+ *
560
+ * @param {Matrix3} matrix The matrix to use.
561
+ * @param {Number} index The zero-based index of the row to set.
562
+ * @param {Cartesian3} cartesian The Cartesian whose values will be assigned to the specified row.
563
+ * @param {Cartesian3} [result] The object onto which to store the result.
564
+ * @return {Matrix3} The modified result parameter or a new Matrix3 instance if one was not provided.
565
+ *
566
+ * @exception {DeveloperError} matrix is required.
567
+ * @exception {DeveloperError} cartesian is required.
568
+ * @exception {DeveloperError} index is required and must be 0, 1, or 2.
569
+ *
570
+ * @see Cartesian3
571
+ */
572
+ Matrix3.setRow = function(matrix, index, cartesian, result) {
573
+ if (typeof matrix === 'undefined') {
574
+ throw new DeveloperError('matrix is required');
575
+ }
576
+ if (typeof cartesian === 'undefined') {
577
+ throw new DeveloperError('cartesian is required');
578
+ }
579
+ if (typeof index !== 'number' || index < 0 || index > 2) {
580
+ throw new DeveloperError('index is required and must be 0, 1, or 2.');
581
+ }
582
+
583
+ result = Matrix3.clone(matrix, result);
584
+ result[index] = cartesian.x;
585
+ result[index + 3] = cartesian.y;
586
+ result[index + 6] = cartesian.z;
587
+ return result;
588
+ };
589
+
590
+ /**
591
+ * Computes the product of two matrices.
592
+ * @memberof Matrix3
593
+ *
594
+ * @param {Matrix3} left The first matrix.
595
+ * @param {Matrix3} right The second matrix.
596
+ * @param {Matrix3} [result] The object onto which to store the result.
597
+ * @return {Matrix3} The modified result parameter or a new Matrix3 instance if one was not provided.
598
+ *
599
+ * @exception {DeveloperError} left is required.
600
+ * @exception {DeveloperError} right is required.
601
+ */
602
+ Matrix3.multiply = function(left, right, result) {
603
+ if (typeof left === 'undefined') {
604
+ throw new DeveloperError('left is required');
605
+ }
606
+ if (typeof right === 'undefined') {
607
+ throw new DeveloperError('right is required');
608
+ }
609
+
610
+ var column0Row0 = left[0] * right[0] + left[3] * right[1] + left[6] * right[2];
611
+ var column0Row1 = left[1] * right[0] + left[4] * right[1] + left[7] * right[2];
612
+ var column0Row2 = left[2] * right[0] + left[5] * right[1] + left[8] * right[2];
613
+
614
+ var column1Row0 = left[0] * right[3] + left[3] * right[4] + left[6] * right[5];
615
+ var column1Row1 = left[1] * right[3] + left[4] * right[4] + left[7] * right[5];
616
+ var column1Row2 = left[2] * right[3] + left[5] * right[4] + left[8] * right[5];
617
+
618
+ var column2Row0 = left[0] * right[6] + left[3] * right[7] + left[6] * right[8];
619
+ var column2Row1 = left[1] * right[6] + left[4] * right[7] + left[7] * right[8];
620
+ var column2Row2 = left[2] * right[6] + left[5] * right[7] + left[8] * right[8];
621
+
622
+ if (typeof result === 'undefined') {
623
+ return new Matrix3(column0Row0, column1Row0, column2Row0,
624
+ column0Row1, column1Row1, column2Row1,
625
+ column0Row2, column1Row2, column2Row2);
626
+ }
627
+ result[0] = column0Row0;
628
+ result[1] = column0Row1;
629
+ result[2] = column0Row2;
630
+ result[3] = column1Row0;
631
+ result[4] = column1Row1;
632
+ result[5] = column1Row2;
633
+ result[6] = column2Row0;
634
+ result[7] = column2Row1;
635
+ result[8] = column2Row2;
636
+ return result;
637
+ };
638
+
639
+ /**
640
+ * Computes the product of a matrix and a column vector.
641
+ * @memberof Matrix3
642
+ *
643
+ * @param {Matrix3} matrix The matrix.
644
+ * @param {Cartesian3} cartesian The column.
645
+ * @param {Cartesian3} [result] The object onto which to store the result.
646
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.
647
+ *
648
+ * @exception {DeveloperError} matrix is required.
649
+ * @exception {DeveloperError} cartesian is required.
650
+ */
651
+ Matrix3.multiplyByVector = function(matrix, cartesian, result) {
652
+ if (typeof matrix === 'undefined') {
653
+ throw new DeveloperError('matrix is required');
654
+ }
655
+ if (typeof cartesian === 'undefined') {
656
+ throw new DeveloperError('cartesian is required');
657
+ }
658
+
659
+ var vX = cartesian.x;
660
+ var vY = cartesian.y;
661
+ var vZ = cartesian.z;
662
+
663
+ var x = matrix[0] * vX + matrix[3] * vY + matrix[6] * vZ;
664
+ var y = matrix[1] * vX + matrix[4] * vY + matrix[7] * vZ;
665
+ var z = matrix[2] * vX + matrix[5] * vY + matrix[8] * vZ;
666
+
667
+ if (typeof result === 'undefined') {
668
+ return new Cartesian3(x, y, z);
669
+ }
670
+ result.x = x;
671
+ result.y = y;
672
+ result.z = z;
673
+ return result;
674
+ };
675
+
676
+ /**
677
+ * Computes the product of a matrix and a scalar.
678
+ * @memberof Matrix3
679
+ *
680
+ * @param {Matrix3} matrix The matrix.
681
+ * @param {Number} scalar The number to multiply by.
682
+ * @param {Matrix3} [result] The object onto which to store the result.
683
+ * @return {Matrix3} The modified result parameter or a new Cartesian3 instance if one was not provided.
684
+ *
685
+ * @exception {DeveloperError} matrix is required.
686
+ * @exception {DeveloperError} scalar is required and must be a number.
687
+ */
688
+ Matrix3.multiplyByScalar = function(matrix, scalar, result) {
689
+ if (typeof matrix === 'undefined') {
690
+ throw new DeveloperError('matrix is required');
691
+ }
692
+ if (typeof scalar !== 'number') {
693
+ throw new DeveloperError('scalar is required and must be a number');
694
+ }
695
+
696
+ if (typeof result === 'undefined') {
697
+ return new Matrix3(matrix[0] * scalar, matrix[3] * scalar, matrix[6] * scalar,
698
+ matrix[1] * scalar, matrix[4] * scalar, matrix[7] * scalar,
699
+ matrix[2] * scalar, matrix[5] * scalar, matrix[8] * scalar);
700
+ }
701
+ result[0] = matrix[0] * scalar;
702
+ result[1] = matrix[1] * scalar;
703
+ result[2] = matrix[2] * scalar;
704
+ result[3] = matrix[3] * scalar;
705
+ result[4] = matrix[4] * scalar;
706
+ result[5] = matrix[5] * scalar;
707
+ result[6] = matrix[6] * scalar;
708
+ result[7] = matrix[7] * scalar;
709
+ result[8] = matrix[8] * scalar;
710
+ return result;
711
+ };
712
+
713
+ /**
714
+ * Creates a negated copy of the provided matrix.
715
+ * @memberof Matrix3
716
+ *
717
+ * @param {Matrix3} matrix The matrix to negate.
718
+ * @param {Matrix3} [result] The object onto which to store the result.
719
+ * @return {Matrix3} The modified result parameter or a new Matrix3 instance if one was not provided.
720
+ *
721
+ * @exception {DeveloperError} matrix is required.
722
+ */
723
+ Matrix3.negate = function(matrix, result) {
724
+ if (typeof matrix === 'undefined') {
725
+ throw new DeveloperError('matrix is required');
726
+ }
727
+
728
+ if (typeof result === 'undefined') {
729
+ return new Matrix3(-matrix[0], -matrix[3], -matrix[6],
730
+ -matrix[1], -matrix[4], -matrix[7],
731
+ -matrix[2], -matrix[5], -matrix[8]);
732
+ }
733
+ result[0] = -matrix[0];
734
+ result[1] = -matrix[1];
735
+ result[2] = -matrix[2];
736
+ result[3] = -matrix[3];
737
+ result[4] = -matrix[4];
738
+ result[5] = -matrix[5];
739
+ result[6] = -matrix[6];
740
+ result[7] = -matrix[7];
741
+ result[8] = -matrix[8];
742
+ return result;
743
+ };
744
+
745
+ /**
746
+ * Computes the transpose of the provided matrix.
747
+ * @memberof Matrix3
748
+ *
749
+ * @param {Matrix3} matrix The matrix to transpose.
750
+ * @param {Matrix3} [result] The object onto which to store the result.
751
+ * @return {Matrix3} The modified result parameter or a new Matrix3 instance if one was not provided.
752
+ *
753
+ * @exception {DeveloperError} matrix is required.
754
+ */
755
+ Matrix3.transpose = function(matrix, result) {
756
+ if (typeof matrix === 'undefined') {
757
+ throw new DeveloperError('matrix is required');
758
+ }
759
+
760
+ var column0Row0 = matrix[0];
761
+ var column0Row1 = matrix[3];
762
+ var column0Row2 = matrix[6];
763
+ var column1Row0 = matrix[1];
764
+ var column1Row1 = matrix[4];
765
+ var column1Row2 = matrix[7];
766
+ var column2Row0 = matrix[2];
767
+ var column2Row1 = matrix[5];
768
+ var column2Row2 = matrix[8];
769
+
770
+ if (typeof result === 'undefined') {
771
+ return new Matrix3(column0Row0, column1Row0, column2Row0,
772
+ column0Row1, column1Row1, column2Row1,
773
+ column0Row2, column1Row2, column2Row2);
774
+ }
775
+ result[0] = column0Row0;
776
+ result[1] = column0Row1;
777
+ result[2] = column0Row2;
778
+ result[3] = column1Row0;
779
+ result[4] = column1Row1;
780
+ result[5] = column1Row2;
781
+ result[6] = column2Row0;
782
+ result[7] = column2Row1;
783
+ result[8] = column2Row2;
784
+ return result;
785
+ };
786
+
787
+ /**
788
+ * Compares the provided matrices componentwise and returns
789
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
790
+ * @memberof Matrix3
791
+ *
792
+ * @param {Matrix3} [left] The first matrix.
793
+ * @param {Matrix3} [right] The second matrix.
794
+ * @return {Boolean} <code>true</code> if left and right are equal, <code>false</code> otherwise.
795
+ */
796
+ Matrix3.equals = function(left, right) {
797
+ return (left === right) ||
798
+ (typeof left !== 'undefined' &&
799
+ typeof right !== 'undefined' &&
800
+ left[0] === right[0] &&
801
+ left[1] === right[1] &&
802
+ left[2] === right[2] &&
803
+ left[3] === right[3] &&
804
+ left[4] === right[4] &&
805
+ left[5] === right[5] &&
806
+ left[6] === right[6] &&
807
+ left[7] === right[7] &&
808
+ left[8] === right[8]);
809
+ };
810
+
811
+ /**
812
+ * Compares the provided matrices componentwise and returns
813
+ * <code>true</code> if they are within the provided epsilon,
814
+ * <code>false</code> otherwise.
815
+ * @memberof Matrix3
816
+ *
817
+ * @param {Matrix3} [left] The first matrix.
818
+ * @param {Matrix3} [right] The second matrix.
819
+ * @param {Number} epsilon The epsilon to use for equality testing.
820
+ * @return {Boolean} <code>true</code> if left and right are within the provided epsilon, <code>false</code> otherwise.
821
+ *
822
+ * @exception {DeveloperError} epsilon is required and must be a number.
823
+ */
824
+ Matrix3.equalsEpsilon = function(left, right, epsilon) {
825
+ if (typeof epsilon !== 'number') {
826
+ throw new DeveloperError('epsilon is required and must be a number');
827
+ }
828
+
829
+ return (left === right) ||
830
+ (typeof left !== 'undefined' &&
831
+ typeof right !== 'undefined' &&
832
+ Math.abs(left[0] - right[0]) <= epsilon &&
833
+ Math.abs(left[1] - right[1]) <= epsilon &&
834
+ Math.abs(left[2] - right[2]) <= epsilon &&
835
+ Math.abs(left[3] - right[3]) <= epsilon &&
836
+ Math.abs(left[4] - right[4]) <= epsilon &&
837
+ Math.abs(left[5] - right[5]) <= epsilon &&
838
+ Math.abs(left[6] - right[6]) <= epsilon &&
839
+ Math.abs(left[7] - right[7]) <= epsilon &&
840
+ Math.abs(left[8] - right[8]) <= epsilon);
841
+ };
842
+
843
+ /**
844
+ * An immutable Matrix3 instance initialized to the identity matrix.
845
+ * @memberof Matrix3
846
+ */
847
+ Matrix3.IDENTITY = freezeObject(new Matrix3(1.0, 0.0, 0.0,
848
+ 0.0, 1.0, 0.0,
849
+ 0.0, 0.0, 1.0));
850
+
851
+ /**
852
+ * The index into Matrix3 for column 0, row 0.
853
+ * @memberof Matrix3
854
+ */
855
+ Matrix3.COLUMN0ROW0 = 0;
856
+
857
+ /**
858
+ * The index into Matrix3 for column 0, row 1.
859
+ * @memberof Matrix3
860
+ */
861
+ Matrix3.COLUMN0ROW1 = 1;
862
+
863
+ /**
864
+ * The index into Matrix3 for column 0, row 2.
865
+ * @memberof Matrix3
866
+ */
867
+ Matrix3.COLUMN0ROW2 = 2;
868
+
869
+ /**
870
+ * The index into Matrix3 for column 1, row 0.
871
+ * @memberof Matrix3
872
+ */
873
+ Matrix3.COLUMN1ROW0 = 3;
874
+
875
+ /**
876
+ * The index into Matrix3 for column 1, row 1.
877
+ * @memberof Matrix3
878
+ */
879
+ Matrix3.COLUMN1ROW1 = 4;
880
+
881
+ /**
882
+ * The index into Matrix3 for column 1, row 2.
883
+ * @memberof Matrix3
884
+ */
885
+ Matrix3.COLUMN1ROW2 = 5;
886
+
887
+ /**
888
+ * The index into Matrix3 for column 2, row 0.
889
+ * @memberof Matrix3
890
+ */
891
+ Matrix3.COLUMN2ROW0 = 6;
892
+
893
+ /**
894
+ * The index into Matrix3 for column 2, row 1.
895
+ * @memberof Matrix3
896
+ */
897
+ Matrix3.COLUMN2ROW1 = 7;
898
+
899
+ /**
900
+ * The index into Matrix3 for column 2, row 2.
901
+ * @memberof Matrix3
902
+ */
903
+ Matrix3.COLUMN2ROW2 = 8;
904
+
905
+ /**
906
+ * Duplicates the provided Matrix3 instance.
907
+ * @memberof Matrix3
908
+ *
909
+ * @param {Matrix3} [result] The object onto which to store the result.
910
+ * @return {Matrix3} The modified result parameter or a new Matrix3 instance if one was not provided.
911
+ */
912
+ Matrix3.prototype.clone = function(result) {
913
+ return Matrix3.clone(this, result);
914
+ };
915
+
916
+ /**
917
+ * Creates an Array from this Matrix3 instance.
918
+ * @memberof Matrix3
919
+ *
920
+ * @param {Array} [result] The Array onto which to store the result.
921
+ * @return {Array} The modified Array parameter or a new Array instance if one was not provided.
922
+ */
923
+ Matrix3.prototype.toArray = function(result) {
924
+ return Matrix3.toArray(this, result);
925
+ };
926
+
927
+ /**
928
+ * Retrieves a copy of the matrix column at the provided index as a Cartesian3 instance.
929
+ * @memberof Matrix3
930
+ *
931
+ * @param {Number} index The zero-based index of the column to retrieve.
932
+ * @param {Cartesian3} [result] The object onto which to store the result.
933
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.
934
+ *
935
+ * @exception {DeveloperError} index is required and must be 0, 1, or 2.
936
+ *
937
+ * @see Cartesian3
938
+ */
939
+ Matrix3.prototype.getColumn = function(index, result) {
940
+ return Matrix3.getColumn(this, index, result);
941
+ };
942
+
943
+ /**
944
+ * Computes a new matrix that replaces the specified column in this matrix with the provided Cartesian3 instance.
945
+ * @memberof Matrix3
946
+ *
947
+ * @param {Number} index The zero-based index of the column to set.
948
+ * @param {Cartesian3} cartesian The Cartesian whose values will be assigned to the specified column.
949
+ *
950
+ * @exception {DeveloperError} cartesian is required.
951
+ * @exception {DeveloperError} index is required and must be 0, 1, or 2.
952
+ *
953
+ * @see Cartesian3
954
+ */
955
+ Matrix3.prototype.setColumn = function(index, cartesian, result) {
956
+ return Matrix3.setColumn(this, index, cartesian, result);
957
+ };
958
+
959
+ /**
960
+ * Retrieves a copy of the matrix row at the provided index as a Cartesian3 instance.
961
+ * @memberof Matrix3
962
+ *
963
+ * @param {Number} index The zero-based index of the row to retrieve.
964
+ * @param {Cartesian3} [result] The object onto which to store the result.
965
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.
966
+ *
967
+ * @exception {DeveloperError} index is required and must be 0, 1, or 2.
968
+ *
969
+ * @see Cartesian3
970
+ */
971
+ Matrix3.prototype.getRow = function(index, result) {
972
+ return Matrix3.getRow(this, index, result);
973
+ };
974
+
975
+ /**
976
+ * Computes a new matrix that replaces the specified row in this matrix with the provided Cartesian3 instance.
977
+ * @memberof Matrix3
978
+ *
979
+ * @param {Number} index The zero-based index of the row to set.
980
+ * @param {Cartesian3} cartesian The Cartesian whose values will be assigned to the specified row.
981
+ *
982
+ * @exception {DeveloperError} cartesian is required.
983
+ * @exception {DeveloperError} index is required and must be 0, 1, or 2.
984
+ *
985
+ * @see Cartesian3
986
+ */
987
+ Matrix3.prototype.setRow = function(index, cartesian, result) {
988
+ return Matrix3.setRow(this, index, cartesian, result);
989
+ };
990
+
991
+ /**
992
+ * Computes the product of this matrix and the provided matrix.
993
+ * @memberof Matrix3
994
+ *
995
+ * @param {Matrix3} right The right hand side matrix.
996
+ * @param {Matrix3} [result] The object onto which to store the result.
997
+ * @return {Matrix3} The modified result parameter or a new Matrix3 instance if one was not provided.
998
+ *
999
+ * @exception {DeveloperError} right is required.
1000
+ */
1001
+ Matrix3.prototype.multiply = function(right, result) {
1002
+ return Matrix3.multiply(this, right, result);
1003
+ };
1004
+
1005
+ /**
1006
+ * Computes the product of this matrix and a column vector.
1007
+ * @memberof Matrix3
1008
+ *
1009
+ * @param {Cartesian3} cartesian The column.
1010
+ * @param {Cartesian3} [result] The object onto which to store the result.
1011
+ * @return {Cartesian3} The modified result parameter or a new Cartesian3 instance if one was not provided.
1012
+ *
1013
+ * @exception {DeveloperError} cartesian is required.
1014
+ */
1015
+ Matrix3.prototype.multiplyByVector = function(cartesian, result) {
1016
+ return Matrix3.multiplyByVector(this, cartesian, result);
1017
+ };
1018
+
1019
+ /**
1020
+ * Computes the product of this matrix and a scalar.
1021
+ * @memberof Matrix3
1022
+ *
1023
+ * @param {Number} scalar The number to multiply by.
1024
+ * @param {Matrix3} [result] The object onto which to store the result.
1025
+ * @return {Matrix3} The modified result parameter or a new Cartesian3 instance if one was not provided.
1026
+ *
1027
+ * @exception {DeveloperError} scalar is required and must be a number.
1028
+ */
1029
+ Matrix3.prototype.multiplyByScalar = function(scalar, result) {
1030
+ return Matrix3.multiplyByScalar(this, scalar, result);
1031
+ };
1032
+ /**
1033
+ * Creates a negated copy of this matrix.
1034
+ * @memberof Matrix3
1035
+ *
1036
+ * @param {Matrix3} matrix The matrix to negate.
1037
+ * @param {Matrix3} [result] The object onto which to store the result.
1038
+ * @return {Matrix3} The modified result parameter or a new Matrix3 instance if one was not provided.
1039
+ *
1040
+ * @exception {DeveloperError} matrix is required.
1041
+ */
1042
+ Matrix3.prototype.negate = function(result) {
1043
+ return Matrix3.negate(this, result);
1044
+ };
1045
+
1046
+ /**
1047
+ * Computes the transpose of this matrix.
1048
+ * @memberof Matrix3
1049
+ *
1050
+ * @param {Matrix3} [result] The object onto which to store the result.
1051
+ * @return {Matrix3} The modified result parameter or a new Matrix3 instance if one was not provided.
1052
+ */
1053
+ Matrix3.prototype.transpose = function(result) {
1054
+ return Matrix3.transpose(this, result);
1055
+ };
1056
+
1057
+ /**
1058
+ * Compares this matrix to the provided matrix componentwise and returns
1059
+ * <code>true</code> if they are equal, <code>false</code> otherwise.
1060
+ * @memberof Matrix3
1061
+ *
1062
+ * @param {Matrix3} [right] The right hand side matrix.
1063
+ * @return {Boolean} <code>true</code> if they are equal, <code>false</code> otherwise.
1064
+ */
1065
+ Matrix3.prototype.equals = function(right) {
1066
+ return Matrix3.equals(this, right);
1067
+ };
1068
+
1069
+ /**
1070
+ * Compares this matrix to the provided matrix componentwise and returns
1071
+ * <code>true</code> if they are within the provided epsilon,
1072
+ * <code>false</code> otherwise.
1073
+ * @memberof Matrix3
1074
+ *
1075
+ * @param {Matrix3} [right] The right hand side matrix.
1076
+ * @param {Number} epsilon The epsilon to use for equality testing.
1077
+ * @return {Boolean} <code>true</code> if they are within the provided epsilon, <code>false</code> otherwise.
1078
+ *
1079
+ * @exception {DeveloperError} epsilon is required and must be a number.
1080
+ */
1081
+ Matrix3.prototype.equalsEpsilon = function(right, epsilon) {
1082
+ return Matrix3.equalsEpsilon(this, right, epsilon);
1083
+ };
1084
+
1085
+ /**
1086
+ * Creates a string representing this Matrix with each row being
1087
+ * on a separate line and in the format '(column0, column1, column2)'.
1088
+ * @memberof Matrix3
1089
+ *
1090
+ * @return {String} A string representing the provided Matrix with each row being on a separate line and in the format '(column0, column1, column2)'.
1091
+ */
1092
+ Matrix3.prototype.toString = function() {
1093
+ return '(' + this[0] + ', ' + this[3] + ', ' + this[6] + ')\n' +
1094
+ '(' + this[1] + ', ' + this[4] + ', ' + this[7] + ')\n' +
1095
+ '(' + this[2] + ', ' + this[5] + ', ' + this[8] + ')';
1096
+ };
1097
+
1098
+ return Matrix3;
1099
+ });