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.
- data/LICENSE.md +259 -0
- data/README.rdoc +90 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
- data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
- data/app/assets/javascripts/Assets/package.json +6 -0
- data/app/assets/javascripts/Cesium.js +320 -0
- data/app/assets/javascripts/Core/AnimationController.js +148 -0
- data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
- data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
- data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
- data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
- data/app/assets/javascripts/Core/Cartesian2.js +762 -0
- data/app/assets/javascripts/Core/Cartesian3.js +861 -0
- data/app/assets/javascripts/Core/Cartesian4.js +762 -0
- data/app/assets/javascripts/Core/Cartographic.js +211 -0
- data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
- data/app/assets/javascripts/Core/Clock.js +195 -0
- data/app/assets/javascripts/Core/ClockRange.js +37 -0
- data/app/assets/javascripts/Core/ClockStep.js +32 -0
- data/app/assets/javascripts/Core/Color.js +1629 -0
- data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
- data/app/assets/javascripts/Core/Core.profile.js +8 -0
- data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
- data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
- data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
- data/app/assets/javascripts/Core/DeveloperError.js +60 -0
- data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
- data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
- data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
- data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
- data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
- data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
- data/app/assets/javascripts/Core/Enumeration.js +67 -0
- data/app/assets/javascripts/Core/Event.js +122 -0
- data/app/assets/javascripts/Core/Extent.js +383 -0
- data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
- data/app/assets/javascripts/Core/FAR.js +13 -0
- data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
- data/app/assets/javascripts/Core/Fullscreen.js +235 -0
- data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
- data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
- data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
- data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
- data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
- data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
- data/app/assets/javascripts/Core/Intersect.js +40 -0
- data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
- data/app/assets/javascripts/Core/Interval.js +27 -0
- data/app/assets/javascripts/Core/Iso8601.js +46 -0
- data/app/assets/javascripts/Core/JulianDate.js +1228 -0
- data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
- data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
- data/app/assets/javascripts/Core/LeapSecond.js +158 -0
- data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
- data/app/assets/javascripts/Core/Math.js +532 -0
- data/app/assets/javascripts/Core/Matrix2.js +833 -0
- data/app/assets/javascripts/Core/Matrix3.js +1099 -0
- data/app/assets/javascripts/Core/Matrix4.js +2164 -0
- data/app/assets/javascripts/Core/MeshFilters.js +568 -0
- data/app/assets/javascripts/Core/Occluder.js +474 -0
- data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
- data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
- data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
- data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
- data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
- data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
- data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
- data/app/assets/javascripts/Core/Quaternion.js +947 -0
- data/app/assets/javascripts/Core/Queue.js +95 -0
- data/app/assets/javascripts/Core/Ray.js +64 -0
- data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
- data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
- data/app/assets/javascripts/Core/RuntimeError.js +59 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
- data/app/assets/javascripts/Core/Shapes.js +230 -0
- data/app/assets/javascripts/Core/Spherical.js +192 -0
- data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
- data/app/assets/javascripts/Core/TimeConstants.js +85 -0
- data/app/assets/javascripts/Core/TimeInterval.js +305 -0
- data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
- data/app/assets/javascripts/Core/TimeStandard.js +31 -0
- data/app/assets/javascripts/Core/Tipsify.js +285 -0
- data/app/assets/javascripts/Core/Transforms.js +614 -0
- data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
- data/app/assets/javascripts/Core/Visibility.js +38 -0
- data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
- data/app/assets/javascripts/Core/WindingOrder.js +40 -0
- data/app/assets/javascripts/Core/binarySearch.js +69 -0
- data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
- data/app/assets/javascripts/Core/clone.js +21 -0
- data/app/assets/javascripts/Core/combine.js +81 -0
- data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
- data/app/assets/javascripts/Core/createGuid.js +25 -0
- data/app/assets/javascripts/Core/defaultValue.js +22 -0
- data/app/assets/javascripts/Core/destroyObject.js +61 -0
- data/app/assets/javascripts/Core/freezeObject.js +20 -0
- data/app/assets/javascripts/Core/getImagePixels.js +46 -0
- data/app/assets/javascripts/Core/isLeapYear.js +30 -0
- data/app/assets/javascripts/Core/jsonp.js +116 -0
- data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
- data/app/assets/javascripts/Core/loadImage.js +85 -0
- data/app/assets/javascripts/Core/loadJson.js +54 -0
- data/app/assets/javascripts/Core/loadText.js +78 -0
- data/app/assets/javascripts/Core/loadXML.js +76 -0
- data/app/assets/javascripts/Core/package.json +6 -0
- data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
- data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
- data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
- data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
- data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
- data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
- data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
- data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
- data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
- data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
- data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
- data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
- data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
- data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
- data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
- data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
- data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
- data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
- data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
- data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
- data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
- data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
- data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
- data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
- data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
- data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
- data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
- data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
- data/app/assets/javascripts/DynamicScene/package.json +6 -0
- data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
- data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
- data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
- data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
- data/app/assets/javascripts/Renderer/Buffer.js +141 -0
- data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
- data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
- data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
- data/app/assets/javascripts/Renderer/Context.js +2805 -0
- data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
- data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
- data/app/assets/javascripts/Renderer/CullFace.js +50 -0
- data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
- data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
- data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
- data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
- data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
- data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
- data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
- data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
- data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
- data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
- data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
- data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
- data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
- data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
- data/app/assets/javascripts/Renderer/Texture.js +395 -0
- data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
- data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
- data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
- data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
- data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
- data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
- data/app/assets/javascripts/Renderer/UniformState.js +799 -0
- data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
- data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
- data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
- data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
- data/app/assets/javascripts/Renderer/package.json +6 -0
- data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
- data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
- data/app/assets/javascripts/Scene/Billboard.js +680 -0
- data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
- data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
- data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
- data/app/assets/javascripts/Scene/Camera.js +358 -0
- data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
- data/app/assets/javascripts/Scene/CameraController.js +1258 -0
- data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
- data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
- data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
- data/app/assets/javascripts/Scene/CentralBody.js +817 -0
- data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
- data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
- data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
- data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
- data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
- data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
- data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
- data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
- data/app/assets/javascripts/Scene/FrameState.js +86 -0
- data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
- data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
- data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/Imagery.js +85 -0
- data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
- data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
- data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
- data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
- data/app/assets/javascripts/Scene/ImageryState.js +20 -0
- data/app/assets/javascripts/Scene/Label.js +706 -0
- data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
- data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
- data/app/assets/javascripts/Scene/Material.js +1177 -0
- data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
- data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
- data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
- data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
- data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
- data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
- data/app/assets/javascripts/Scene/Polygon.js +886 -0
- data/app/assets/javascripts/Scene/Polyline.js +441 -0
- data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
- data/app/assets/javascripts/Scene/Projections.js +93 -0
- data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
- data/app/assets/javascripts/Scene/Scene.js +632 -0
- data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
- data/app/assets/javascripts/Scene/SceneMode.js +51 -0
- data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
- data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
- data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
- data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
- data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
- data/app/assets/javascripts/Scene/SkyBox.js +231 -0
- data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
- data/app/assets/javascripts/Scene/TexturePool.js +154 -0
- data/app/assets/javascripts/Scene/Tile.js +322 -0
- data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
- data/app/assets/javascripts/Scene/TileImagery.js +36 -0
- data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
- data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
- data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
- data/app/assets/javascripts/Scene/TileState.js +19 -0
- data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
- data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
- data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
- data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
- data/app/assets/javascripts/Scene/package.json +6 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
- data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
- data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
- data/app/assets/javascripts/Shaders/Noise.js +242 -0
- data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
- data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
- data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
- data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
- data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
- data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
- data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
- data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
- data/app/assets/javascripts/Shaders/Ray.js +357 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
- data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
- data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
- data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
- data/app/assets/javascripts/Shaders/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
- data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
- data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
- data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
- data/app/assets/javascripts/ThirdParty/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
- data/app/assets/javascripts/ThirdParty/when.js +748 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
- data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
- data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
- data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
- data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
- data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
- data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
- data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
- data/app/assets/javascripts/Widgets/Timeline.css +113 -0
- data/app/assets/javascripts/Widgets/Timeline.js +629 -0
- data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
- data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
- data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
- data/app/assets/javascripts/Widgets/package.json +6 -0
- data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
- data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
- data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
- data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
- data/app/assets/javascripts/Workers/package.json +6 -0
- data/app/assets/javascripts/copyrightHeader.js +22 -0
- data/app/assets/javascripts/main.js +10 -0
- data/app/assets/stylesheets/cesium.css +4 -0
- data/app/controllers/cesium_controller.rb +4 -0
- data/app/helpers/cesium_helper.rb +2 -0
- data/app/views/cesium/index.html.erb +3 -0
- data/config/routes.rb +3 -0
- data/lib/cesium.rb +4 -0
- data/lib/cesium/engine.rb +4 -0
- data/lib/cesium/version.rb +3 -0
- data/lib/tasks/cesium_tasks.rake +4 -0
- data/test/cesium_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
- data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
- data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
- data/test/dummy/app/assets/stylesheets/application.css +12 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +21 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/requirejs.yml +10 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/functional/cesium_controller_test.rb +9 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- data/test/unit/helpers/cesium_helper_test.rb +4 -0
- metadata +641 -0
|
@@ -0,0 +1,680 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'../Core/defaultValue',
|
|
4
|
+
'../Core/DeveloperError',
|
|
5
|
+
'../Core/Color',
|
|
6
|
+
'../Core/Cartesian2',
|
|
7
|
+
'../Core/Cartesian3',
|
|
8
|
+
'../Core/Cartesian4',
|
|
9
|
+
'../Core/Cartographic',
|
|
10
|
+
'../Core/Math',
|
|
11
|
+
'./HorizontalOrigin',
|
|
12
|
+
'./VerticalOrigin',
|
|
13
|
+
'./SceneMode'
|
|
14
|
+
], function(
|
|
15
|
+
defaultValue,
|
|
16
|
+
DeveloperError,
|
|
17
|
+
Color,
|
|
18
|
+
Cartesian2,
|
|
19
|
+
Cartesian3,
|
|
20
|
+
Cartesian4,
|
|
21
|
+
Cartographic,
|
|
22
|
+
CesiumMath,
|
|
23
|
+
HorizontalOrigin,
|
|
24
|
+
VerticalOrigin,
|
|
25
|
+
SceneMode) {
|
|
26
|
+
"use strict";
|
|
27
|
+
|
|
28
|
+
var EMPTY_OBJECT = {};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* A viewport-aligned image positioned in the 3D scene, that is created
|
|
32
|
+
* and rendered using a {@link BillboardCollection}. A billboard is created and its initial
|
|
33
|
+
* properties are set by calling {@link BillboardCollection#add}. Any of the billboard's
|
|
34
|
+
* properties can be changed at any time by calling the billboard's corresponding
|
|
35
|
+
* <code>set</code> function, e.g., {@link Billboard#setShow}.
|
|
36
|
+
* <br /><br />
|
|
37
|
+
* <div align='center'>
|
|
38
|
+
* <img src='images/Billboard.png' width='400' height='300' /><br />
|
|
39
|
+
* Example billboards
|
|
40
|
+
* </div>
|
|
41
|
+
*
|
|
42
|
+
* @alias Billboard
|
|
43
|
+
*
|
|
44
|
+
* @performance Calling any <code>get</code> function, e.g., {@link Billboard#getShow}, is constant time.
|
|
45
|
+
* Calling a <code>set</code> function, e.g., {@link Billboard#setShow}, is constant time but results in
|
|
46
|
+
* CPU to GPU traffic when {@link BillboardCollection#update} is called. The per-billboard traffic is
|
|
47
|
+
* the same regardless of how many properties were updated. If most billboards in a collection need to be
|
|
48
|
+
* updated, it may be more efficient to clear the collection with {@link BillboardCollection#removeAll}
|
|
49
|
+
* and add new billboards instead of modifying each one.
|
|
50
|
+
*
|
|
51
|
+
* @see BillboardCollection
|
|
52
|
+
* @see BillboardCollection#add
|
|
53
|
+
* @see Label
|
|
54
|
+
*
|
|
55
|
+
* @internalConstructor
|
|
56
|
+
*/
|
|
57
|
+
var Billboard = function(description, billboardCollection) {
|
|
58
|
+
description = defaultValue(description, EMPTY_OBJECT);
|
|
59
|
+
|
|
60
|
+
this._show = defaultValue(description.show, true);
|
|
61
|
+
|
|
62
|
+
this._position = Cartesian3.clone(defaultValue(description.position, Cartesian3.ZERO));
|
|
63
|
+
this._actualPosition = this._position.clone(); // For columbus view and 2D
|
|
64
|
+
|
|
65
|
+
this._pixelOffset = Cartesian2.clone(defaultValue(description.pixelOffset, Cartesian2.ZERO));
|
|
66
|
+
this._eyeOffset = Cartesian3.clone(defaultValue(description.eyeOffset, Cartesian3.ZERO));
|
|
67
|
+
this._verticalOrigin = defaultValue(description.verticalOrigin, VerticalOrigin.CENTER);
|
|
68
|
+
this._horizontalOrigin = defaultValue(description.horizontalOrigin, HorizontalOrigin.CENTER);
|
|
69
|
+
this._scale = defaultValue(description.scale, 1.0);
|
|
70
|
+
this._imageIndex = defaultValue(description.imageIndex, -1);
|
|
71
|
+
this._color = Color.clone(defaultValue(description.color, Color.WHITE));
|
|
72
|
+
|
|
73
|
+
this._pickId = undefined;
|
|
74
|
+
this._pickIdThis = description._pickIdThis;
|
|
75
|
+
this._billboardCollection = billboardCollection;
|
|
76
|
+
this._dirty = false;
|
|
77
|
+
this._index = -1; //Used only by BillboardCollection
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
var SHOW_INDEX = Billboard.SHOW_INDEX = 0;
|
|
81
|
+
var POSITION_INDEX = Billboard.POSITION_INDEX = 1;
|
|
82
|
+
var PIXEL_OFFSET_INDEX = Billboard.PIXEL_OFFSET_INDEX = 2;
|
|
83
|
+
var EYE_OFFSET_INDEX = Billboard.EYE_OFFSET_INDEX = 3;
|
|
84
|
+
var HORIZONTAL_ORIGIN_INDEX = Billboard.HORIZONTAL_ORIGIN_INDEX = 4;
|
|
85
|
+
var VERTICAL_ORIGIN_INDEX = Billboard.VERTICAL_ORIGIN_INDEX = 5;
|
|
86
|
+
var SCALE_INDEX = Billboard.SCALE_INDEX = 6;
|
|
87
|
+
var IMAGE_INDEX_INDEX = Billboard.IMAGE_INDEX_INDEX = 7;
|
|
88
|
+
var COLOR_INDEX = Billboard.COLOR_INDEX = 8;
|
|
89
|
+
Billboard.NUMBER_OF_PROPERTIES = 9;
|
|
90
|
+
|
|
91
|
+
function makeDirty(billboard, propertyChanged) {
|
|
92
|
+
var billboardCollection = billboard._billboardCollection;
|
|
93
|
+
if (typeof billboardCollection !== 'undefined') {
|
|
94
|
+
billboardCollection._updateBillboard(billboard, propertyChanged);
|
|
95
|
+
billboard._dirty = true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
Billboard.prototype.getPickId = function(context) {
|
|
100
|
+
this._pickId = this._pickId || context.createPickId(this._pickIdThis || this);
|
|
101
|
+
return this._pickId;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Returns true if this billboard will be shown. Call {@link Billboard#setShow}
|
|
106
|
+
* to hide or show a billboard, instead of removing it and re-adding it to the collection.
|
|
107
|
+
*
|
|
108
|
+
* @memberof Billboard
|
|
109
|
+
*
|
|
110
|
+
* @return {Boolean} <code>true</code> if this billboard will be shown; otherwise, <code>false</code>.
|
|
111
|
+
*
|
|
112
|
+
* @see Billboard#setShow
|
|
113
|
+
*/
|
|
114
|
+
Billboard.prototype.getShow = function() {
|
|
115
|
+
return this._show;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Determines if this billboard will be shown. Call this to hide or show a billboard, instead
|
|
120
|
+
* of removing it and re-adding it to the collection.
|
|
121
|
+
*
|
|
122
|
+
* @memberof Billboard
|
|
123
|
+
*
|
|
124
|
+
* @param {Boolean} value Indicates if this billboard will be shown.
|
|
125
|
+
*
|
|
126
|
+
* @exception {DeveloperError} value is required.
|
|
127
|
+
*
|
|
128
|
+
* @see Billboard#getShow
|
|
129
|
+
*/
|
|
130
|
+
Billboard.prototype.setShow = function(value) {
|
|
131
|
+
if (typeof value === 'undefined') {
|
|
132
|
+
throw new DeveloperError('value is required.');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (value !== this._show) {
|
|
136
|
+
this._show = value;
|
|
137
|
+
makeDirty(this, SHOW_INDEX);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Returns the Cartesian position of this billboard.
|
|
143
|
+
*
|
|
144
|
+
* @memberof Billboard
|
|
145
|
+
*
|
|
146
|
+
* @return {Cartesian3} The Cartesian position of this billboard.
|
|
147
|
+
*
|
|
148
|
+
* @see Billboard#setPosition
|
|
149
|
+
*/
|
|
150
|
+
Billboard.prototype.getPosition = function() {
|
|
151
|
+
return this._position;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Sets the Cartesian position of this billboard.
|
|
156
|
+
* <br /><br />
|
|
157
|
+
* As shown in the examples, <code>value</code> can be either a {@link Cartesian3}
|
|
158
|
+
* or an object literal with <code>x</code>, <code>y</code>, and <code>z</code> properties.
|
|
159
|
+
* A copy of <code>value</code> is made, so changing it after calling <code>setPosition</code>
|
|
160
|
+
* does not affect the billboard's position; an explicit call to <code>setPosition</code> is required.
|
|
161
|
+
*
|
|
162
|
+
* @memberof Billboard
|
|
163
|
+
*
|
|
164
|
+
* @param {Cartesian3} value The Cartesian position.
|
|
165
|
+
*
|
|
166
|
+
* @exception {DeveloperError} value is required.
|
|
167
|
+
*
|
|
168
|
+
* @see Billboard#getPosition
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* // Example 1. Set a billboard's position using a Cartesian3.
|
|
172
|
+
* b.setPosition(new Cartesian3(1.0, 2.0, 3.0));
|
|
173
|
+
*
|
|
174
|
+
* // Example 2. Set a billboard's position using an object literal.
|
|
175
|
+
* b.setPosition({
|
|
176
|
+
* x : 1.0,
|
|
177
|
+
* y : 2.0,
|
|
178
|
+
* z : 3.0
|
|
179
|
+
* });
|
|
180
|
+
*/
|
|
181
|
+
Billboard.prototype.setPosition = function(value) {
|
|
182
|
+
if (typeof value === 'undefined') {
|
|
183
|
+
throw new DeveloperError('value is required.');
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
var position = this._position;
|
|
187
|
+
if (!Cartesian3.equals(position, value)) {
|
|
188
|
+
Cartesian3.clone(value, position);
|
|
189
|
+
Cartesian3.clone(value, this._actualPosition);
|
|
190
|
+
|
|
191
|
+
makeDirty(this, POSITION_INDEX);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
Billboard.prototype._getActualPosition = function() {
|
|
196
|
+
return this._actualPosition;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
Billboard.prototype._setActualPosition = function(value) {
|
|
200
|
+
Cartesian3.clone(value, this._actualPosition);
|
|
201
|
+
makeDirty(this, POSITION_INDEX);
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Returns the pixel offset from the origin of this billboard.
|
|
206
|
+
*
|
|
207
|
+
* @memberof Billboard
|
|
208
|
+
*
|
|
209
|
+
* @return {Cartesian2} The pixel offset of this billboard.
|
|
210
|
+
*
|
|
211
|
+
* @see Billboard#setPixelOffset
|
|
212
|
+
*/
|
|
213
|
+
Billboard.prototype.getPixelOffset = function() {
|
|
214
|
+
return this._pixelOffset;
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Sets the pixel offset in screen space from the origin of this billboard. This is commonly used
|
|
219
|
+
* to align multiple billboards and labels at the same position, e.g., an image and text. The
|
|
220
|
+
* screen space origin is the bottom, left corner of the canvas; <code>x</code> increases from
|
|
221
|
+
* left to right, and <code>y</code> increases from bottom to top.
|
|
222
|
+
* <br /><br />
|
|
223
|
+
* <code>value</code> can be either a {@link Cartesian2} or an object literal with
|
|
224
|
+
* <code>x</code> and <code>y</code> properties. A copy of <code>value</code> is made, so
|
|
225
|
+
* changing it after calling <code>setPixelOffset</code> does not affect the billboard's pixel
|
|
226
|
+
* offset; an explicit call to <code>setPixelOffset</code> is required.
|
|
227
|
+
* <br /><br />
|
|
228
|
+
* <div align='center'>
|
|
229
|
+
* <table border='0' cellpadding='5'><tr>
|
|
230
|
+
* <td align='center'><code>default</code><br/><img src='images/Billboard.setPixelOffset.default.png' width='250' height='188' /></td>
|
|
231
|
+
* <td align='center'><code>b.setPixelOffset({ x : 50, y : -25 });</code><br/><img src='images/Billboard.setPixelOffset.x50y-25.png' width='250' height='188' /></td>
|
|
232
|
+
* </tr></table>
|
|
233
|
+
* The billboard's origin is indicated by the yellow point.
|
|
234
|
+
* </div>
|
|
235
|
+
*
|
|
236
|
+
* @memberof Billboard
|
|
237
|
+
*
|
|
238
|
+
* @param {Cartesian2} value The 2D Cartesian pixel offset.
|
|
239
|
+
*
|
|
240
|
+
* @exception {DeveloperError} value is required.
|
|
241
|
+
*
|
|
242
|
+
* @see Billboard#getPixelOffset
|
|
243
|
+
* @see Label#setPixelOffset
|
|
244
|
+
*/
|
|
245
|
+
Billboard.prototype.setPixelOffset = function(value) {
|
|
246
|
+
if (typeof value === 'undefined') {
|
|
247
|
+
throw new DeveloperError('value is required.');
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
var pixelOffset = this._pixelOffset;
|
|
251
|
+
if (!Cartesian2.equals(pixelOffset, value)) {
|
|
252
|
+
Cartesian2.clone(value, pixelOffset);
|
|
253
|
+
makeDirty(this, PIXEL_OFFSET_INDEX);
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Returns the 3D Cartesian offset applied to this billboard in eye coordinates.
|
|
259
|
+
*
|
|
260
|
+
* @memberof Billboard
|
|
261
|
+
*
|
|
262
|
+
* @return {Cartesian3} The 3D Cartesian offset applied to this billboard in eye coordinates.
|
|
263
|
+
*
|
|
264
|
+
* @see Billboard#setEyeOffset
|
|
265
|
+
*/
|
|
266
|
+
Billboard.prototype.getEyeOffset = function() {
|
|
267
|
+
return this._eyeOffset;
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Sets the 3D Cartesian offset applied to this billboard in eye coordinates. Eye coordinates is a left-handed
|
|
272
|
+
* coordinate system, where <code>x</code> points towards the viewer's right, <code>y</code> points up, and
|
|
273
|
+
* <code>z</code> points into the screen. Eye coordinates use the same scale as world and model coordinates,
|
|
274
|
+
* which is typically meters.
|
|
275
|
+
* <br /><br />
|
|
276
|
+
* An eye offset is commonly used to arrange multiple billboards or objects at the same position, e.g., to
|
|
277
|
+
* arrange a billboard above its corresponding 3D model.
|
|
278
|
+
* <br /><br />
|
|
279
|
+
* <code>value</code> can be either a {@link Cartesian3} or an object literal with <code>x</code>,
|
|
280
|
+
* <code>y</code>, and <code>z</code> properties. A copy of <code>value</code> is made, so changing it after
|
|
281
|
+
* calling <code>setEyeOffset</code> does not affect the billboard's eye offset; an explicit call to
|
|
282
|
+
* <code>setEyeOffset</code> is required.
|
|
283
|
+
* <br /><br />
|
|
284
|
+
* Below, the billboard is positioned at the center of the Earth but an eye offset makes it always
|
|
285
|
+
* appear on top of the Earth regardless of the viewer's or Earth's orientation.
|
|
286
|
+
* <br /><br />
|
|
287
|
+
* <div align='center'>
|
|
288
|
+
* <table border='0' cellpadding='5'><tr>
|
|
289
|
+
* <td align='center'><img src='images/Billboard.setEyeOffset.one.png' width='250' height='188' /></td>
|
|
290
|
+
* <td align='center'><img src='images/Billboard.setEyeOffset.two.png' width='250' height='188' /></td>
|
|
291
|
+
* </tr></table>
|
|
292
|
+
* <code>b.setEyeOffset({ x : 0.0, y : 8000000.0, z : 0.0 });</code><br /><br />
|
|
293
|
+
* </div>
|
|
294
|
+
*
|
|
295
|
+
* @memberof Billboard
|
|
296
|
+
*
|
|
297
|
+
* @param {Cartesian3} value The 3D Cartesian offset in eye coordinates.
|
|
298
|
+
*
|
|
299
|
+
* @exception {DeveloperError} value is required.
|
|
300
|
+
*
|
|
301
|
+
* @see Billboard#getEyeOffset
|
|
302
|
+
*/
|
|
303
|
+
Billboard.prototype.setEyeOffset = function(value) {
|
|
304
|
+
if (typeof value === 'undefined') {
|
|
305
|
+
throw new DeveloperError('value is required.');
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
var eyeOffset = this._eyeOffset;
|
|
309
|
+
if (!Cartesian3.equals(eyeOffset, value)) {
|
|
310
|
+
Cartesian3.clone(value, eyeOffset);
|
|
311
|
+
makeDirty(this, EYE_OFFSET_INDEX);
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Returns the horizontal origin of this billboard.
|
|
317
|
+
*
|
|
318
|
+
* @memberof Billboard
|
|
319
|
+
*
|
|
320
|
+
* @return {HorizontalOrigin} The horizontal origin of this billboard.
|
|
321
|
+
*
|
|
322
|
+
* @see Billboard#setHorizontalOrigin
|
|
323
|
+
*/
|
|
324
|
+
Billboard.prototype.getHorizontalOrigin = function() {
|
|
325
|
+
return this._horizontalOrigin;
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Sets the horizontal origin of this billboard, which determines if the billboard is
|
|
330
|
+
* to the left, center, or right of its position.
|
|
331
|
+
* <br /><br />
|
|
332
|
+
* <div align='center'>
|
|
333
|
+
* <img src='images/Billboard.setHorizontalOrigin.png' width='400' height='300' /><br />
|
|
334
|
+
* </div>
|
|
335
|
+
*
|
|
336
|
+
* @memberof Billboard
|
|
337
|
+
*
|
|
338
|
+
* @param {HorizontalOrigin} value The horizontal origin.
|
|
339
|
+
*
|
|
340
|
+
* @exception {DeveloperError} value is required.
|
|
341
|
+
*
|
|
342
|
+
* @see Billboard#getHorizontalOrigin
|
|
343
|
+
* @see Billboard#setVerticalOrigin
|
|
344
|
+
*
|
|
345
|
+
* @example
|
|
346
|
+
* // Use a bottom, left origin
|
|
347
|
+
* b.setHorizontalOrigin(HorizontalOrigin.LEFT);
|
|
348
|
+
* b.setVerticalOrigin(VerticalOrigin.BOTTOM);
|
|
349
|
+
*/
|
|
350
|
+
Billboard.prototype.setHorizontalOrigin = function(value) {
|
|
351
|
+
if (typeof value === 'undefined') {
|
|
352
|
+
throw new DeveloperError('value is required.');
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
if (this._horizontalOrigin !== value) {
|
|
356
|
+
this._horizontalOrigin = value;
|
|
357
|
+
makeDirty(this, HORIZONTAL_ORIGIN_INDEX);
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Returns the vertical origin of this billboard.
|
|
363
|
+
*
|
|
364
|
+
* @memberof Billboard
|
|
365
|
+
*
|
|
366
|
+
* @return {VerticalOrigin} The vertical origin of this billboard.
|
|
367
|
+
*
|
|
368
|
+
* @see Billboard#setVerticalOrigin
|
|
369
|
+
*/
|
|
370
|
+
Billboard.prototype.getVerticalOrigin = function() {
|
|
371
|
+
return this._verticalOrigin;
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Sets the vertical origin of this billboard, which determines if the billboard is
|
|
376
|
+
* to the above, below, or at the center of its position.
|
|
377
|
+
* <br /><br />
|
|
378
|
+
* <div align='center'>
|
|
379
|
+
* <img src='images/Billboard.setVerticalOrigin.png' width='400' height='300' /><br />
|
|
380
|
+
* </div>
|
|
381
|
+
*
|
|
382
|
+
* @memberof Billboard
|
|
383
|
+
*
|
|
384
|
+
* @param {VerticalOrigin} value The vertical origin.
|
|
385
|
+
*
|
|
386
|
+
* @exception {DeveloperError} value is required.
|
|
387
|
+
*
|
|
388
|
+
* @see Billboard#getVerticalOrigin
|
|
389
|
+
* @see Billboard#setHorizontalOrigin
|
|
390
|
+
*
|
|
391
|
+
* @example
|
|
392
|
+
* // Use a bottom, left origin
|
|
393
|
+
* b.setHorizontalOrigin(HorizontalOrigin.LEFT);
|
|
394
|
+
* b.setVerticalOrigin(VerticalOrigin.BOTTOM);
|
|
395
|
+
*/
|
|
396
|
+
Billboard.prototype.setVerticalOrigin = function(value) {
|
|
397
|
+
if (typeof value === 'undefined') {
|
|
398
|
+
throw new DeveloperError('value is required.');
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
if (this._verticalOrigin !== value) {
|
|
402
|
+
this._verticalOrigin = value;
|
|
403
|
+
makeDirty(this, VERTICAL_ORIGIN_INDEX);
|
|
404
|
+
}
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Returns the uniform scale that is multiplied with the billboard's image size in pixels.
|
|
409
|
+
*
|
|
410
|
+
* @memberof Billboard
|
|
411
|
+
*
|
|
412
|
+
* @return {Number} The scale used to size the billboard.
|
|
413
|
+
*
|
|
414
|
+
* @see Billboard#setScale
|
|
415
|
+
*/
|
|
416
|
+
Billboard.prototype.getScale = function() {
|
|
417
|
+
return this._scale;
|
|
418
|
+
};
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Sets the uniform scale that is multiplied with the billboard's image size in pixels.
|
|
422
|
+
* A scale of <code>1.0</code> does not change the size of the billboard; a scale greater than
|
|
423
|
+
* <code>1.0</code> enlarges the billboard; a positive scale less than <code>1.0</code> shrinks
|
|
424
|
+
* the billboard.
|
|
425
|
+
* <br /><br />
|
|
426
|
+
* <div align='center'>
|
|
427
|
+
* <img src='images/Billboard.setScale.png' width='400' height='300' /><br/>
|
|
428
|
+
* From left to right in the above image, the scales are <code>0.5</code>, <code>1.0</code>,
|
|
429
|
+
* and <code>2.0</code>.
|
|
430
|
+
* </div>
|
|
431
|
+
*
|
|
432
|
+
* @memberof Billboard
|
|
433
|
+
*
|
|
434
|
+
* @param {Number} value The scale used to size the billboard.
|
|
435
|
+
*
|
|
436
|
+
* @exception {DeveloperError} value is required.
|
|
437
|
+
*
|
|
438
|
+
* @see Billboard#getScale
|
|
439
|
+
* @see Billboard#setImageIndex
|
|
440
|
+
*/
|
|
441
|
+
Billboard.prototype.setScale = function(value) {
|
|
442
|
+
if (typeof value === 'undefined') {
|
|
443
|
+
throw new DeveloperError('value is required.');
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
if (this._scale !== value) {
|
|
447
|
+
this._scale = value;
|
|
448
|
+
makeDirty(this, SCALE_INDEX);
|
|
449
|
+
}
|
|
450
|
+
};
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* DOC_TBA
|
|
454
|
+
*
|
|
455
|
+
* @memberof Billboard
|
|
456
|
+
*
|
|
457
|
+
* @see Billboard#setImageIndex
|
|
458
|
+
* @see BillboardCollection#setTextureAtlas
|
|
459
|
+
*/
|
|
460
|
+
Billboard.prototype.getImageIndex = function() {
|
|
461
|
+
return this._imageIndex;
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* DOC_TBA
|
|
466
|
+
*
|
|
467
|
+
* @memberof Billboard
|
|
468
|
+
*
|
|
469
|
+
* @see Billboard#getImageIndex
|
|
470
|
+
* @see BillboardCollection#setTextureAtlas
|
|
471
|
+
*/
|
|
472
|
+
Billboard.prototype.setImageIndex = function(value) {
|
|
473
|
+
if (typeof value !== 'number') {
|
|
474
|
+
throw new DeveloperError('value is required and must be a number.');
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
if (this._imageIndex !== value) {
|
|
478
|
+
this._imageIndex = value;
|
|
479
|
+
makeDirty(this, IMAGE_INDEX_INDEX);
|
|
480
|
+
}
|
|
481
|
+
};
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* Returns the color that is multiplied with the billboard's texture. The red, green, blue, and alpha values
|
|
485
|
+
* are indicated by the returned object's <code>red</code>, <code>green</code>, <code>blue</code>, and <code>alpha</code>
|
|
486
|
+
* properties, which range from <code>0</code> (no intensity) to <code>1.0</code> (full intensity).
|
|
487
|
+
*
|
|
488
|
+
* @memberof Billboard
|
|
489
|
+
*
|
|
490
|
+
* @return {Number} The color that is multiplied with the billboard's texture.
|
|
491
|
+
*
|
|
492
|
+
* @see Billboard#setColor
|
|
493
|
+
*/
|
|
494
|
+
Billboard.prototype.getColor = function() {
|
|
495
|
+
return this._color;
|
|
496
|
+
};
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* Sets the color that is multiplied with the billboard's texture. This has two common use cases. First,
|
|
500
|
+
* the same white texture may be used by many different billboards, each with a different color, to create
|
|
501
|
+
* colored billboards. Second, the color's alpha component can be used to make the billboard translucent as shown below.
|
|
502
|
+
* An alpha of <code>0.0</code> makes the billboard transparent, and <code>1.0</code> makes the billboard opaque.
|
|
503
|
+
* <br /><br />
|
|
504
|
+
* <div align='center'>
|
|
505
|
+
* <table border='0' cellpadding='5'><tr>
|
|
506
|
+
* <td align='center'><code>default</code><br/><img src='images/Billboard.setColor.Alpha255.png' width='250' height='188' /></td>
|
|
507
|
+
* <td align='center'><code>alpha : 0.5</code><br/><img src='images/Billboard.setColor.Alpha127.png' width='250' height='188' /></td>
|
|
508
|
+
* </tr></table>
|
|
509
|
+
* </div>
|
|
510
|
+
* <br />
|
|
511
|
+
* The red, green, blue, and alpha values are indicated by <code>value</code>'s <code>red</code>, <code>green</code>,
|
|
512
|
+
* <code>blue</code>, and <code>alpha</code> properties as shown in Example 1. These components range from <code>0.0</code>
|
|
513
|
+
* (no intensity) to <code>1.0</code> (full intensity).
|
|
514
|
+
*
|
|
515
|
+
* @memberof Billboard
|
|
516
|
+
*
|
|
517
|
+
* @param {Object} value The color's red, green, blue, and alpha components.
|
|
518
|
+
*
|
|
519
|
+
* @exception {DeveloperError} value is required.
|
|
520
|
+
*
|
|
521
|
+
* @see Billboard#getColor
|
|
522
|
+
*
|
|
523
|
+
* @example
|
|
524
|
+
* // Example 1. Assign yellow.
|
|
525
|
+
* b.setColor({
|
|
526
|
+
* red : 1.0,
|
|
527
|
+
* green : 1.0,
|
|
528
|
+
* blue : 0.0,
|
|
529
|
+
* alpha : 1.0
|
|
530
|
+
* });
|
|
531
|
+
*
|
|
532
|
+
* // Example 2. Make a billboard 50% translucent.
|
|
533
|
+
* b.setColor({
|
|
534
|
+
* red : 1.0,
|
|
535
|
+
* green : 1.0,
|
|
536
|
+
* blue : 1.0,
|
|
537
|
+
* alpha : 0.5
|
|
538
|
+
* });
|
|
539
|
+
*/
|
|
540
|
+
Billboard.prototype.setColor = function(value) {
|
|
541
|
+
if (typeof value === 'undefined') {
|
|
542
|
+
throw new DeveloperError('value is required.');
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
var color = this._color;
|
|
546
|
+
if (!Color.equals(color, value)) {
|
|
547
|
+
Color.clone(value, color);
|
|
548
|
+
makeDirty(this, COLOR_INDEX);
|
|
549
|
+
}
|
|
550
|
+
};
|
|
551
|
+
|
|
552
|
+
var tempCartesian4 = new Cartesian4();
|
|
553
|
+
var tempCartographic = new Cartographic();
|
|
554
|
+
Billboard._computeActualPosition = function(position, frameState, morphTime, modelMatrix) {
|
|
555
|
+
var mode = frameState.mode;
|
|
556
|
+
|
|
557
|
+
if (mode === SceneMode.SCENE3D) {
|
|
558
|
+
return position;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
modelMatrix.multiplyByPoint(position, tempCartesian4);
|
|
562
|
+
|
|
563
|
+
var projection = frameState.scene2D.projection;
|
|
564
|
+
var cartographic = projection.getEllipsoid().cartesianToCartographic(tempCartesian4, tempCartographic);
|
|
565
|
+
if (typeof cartographic === 'undefined') {
|
|
566
|
+
return undefined;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
var projectedPosition = projection.project(cartographic);
|
|
570
|
+
if (mode === SceneMode.MORPHING) {
|
|
571
|
+
var x = CesiumMath.lerp(projectedPosition.z, tempCartesian4.x, morphTime);
|
|
572
|
+
var y = CesiumMath.lerp(projectedPosition.x, tempCartesian4.y, morphTime);
|
|
573
|
+
var z = CesiumMath.lerp(projectedPosition.y, tempCartesian4.z, morphTime);
|
|
574
|
+
return new Cartesian3(x, y, z);
|
|
575
|
+
}
|
|
576
|
+
if (mode === SceneMode.SCENE2D) {
|
|
577
|
+
return new Cartesian3(0.0, projectedPosition.x, projectedPosition.y);
|
|
578
|
+
}
|
|
579
|
+
if (mode === SceneMode.COLUMBUS_VIEW) {
|
|
580
|
+
return new Cartesian3(projectedPosition.z, projectedPosition.x, projectedPosition.y);
|
|
581
|
+
}
|
|
582
|
+
return undefined;
|
|
583
|
+
};
|
|
584
|
+
|
|
585
|
+
Billboard._computeScreenSpacePosition = function(modelMatrix, position, eyeOffset, pixelOffset, clampToPixel, uniformState) {
|
|
586
|
+
// This function is basically a stripped-down JavaScript version of BillboardCollectionVS.glsl
|
|
587
|
+
|
|
588
|
+
// Model to eye coordinates
|
|
589
|
+
var mv = uniformState.getView().multiply(modelMatrix);
|
|
590
|
+
var positionEC = mv.multiplyByPoint(position);
|
|
591
|
+
|
|
592
|
+
// Apply eye offset, e.g., czm_eyeOffset
|
|
593
|
+
var zEyeOffset = eyeOffset.multiplyComponents(positionEC.normalize());
|
|
594
|
+
positionEC.x += eyeOffset.x + zEyeOffset.x;
|
|
595
|
+
positionEC.y += eyeOffset.y + zEyeOffset.y;
|
|
596
|
+
positionEC.z += zEyeOffset.z;
|
|
597
|
+
|
|
598
|
+
// Eye to window coordinates, e.g., czm_eyeToWindowCoordinates
|
|
599
|
+
var q = uniformState.getProjection().multiplyByVector(positionEC); // clip coordinates
|
|
600
|
+
q.x /= q.w; // normalized device coordinates
|
|
601
|
+
q.y /= q.w;
|
|
602
|
+
q.z /= q.w;
|
|
603
|
+
var positionWC = uniformState.getViewportTransformation().multiplyByPoint(q); // window coordinates
|
|
604
|
+
|
|
605
|
+
// Apply pixel offset
|
|
606
|
+
var po = pixelOffset.multiplyByScalar(uniformState.getHighResolutionSnapScale());
|
|
607
|
+
positionWC.x += po.x;
|
|
608
|
+
positionWC.y += po.y;
|
|
609
|
+
|
|
610
|
+
if (clampToPixel) {
|
|
611
|
+
return new Cartesian2(Math.floor(positionWC.x), Math.floor(positionWC.y));
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
return new Cartesian2(positionWC.x, positionWC.y);
|
|
615
|
+
};
|
|
616
|
+
|
|
617
|
+
/**
|
|
618
|
+
* Computes the screen-space position of the billboard's origin, taking into account eye and pixel offsets.
|
|
619
|
+
* The screen space origin is the bottom, left corner of the canvas; <code>x</code> increases from
|
|
620
|
+
* left to right, and <code>y</code> increases from bottom to top.
|
|
621
|
+
*
|
|
622
|
+
* @memberof Billboard
|
|
623
|
+
*
|
|
624
|
+
* @param {UniformState} uniformState The same state object passed to {@link BillboardCollection#update}.
|
|
625
|
+
*
|
|
626
|
+
* @return {Cartesian2} The screen-space position of the billboard.
|
|
627
|
+
*
|
|
628
|
+
* @exception {DeveloperError} Billboard must be in a collection.
|
|
629
|
+
* @exception {DeveloperError} uniformState is required.
|
|
630
|
+
*
|
|
631
|
+
* @see Billboard#setEyeOffset
|
|
632
|
+
* @see Billboard#setPixelOffset
|
|
633
|
+
*
|
|
634
|
+
* @example
|
|
635
|
+
* console.log(b.computeScreenSpacePosition(scene.getUniformState()).toString());
|
|
636
|
+
*/
|
|
637
|
+
Billboard.prototype.computeScreenSpacePosition = function(uniformState) {
|
|
638
|
+
var billboardCollection = this._billboardCollection;
|
|
639
|
+
if (typeof billboardCollection === 'undefined') {
|
|
640
|
+
throw new DeveloperError('Billboard must be in a collection. Was it removed?');
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
if (!uniformState) {
|
|
644
|
+
throw new DeveloperError('uniformState is required.');
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
return Billboard._computeScreenSpacePosition(billboardCollection.modelMatrix, this._actualPosition, this._eyeOffset, this._pixelOffset, this.clampToPixel, uniformState);
|
|
648
|
+
};
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* Determines if this billboard equals another billboard. Billboards are equal if all their properties
|
|
652
|
+
* are equal. Billboards in different collections can be equal.
|
|
653
|
+
*
|
|
654
|
+
* @memberof Billboard
|
|
655
|
+
*
|
|
656
|
+
* @param {Billboard} other The billboard to compare for equality.
|
|
657
|
+
*
|
|
658
|
+
* @return {Boolean} <code>true</code> if the billboards are equal; otherwise, <code>false</code>.
|
|
659
|
+
*/
|
|
660
|
+
Billboard.prototype.equals = function(other) {
|
|
661
|
+
return this === other ||
|
|
662
|
+
typeof other !== 'undefined' &&
|
|
663
|
+
this._show === other._show &&
|
|
664
|
+
this._imageIndex === other._imageIndex &&
|
|
665
|
+
this._scale === other._scale &&
|
|
666
|
+
this._verticalOrigin === other._verticalOrigin &&
|
|
667
|
+
this._horizontalOrigin === other._horizontalOrigin &&
|
|
668
|
+
Cartesian3.equals(this._position, other._position) &&
|
|
669
|
+
Color.equals(this._color, other._color) &&
|
|
670
|
+
Cartesian2.equals(this._pixelOffset, other._pixelOffset) &&
|
|
671
|
+
Cartesian3.equals(this._eyeOffset, other._eyeOffset);
|
|
672
|
+
};
|
|
673
|
+
|
|
674
|
+
Billboard.prototype._destroy = function() {
|
|
675
|
+
this._pickId = this._pickId && this._pickId.destroy();
|
|
676
|
+
this._billboardCollection = undefined;
|
|
677
|
+
};
|
|
678
|
+
|
|
679
|
+
return Billboard;
|
|
680
|
+
});
|