cesium 0.15.0 → 0.16.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/app/assets/javascripts/Cesium.js +7 -7
- data/app/assets/javascripts/Core/BoundingRectangle.js +1 -1
- data/app/assets/javascripts/Core/BoundingSphere.js +12 -5
- data/app/assets/javascripts/Core/BoxTessellator.js +11 -8
- data/app/assets/javascripts/Core/CatmullRomSpline.js +23 -21
- data/app/assets/javascripts/Core/Clock.js +1 -1
- data/app/assets/javascripts/Core/Color.js +51 -0
- data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +3 -1
- data/app/assets/javascripts/Core/EarthOrientationParameters.js +1 -1
- data/app/assets/javascripts/Core/EllipsoidalOccluder.js +15 -12
- data/app/assets/javascripts/Core/Extent.js +37 -0
- data/app/assets/javascripts/Core/ExtentTessellator.js +33 -25
- data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +18 -19
- data/app/assets/javascripts/Core/HermiteSpline.js +49 -49
- data/app/assets/javascripts/Core/Iau2006XysData.js +4 -5
- data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +10 -20
- data/app/assets/javascripts/Core/LinearApproximation.js +19 -23
- data/app/assets/javascripts/Core/Math.js +15 -3
- data/app/assets/javascripts/Core/Matrix4.js +186 -2
- data/app/assets/javascripts/Core/MeshFilters.js +13 -13
- data/app/assets/javascripts/Core/OrientationInterpolator.js +19 -19
- data/app/assets/javascripts/Core/PlaneTessellator.js +8 -6
- data/app/assets/javascripts/Core/PolygonPipeline.js +21 -21
- data/app/assets/javascripts/Core/PolylinePipeline.js +17 -25
- data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +187 -185
- data/app/assets/javascripts/Core/Shapes.js +8 -4
- data/app/assets/javascripts/Core/Simon1994PlanetaryPositions.js +521 -0
- data/app/assets/javascripts/Core/Spherical.js +36 -9
- data/app/assets/javascripts/Core/TaskProcessor.js +42 -5
- data/app/assets/javascripts/Core/TimeIntervalCollection.js +5 -5
- data/app/assets/javascripts/Core/Tipsify.js +21 -16
- data/app/assets/javascripts/Core/Transforms.js +11 -11
- data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +4 -4
- data/app/assets/javascripts/Core/clone.js +25 -8
- data/app/assets/javascripts/Core/defaultValue.js +10 -1
- data/app/assets/javascripts/Core/isCrossOriginUrl.js +32 -0
- data/app/assets/javascripts/Core/jsonp.js +2 -2
- data/app/assets/javascripts/Core/loadImage.js +13 -6
- data/app/assets/javascripts/Core/loadJson.js +4 -1
- data/app/assets/javascripts/Core/pointInsideTriangle2D.js +1 -1
- data/app/assets/javascripts/Core/writeTextToCanvas.js +1 -3
- data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +7 -4
- data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +1 -1
- data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +1 -1
- data/app/assets/javascripts/DynamicScene/CzmlColor.js +1 -1
- data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +6 -5
- data/app/assets/javascripts/DynamicScene/CzmlImage.js +8 -3
- data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +6 -5
- data/app/assets/javascripts/DynamicScene/CzmlNumber.js +6 -4
- data/app/assets/javascripts/DynamicScene/CzmlPosition.js +166 -0
- data/app/assets/javascripts/DynamicScene/CzmlString.js +6 -4
- data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +1 -1
- data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +1 -1
- data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +1 -1
- data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +6 -5
- data/app/assets/javascripts/DynamicScene/DynamicGridMaterial.js +202 -0
- data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +5 -3
- data/app/assets/javascripts/DynamicScene/DynamicObject.js +1 -2
- data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +19 -15
- data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +12 -10
- data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +17 -10
- data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +39 -90
- data/app/assets/javascripts/DynamicScene/DynamicProperty.js +19 -6
- data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +6 -4
- data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +10 -11
- data/app/assets/javascripts/Renderer/ClearCommand.js +60 -9
- data/app/assets/javascripts/Renderer/Context.js +234 -575
- data/app/assets/javascripts/Renderer/DrawCommand.js +15 -3
- data/app/assets/javascripts/Renderer/PassState.js +55 -0
- data/app/assets/javascripts/Renderer/PickFramebuffer.js +47 -77
- data/app/assets/javascripts/Renderer/RenderState.js +541 -0
- data/app/assets/javascripts/Renderer/ShaderCache.js +34 -1
- data/app/assets/javascripts/Renderer/ShaderProgram.js +112 -6
- data/app/assets/javascripts/Renderer/TextureAtlas.js +63 -67
- data/app/assets/javascripts/Renderer/UniformState.js +59 -30
- data/app/assets/javascripts/Renderer/VertexArray.js +9 -7
- data/app/assets/javascripts/Renderer/VertexArrayFacade.js +28 -27
- data/app/assets/javascripts/Renderer/createPickFragmentShaderSource.js +53 -0
- data/app/assets/javascripts/Renderer/loadCubeMap.js +10 -11
- data/app/assets/javascripts/Scene/AnimationCollection.js +48 -44
- data/app/assets/javascripts/Scene/Billboard.js +8 -2
- data/app/assets/javascripts/Scene/BillboardCollection.js +66 -62
- data/app/assets/javascripts/Scene/Camera.js +3 -0
- data/app/assets/javascripts/Scene/CameraController.js +3 -3
- data/app/assets/javascripts/Scene/CameraFlightPath.js +9 -6
- data/app/assets/javascripts/Scene/CentralBody.js +47 -65
- data/app/assets/javascripts/Scene/CentralBodySurface.js +9 -6
- data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +5 -9
- data/app/assets/javascripts/Scene/CompositePrimitive.js +8 -8
- data/app/assets/javascripts/Scene/CustomSensorVolume.js +66 -55
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +26 -27
- data/app/assets/javascripts/Scene/FrameState.js +15 -4
- data/app/assets/javascripts/Scene/GridImageryProvider.js +266 -0
- data/app/assets/javascripts/Scene/ImageryLayer.js +44 -19
- data/app/assets/javascripts/Scene/ImageryLayerCollection.js +3 -0
- data/app/assets/javascripts/Scene/ImageryProvider.js +3 -0
- data/app/assets/javascripts/Scene/Label.js +4 -4
- data/app/assets/javascripts/Scene/LabelCollection.js +2 -9
- data/app/assets/javascripts/Scene/Material.js +97 -8
- data/app/assets/javascripts/Scene/OrthographicFrustum.js +2 -2
- data/app/assets/javascripts/Scene/PerformanceDisplay.js +17 -10
- data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +2 -2
- data/app/assets/javascripts/Scene/Polygon.js +30 -56
- data/app/assets/javascripts/Scene/Polyline.js +93 -227
- data/app/assets/javascripts/Scene/PolylineCollection.js +685 -757
- data/app/assets/javascripts/Scene/Projections.js +2 -2
- data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +21 -16
- data/app/assets/javascripts/Scene/Scene.js +40 -32
- data/app/assets/javascripts/Scene/SceneTransitioner.js +8 -56
- data/app/assets/javascripts/Scene/SensorVolumeCollection.js +6 -20
- data/app/assets/javascripts/Scene/SkyAtmosphere.js +0 -11
- data/app/assets/javascripts/Scene/SkyBox.js +0 -11
- data/app/assets/javascripts/Scene/VRTheWorldTerrainProvider.js +3 -2
- data/app/assets/javascripts/Scene/ViewportQuad.js +8 -8
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +0 -2
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +0 -2
- data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +517 -3
- data/app/assets/javascripts/Shaders/BuiltinFunctions.js +535 -4
- data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +11 -24
- data/app/assets/javascripts/Shaders/CentralBodyFS.js +11 -24
- data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +1 -3
- data/app/assets/javascripts/Shaders/CentralBodyVS.js +1 -3
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +14 -33
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +14 -33
- data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +0 -1
- data/app/assets/javascripts/Shaders/EllipsoidFS.js +0 -1
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +1 -11
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +1 -11
- data/app/assets/javascripts/Shaders/Materials/FadeMaterial.glsl +36 -0
- data/app/assets/javascripts/Shaders/Materials/FadeMaterial.js +42 -0
- data/app/assets/javascripts/Shaders/Materials/GridMaterial.glsl +9 -1
- data/app/assets/javascripts/Shaders/Materials/GridMaterial.js +9 -1
- data/app/assets/javascripts/Shaders/Materials/PolylineArrowMaterial.glsl +60 -0
- data/app/assets/javascripts/Shaders/Materials/PolylineArrowMaterial.js +66 -0
- data/app/assets/javascripts/Shaders/Materials/PolylineGlowMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/PolylineGlowMaterial.js +23 -0
- data/app/assets/javascripts/Shaders/Materials/PolylineOutlineMaterial.glsl +28 -0
- data/app/assets/javascripts/Shaders/Materials/PolylineOutlineMaterial.js +34 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +4 -10
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +4 -10
- data/app/assets/javascripts/Shaders/PolygonFS.glsl +0 -3
- data/app/assets/javascripts/Shaders/PolygonFS.js +1 -4
- data/app/assets/javascripts/Shaders/PolygonVS.glsl +3 -4
- data/app/assets/javascripts/Shaders/PolygonVS.js +3 -4
- data/app/assets/javascripts/Shaders/PolylineFS.glsl +9 -2
- data/app/assets/javascripts/Shaders/PolylineFS.js +9 -2
- data/app/assets/javascripts/Shaders/PolylineVS.glsl +131 -14
- data/app/assets/javascripts/Shaders/PolylineVS.js +131 -14
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +1 -19
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +1 -19
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +9 -1
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +9 -1
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +1 -3
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +1 -3
- data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +1 -2
- data/app/assets/javascripts/Shaders/SkyBoxFS.js +1 -2
- data/app/assets/javascripts/Widgets/Animation/Animation.js +8 -5
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +19 -1
- data/app/assets/javascripts/Widgets/Timeline/Timeline.js +19 -2
- data/lib/cesium/version.rb +1 -1
- data/test/dummy/app/assets/javascripts/application.js.coffee +10 -10
- data/test/dummy/log/development.log +28285 -0
- data/test/dummy/tmp/cache/assets/BAF/370/sprockets%2F799a74598087f7719313562f44828061 +0 -0
- data/test/dummy/tmp/cache/assets/BF8/BC0/sprockets%2F1982805b53487d15554f20955019b8c4 +0 -0
- data/test/dummy/tmp/cache/assets/C12/030/sprockets%2Fbd84b00d783150a219825433401a7946 +0 -0
- data/test/dummy/tmp/cache/assets/C1F/BE0/sprockets%2F9ff195723d3a539023420682a372f561 +0 -0
- data/test/dummy/tmp/cache/assets/C23/060/sprockets%2F0844038b70e644bef4539389305680a3 +0 -0
- data/test/dummy/tmp/cache/assets/C27/DA0/sprockets%2Fe49200d07769d24f54f721d890142818 +0 -0
- data/test/dummy/tmp/cache/assets/C37/EB0/sprockets%2F410166e528f769c35999d061f6552d57 +0 -0
- data/test/dummy/tmp/cache/assets/C38/870/sprockets%2F3c244a5393086f3b95954f4675f29458 +0 -0
- data/test/dummy/tmp/cache/assets/C44/870/sprockets%2Fc7607e52811e723312c83d096c611c32 +0 -0
- data/test/dummy/tmp/cache/assets/C46/770/sprockets%2F9b6c82d0454ab5ba8727173860060324 +0 -0
- data/test/dummy/tmp/cache/assets/C46/E60/sprockets%2F151028e967f13248ca6121c9407242cf +0 -0
- data/test/dummy/tmp/cache/assets/C48/360/sprockets%2Fc966013651008025255f5b53b1d63f9e +0 -0
- data/test/dummy/tmp/cache/assets/C49/6B0/sprockets%2Ff15d3a84028c48073d820c51575157a4 +0 -0
- data/test/dummy/tmp/cache/assets/C4A/020/sprockets%2F162d504e77459f0304b964139300cfe3 +0 -0
- data/test/dummy/tmp/cache/assets/C4A/2B0/sprockets%2F821c1d08482a9b936b661a56444551b3 +0 -0
- data/test/dummy/tmp/cache/assets/C4F/630/sprockets%2F8935f51ad832c341c838751031a827f2 +0 -0
- data/test/dummy/tmp/cache/assets/C51/170/sprockets%2F7121148c53e447e867b886592e11ad00 +0 -0
- data/test/dummy/tmp/cache/assets/C53/040/sprockets%2F52411d26c4863636c7ae5b5090690f94 +0 -0
- data/test/dummy/tmp/cache/assets/C57/D10/sprockets%2F784e21cb5b634a598629115ef4685213 +0 -0
- data/test/dummy/tmp/cache/assets/C59/810/sprockets%2Fc37183f61d9511d324983656cd9375a1 +0 -0
- data/test/dummy/tmp/cache/assets/C61/2F0/sprockets%2Fe7f511982b4799474ab391f714d39630 +0 -0
- data/test/dummy/tmp/cache/assets/C64/730/sprockets%2F78fd706ba991f21a399070866616c297 +0 -0
- data/test/dummy/tmp/cache/assets/C65/0E0/sprockets%2F8303e4555c14f5f62cd2979665f50578 +0 -0
- data/test/dummy/tmp/cache/assets/C6C/C90/sprockets%2Fad7947b2492467a62388859219a92de9 +0 -0
- data/test/dummy/tmp/cache/assets/C70/900/sprockets%2F8dc34820f1167ed79c121111a0696c03 +0 -0
- data/test/dummy/tmp/cache/assets/C72/450/sprockets%2F12725ceae78656537003a1240f640ed4 +0 -0
- data/test/dummy/tmp/cache/assets/C73/0F0/sprockets%2F8a6a50d9b866140c720b6a48307c4116 +0 -0
- data/test/dummy/tmp/cache/assets/C75/F50/sprockets%2F52991c5c131fb0049279124ef17047ba +0 -0
- data/test/dummy/tmp/cache/assets/C76/F10/sprockets%2F536e031c5d9a257b602d38f8711480a2 +0 -0
- data/test/dummy/tmp/cache/assets/C7E/EA0/sprockets%2F2504a119ab66f79d8d296032e957a023 +0 -0
- data/test/dummy/tmp/cache/assets/C7F/860/sprockets%2F7646acf5464f211440d12d09847e7c43 +0 -0
- data/test/dummy/tmp/cache/assets/C80/150/sprockets%2F0d3881005b0646df783d5c24683d34f5 +0 -0
- data/test/dummy/tmp/cache/assets/C80/780/sprockets%2F49930c35001a30c38745b89a6a86cf74 +0 -0
- data/test/dummy/tmp/cache/assets/C82/060/sprockets%2Fb043f48276a50489714f9ec04525e26a +0 -0
- data/test/dummy/tmp/cache/assets/C82/580/sprockets%2F8118f4526088ba8fd441f20317475d6b +0 -0
- data/test/dummy/tmp/cache/assets/C82/AA0/sprockets%2Fd83006c52345d7fe51216f1e577a8185 +0 -0
- data/test/dummy/tmp/cache/assets/C83/A50/sprockets%2F26b151f7490286ff7059ff9a411e1027 +0 -0
- data/test/dummy/tmp/cache/assets/C84/E00/sprockets%2F49d13d786c17ba7650b374646455a6b3 +0 -0
- data/test/dummy/tmp/cache/assets/C85/310/sprockets%2Fc638d86c720815e5b635e0a3646e2186 +0 -0
- data/test/dummy/tmp/cache/assets/C87/1B0/sprockets%2F58524f16545fa54ea39c3c1270d06799 +0 -0
- data/test/dummy/tmp/cache/assets/C88/960/sprockets%2F50655bc2c86c7c3007756af818375e64 +0 -0
- data/test/dummy/tmp/cache/assets/C89/9E0/sprockets%2Fbc5d891273e7d61e56762000337868bf +0 -0
- data/test/dummy/tmp/cache/assets/C8A/680/sprockets%2F401d94c3b6643cb7764590d5765197ea +0 -0
- data/test/dummy/tmp/cache/assets/C8B/0F0/sprockets%2F3317c35ce7597681091ac91985d08bb5 +0 -0
- data/test/dummy/tmp/cache/assets/C8B/A30/sprockets%2Fe20153c26552232703d0f4a5a60b10ed +0 -0
- data/test/dummy/tmp/cache/assets/C8D/FC0/sprockets%2Fab1b1b654d968822069892e844f5244f +0 -0
- data/test/dummy/tmp/cache/assets/C8E/1A0/sprockets%2F7937090f77385164f68c0ee252b26be5 +0 -0
- data/test/dummy/tmp/cache/assets/C8E/1B0/sprockets%2F3309cd849788a2b736f12369ad4e4851 +0 -0
- data/test/dummy/tmp/cache/assets/C8E/D50/sprockets%2F687d2438d13763a733287fc4a2e5f746 +0 -0
- data/test/dummy/tmp/cache/assets/C8E/E40/sprockets%2F96aaf9af5e7906347880902610773bc5 +0 -0
- data/test/dummy/tmp/cache/assets/C8F/370/sprockets%2Ff794170ec844d49b57216a088c0297d7 +0 -0
- data/test/dummy/tmp/cache/assets/C91/F00/sprockets%2F0f611f4f95811990472ff1b6f95383d5 +0 -0
- data/test/dummy/tmp/cache/assets/C98/D30/sprockets%2F3f2411651caa9b4fd0833085b001f490 +0 -0
- data/test/dummy/tmp/cache/assets/CA9/5A0/sprockets%2F8282351dd11504a68cbc8500b7786cf2 +0 -0
- data/test/dummy/tmp/cache/assets/CA9/E20/sprockets%2F1ca84c82be52603a0c947256a38a0598 +0 -0
- data/test/dummy/tmp/cache/assets/CAA/3C0/sprockets%2F75ce813900f222ce7892711f61db04d3 +0 -0
- data/test/dummy/tmp/cache/assets/CAA/400/sprockets%2F5c330e413aa8e6769050215b5366c7ef +0 -0
- data/test/dummy/tmp/cache/assets/CAA/A60/sprockets%2F76b467bc7a2344e208653c4261f8ab15 +0 -0
- data/test/dummy/tmp/cache/assets/CAA/D90/sprockets%2Fd477a5c2046351a0c462bb945e3954e5 +0 -0
- data/test/dummy/tmp/cache/assets/CAB/670/sprockets%2F678e67cae28828b42b010381be1f1247 +0 -0
- data/test/dummy/tmp/cache/assets/CAC/000/sprockets%2F39720f0080e70a954d9956acd571d0b2 +0 -0
- data/test/dummy/tmp/cache/assets/CAC/220/sprockets%2Fe9d921c5251a11d0a6296974975dbb20 +0 -0
- data/test/dummy/tmp/cache/assets/CAD/B20/sprockets%2F4c087829240d4b69e0a47e39bb8124d0 +0 -0
- data/test/dummy/tmp/cache/assets/CAD/CF0/sprockets%2F25811882cd57a31606348eb7b16f4f0d +0 -0
- data/test/dummy/tmp/cache/assets/CAE/0D0/sprockets%2F02345f5b06f3a25b588ed66b8e167034 +0 -0
- data/test/dummy/tmp/cache/assets/CAF/AD0/sprockets%2Fec228a94364d0d686876d02550ed15c1 +0 -0
- data/test/dummy/tmp/cache/assets/CB4/D20/sprockets%2F94c251de5c21293f227709479c4f32be +0 -0
- data/test/dummy/tmp/cache/assets/CB5/4C0/sprockets%2F446522846ac4ed6619268b3e00fd497a +0 -0
- data/test/dummy/tmp/cache/assets/CB7/FA0/sprockets%2F62d364e38ba9b500f8b1633367f782b9 +0 -0
- data/test/dummy/tmp/cache/assets/CB8/180/sprockets%2Fe66eae8997e04c4bf70531e166511662 +0 -0
- data/test/dummy/tmp/cache/assets/CB8/E20/sprockets%2Fcb0a5df9573576546972b95a14d8f112 +0 -0
- data/test/dummy/tmp/cache/assets/CB8/EA0/sprockets%2F9e63d365e2159c725d111698cc04a7e7 +0 -0
- data/test/dummy/tmp/cache/assets/CB9/680/sprockets%2F9bad6dc04875e04891351521b9795f5a +0 -0
- data/test/dummy/tmp/cache/assets/CBA/250/sprockets%2F39bb3860405888c9f3b4b35c738b940c +0 -0
- data/test/dummy/tmp/cache/assets/CBB/E80/sprockets%2F43b17645e39f018bc195bc9828f4b357 +0 -0
- data/test/dummy/tmp/cache/assets/CBC/6C0/sprockets%2F6f494cff47ee245d30168217542c66d6 +0 -0
- data/test/dummy/tmp/cache/assets/CBE/6B0/sprockets%2F285b1ec717d1c4c725758951c8785b2f +0 -0
- data/test/dummy/tmp/cache/assets/CBE/F20/sprockets%2F7610efc00f29935606275944978fbabf +0 -0
- data/test/dummy/tmp/cache/assets/CBF/3A0/sprockets%2Fc7b6a2891626c77607ea2881dc84d475 +0 -0
- data/test/dummy/tmp/cache/assets/CBF/8B0/sprockets%2F5c98534d57c1e7f7d2926173d27e4d14 +0 -0
- data/test/dummy/tmp/cache/assets/CC0/E60/sprockets%2F9731b0739ec7356b2e484cb427d6955f +0 -0
- data/test/dummy/tmp/cache/assets/CC1/600/sprockets%2F322629f082c9e743f47a32edd58874b8 +0 -0
- data/test/dummy/tmp/cache/assets/CC4/950/sprockets%2F697670d712a9a24f564f9e62b5ed1389 +0 -0
- data/test/dummy/tmp/cache/assets/CC4/B10/sprockets%2F55b1a4137e59cad5520e1f012eb29021 +0 -0
- data/test/dummy/tmp/cache/assets/CC4/B80/sprockets%2F5b090557c9468f93cc1ab77898ba2629 +0 -0
- data/test/dummy/tmp/cache/assets/CC7/0B0/sprockets%2Fa26009e31f9e68672f4fc7f873909a64 +0 -0
- data/test/dummy/tmp/cache/assets/CC9/D20/sprockets%2F372172a3ef18b8cac40a5c410f748021 +0 -0
- data/test/dummy/tmp/cache/assets/CCD/9B0/sprockets%2F0b3845e705c1a2c20c80b56c9c8a2246 +0 -0
- data/test/dummy/tmp/cache/assets/CCF/7E0/sprockets%2F3d478e2550d0140a8da13a229735bcd7 +0 -0
- data/test/dummy/tmp/cache/assets/CD0/990/sprockets%2F3027964ce732931bb70c158aa61ab08d +0 -0
- data/test/dummy/tmp/cache/assets/CD1/590/sprockets%2F2f99067423113c4aebb30a4dd3643b85 +0 -0
- data/test/dummy/tmp/cache/assets/CD3/250/sprockets%2F9982c13eacaf46622739beab50120614 +0 -0
- data/test/dummy/tmp/cache/assets/CD3/DB0/sprockets%2F38ec8b4912b23f2b31322570d56c9c2b +0 -0
- data/test/dummy/tmp/cache/assets/CD8/5E0/sprockets%2Ffd127b418d9dc4cc3d196672811a6112 +0 -0
- data/test/dummy/tmp/cache/assets/CD8/D40/sprockets%2F73570572f17300ebf2dda1ef2635149e +0 -0
- data/test/dummy/tmp/cache/assets/CD9/B20/sprockets%2F65698070c3bce81f5ee4eb101722b741 +0 -0
- data/test/dummy/tmp/cache/assets/CD9/D90/sprockets%2F87979893cfde1b28afc60797a9948345 +0 -0
- data/test/dummy/tmp/cache/assets/CDA/DA0/sprockets%2F13e6789dd595b2b5033b335bbd1472f2 +0 -0
- data/test/dummy/tmp/cache/assets/CDB/4D0/sprockets%2Ffb9182b4d13b796b245db8153324f4d2 +0 -0
- data/test/dummy/tmp/cache/assets/CDB/630/sprockets%2Fc48aca3d09504ff1811d9234c8267f50 +0 -0
- data/test/dummy/tmp/cache/assets/CDC/B50/sprockets%2F0f1e213595a02089df9735ec41c3ee80 +0 -0
- data/test/dummy/tmp/cache/assets/CDF/380/sprockets%2F39695e0a1726566c80281aab8d9a51cc +0 -0
- data/test/dummy/tmp/cache/assets/CDF/710/sprockets%2F16d775d6707a066df80d10cd1528ff33 +0 -0
- data/test/dummy/tmp/cache/assets/CDF/CA0/sprockets%2F3d5b2c400b7877c15ec29575d95b613b +0 -0
- data/test/dummy/tmp/cache/assets/CE0/420/sprockets%2F5b3a1508216cb6b968313beae256f788 +0 -0
- data/test/dummy/tmp/cache/assets/CE1/A00/sprockets%2F168b4bf7364dfd883a5930302e0f554c +0 -0
- data/test/dummy/tmp/cache/assets/CE4/F60/sprockets%2Fbc3490162e3489bf88aab055d19397f0 +0 -0
- data/test/dummy/tmp/cache/assets/CE5/F10/sprockets%2Fe9cf045465025d8527c83c3b93625fca +0 -0
- data/test/dummy/tmp/cache/assets/CE5/F90/sprockets%2F31557450886bf9c124f2fdb42704ce8e +0 -0
- data/test/dummy/tmp/cache/assets/CE5/FE0/sprockets%2F627e4127557531a3f8471cfbc718ed2f +0 -0
- data/test/dummy/tmp/cache/assets/CE6/4A0/sprockets%2F9c04b8b8df7217a708732da4982a5f61 +0 -0
- data/test/dummy/tmp/cache/assets/CE7/650/sprockets%2F834b60044436456eefb9ce5cf7144d38 +0 -0
- data/test/dummy/tmp/cache/assets/CE7/A40/sprockets%2F2974c4aef7a04f06738c8f6a2066e292 +0 -0
- data/test/dummy/tmp/cache/assets/CE7/C70/sprockets%2F8627e999f207ce7214e0ab06afe86412 +0 -0
- data/test/dummy/tmp/cache/assets/CE8/AA0/sprockets%2Fd569f5f91016b77401782ef3b42de6a6 +0 -0
- data/test/dummy/tmp/cache/assets/CE8/DC0/sprockets%2F49324064376deb60c942b7d85a3e7d9b +0 -0
- data/test/dummy/tmp/cache/assets/CEA/6D0/sprockets%2F1da842257a051a9e871c739d29b7d77f +0 -0
- data/test/dummy/tmp/cache/assets/CEA/E10/sprockets%2F888c18a6b36ca5e51363b7b21c29f877 +0 -0
- data/test/dummy/tmp/cache/assets/CEB/520/sprockets%2Fe99130a4204fac5e0b886885339af7c8 +0 -0
- data/test/dummy/tmp/cache/assets/CEB/C10/sprockets%2F6cadb28080126992d76e5e35ba79088e +0 -0
- data/test/dummy/tmp/cache/assets/CEC/2B0/sprockets%2F917af8a56c884b3d5c6a03593d95a365 +0 -0
- data/test/dummy/tmp/cache/assets/CEC/7A0/sprockets%2F1ccee406d881875c559b82932a25e7d4 +0 -0
- data/test/dummy/tmp/cache/assets/CEE/920/sprockets%2F97c97b08d42738b583ed92b55c540a4f +0 -0
- data/test/dummy/tmp/cache/assets/CEF/F00/sprockets%2F8ac77338a1dc57bb32999653c561e74e +0 -0
- data/test/dummy/tmp/cache/assets/CF0/950/sprockets%2Fd08f99c34c161881adb05d342e8984f9 +0 -0
- data/test/dummy/tmp/cache/assets/CF1/000/sprockets%2Fa779ae7d9f80d3098529264b91dd405d +0 -0
- data/test/dummy/tmp/cache/assets/CF1/5B0/sprockets%2F46e4886602bb924fc5c638865b6bf4f2 +0 -0
- data/test/dummy/tmp/cache/assets/CF5/2E0/sprockets%2F14513ab2f3a0311abd083e70c99bd293 +0 -0
- data/test/dummy/tmp/cache/assets/CF5/5C0/sprockets%2F64a4190014fe00d17e708fc02dfc2a32 +0 -0
- data/test/dummy/tmp/cache/assets/CF6/4E0/sprockets%2Ff9c27df89c8173d41850b9c40e766a85 +0 -0
- data/test/dummy/tmp/cache/assets/CF6/710/sprockets%2Fe53fe9369ad5f26285ab27754a943c88 +0 -0
- data/test/dummy/tmp/cache/assets/CF9/B70/sprockets%2F8144ebf49f85b18c46d90b897239b56e +0 -0
- data/test/dummy/tmp/cache/assets/CFB/540/sprockets%2Fc40fe1438edc416788894df8b834f944 +0 -0
- data/test/dummy/tmp/cache/assets/CFC/7F0/sprockets%2F6158d3ff6993e4c114a894dd371999ec +0 -0
- data/test/dummy/tmp/cache/assets/CFD/EA0/sprockets%2Fe43051fb1f2752c010e292ccbc53399b +0 -0
- data/test/dummy/tmp/cache/assets/CFD/F60/sprockets%2Fb5776671dd7cf557332f7720f49c9c9f +0 -0
- data/test/dummy/tmp/cache/assets/CFD/F80/sprockets%2Fe2b02979764013ad04e2f2b23d28e2ca +0 -0
- data/test/dummy/tmp/cache/assets/D00/690/sprockets%2F488324fb426a1e3cb3ca16488caf4004 +0 -0
- data/test/dummy/tmp/cache/assets/D01/A00/sprockets%2F5704bfb588da51f6053f30abd310b458 +0 -0
- data/test/dummy/tmp/cache/assets/D02/4C0/sprockets%2F6386d72b2c51c911a7fd84ba612430cc +0 -0
- data/test/dummy/tmp/cache/assets/D02/6E0/sprockets%2F886e897f07ee48ec4e9f640643440dd9 +0 -0
- data/test/dummy/tmp/cache/assets/D03/EF0/sprockets%2F4799db40f9cc57f50689f6da487464f5 +0 -0
- data/test/dummy/tmp/cache/assets/D04/530/sprockets%2Fc14ce481964a025c2501a5c907c65fce +0 -0
- data/test/dummy/tmp/cache/assets/D06/590/sprockets%2F19c899c20cf5d9b8629878e3add89708 +0 -0
- data/test/dummy/tmp/cache/assets/D06/A70/sprockets%2Ff5da4e04222a35db9d267255424bf5c6 +0 -0
- data/test/dummy/tmp/cache/assets/D07/330/sprockets%2F3b24c0c589b1004b399d108ae5d6ef81 +0 -0
- data/test/dummy/tmp/cache/assets/D07/7F0/sprockets%2F3fb0ed6b32aa83a6878d12a209c38824 +0 -0
- data/test/dummy/tmp/cache/assets/D08/530/sprockets%2F311d9ba15b34718d1e60ddc95a84194d +0 -0
- data/test/dummy/tmp/cache/assets/D08/D80/sprockets%2F388df4f82d11657bb0b4024448b6af2b +0 -0
- data/test/dummy/tmp/cache/assets/D09/7F0/sprockets%2Fa2d67c31222348f16a9812df26da3e8d +0 -0
- data/test/dummy/tmp/cache/assets/D09/E40/sprockets%2Fc2693927bc52084b4d2b89373aaa0ac9 +0 -0
- data/test/dummy/tmp/cache/assets/D0A/830/sprockets%2F3155dcf93a62cf601a0d48b2806b599b +0 -0
- data/test/dummy/tmp/cache/assets/D0A/830/sprockets%2F830cdfb33202453675d55d8de703fa2f +0 -0
- data/test/dummy/tmp/cache/assets/D0B/3E0/sprockets%2F66c11f02337c8851bfab67bbb3b94916 +0 -0
- data/test/dummy/tmp/cache/assets/D0C/2E0/sprockets%2Fecb35ec370e250a63784c2f508b76a38 +0 -0
- data/test/dummy/tmp/cache/assets/D0E/010/sprockets%2F797b9e08c55a2106f8e2dace455710d0 +0 -0
- data/test/dummy/tmp/cache/assets/D0E/180/sprockets%2F045e183281dfc37485db513d585c5bdb +0 -0
- data/test/dummy/tmp/cache/assets/D0E/EA0/sprockets%2F1d36a1420cf4558fb3c793316ae89ca7 +0 -0
- data/test/dummy/tmp/cache/assets/D0F/7E0/sprockets%2F45f0d1bae6783a949cd01767d4c7e212 +0 -0
- data/test/dummy/tmp/cache/assets/D0F/9E0/sprockets%2F1536c04e487ca1a768d90a68513c3cff +0 -0
- data/test/dummy/tmp/cache/assets/D10/750/sprockets%2F4c4a696e3e0b905d75ed60f9042cd227 +0 -0
- data/test/dummy/tmp/cache/assets/D11/FC0/sprockets%2F9bd6c83d367423fe05ef6c3338143aa6 +0 -0
- data/test/dummy/tmp/cache/assets/D11/FD0/sprockets%2Fa7872e06fd015c19f48f4c350d63cc19 +0 -0
- data/test/dummy/tmp/cache/assets/D12/1C0/sprockets%2F5901cb9faf1725dd2e472ca2965b4287 +0 -0
- data/test/dummy/tmp/cache/assets/D12/BE0/sprockets%2Ff01aaa83ff0f19584cb671837a7d7444 +0 -0
- data/test/dummy/tmp/cache/assets/D13/6B0/sprockets%2F0975ed2a9d299bf1c719b3b1137e581b +0 -0
- data/test/dummy/tmp/cache/assets/D14/340/sprockets%2F4d057c80e80694c2c4d637ecd538bc08 +0 -0
- data/test/dummy/tmp/cache/assets/D14/BD0/sprockets%2Ffc2255112852fb55d96d41a92f8fb6b6 +0 -0
- data/test/dummy/tmp/cache/assets/D14/DA0/sprockets%2F54a7d7c2a544df07d57173cda79e9700 +0 -0
- data/test/dummy/tmp/cache/assets/D15/A20/sprockets%2F46b5881e463b09c7f61736e5ec2aeb16 +0 -0
- data/test/dummy/tmp/cache/assets/D15/A20/sprockets%2F9e52b9b230f4aa1d0e1a74699d82e983 +0 -0
- data/test/dummy/tmp/cache/assets/D16/2A0/sprockets%2F3739709cf73c9a32b521b45677cd4bde +0 -0
- data/test/dummy/tmp/cache/assets/D17/6C0/sprockets%2F69144d8b21e495ac17e4994fdfa3a803 +0 -0
- data/test/dummy/tmp/cache/assets/D19/680/sprockets%2Fcd3a545b89d274cfd328f4d341f96272 +0 -0
- data/test/dummy/tmp/cache/assets/D19/E90/sprockets%2F16cd7e58935dd8d1d376f10be6b50368 +0 -0
- data/test/dummy/tmp/cache/assets/D1A/0C0/sprockets%2Fa606399c0ce2e298b58fec46777024ad +0 -0
- data/test/dummy/tmp/cache/assets/D1B/C80/sprockets%2F835147dfca8c918a99182e9e2e600f1c +0 -0
- data/test/dummy/tmp/cache/assets/D1C/070/sprockets%2F19aa6be16056890e435d65d4c84cf69e +0 -0
- data/test/dummy/tmp/cache/assets/D1D/700/sprockets%2F72d9824da671eff2338d52de93b83a56 +0 -0
- data/test/dummy/tmp/cache/assets/D1D/C60/sprockets%2F54364ea078190fbd4168336feef963fc +0 -0
- data/test/dummy/tmp/cache/assets/D1F/5F0/sprockets%2Ff8cb248d9fc90758124cd284e17e3b66 +0 -0
- data/test/dummy/tmp/cache/assets/D21/EF0/sprockets%2F935d9ee3ec37515493a293c3785dadc8 +0 -0
- data/test/dummy/tmp/cache/assets/D22/0B0/sprockets%2F9dfda36b032e59892637b875d7af392b +0 -0
- data/test/dummy/tmp/cache/assets/D22/2C0/sprockets%2Fe42d5d90d467a803999bdec116955f8b +0 -0
- data/test/dummy/tmp/cache/assets/D23/610/sprockets%2F0e51cca080cc65e62e080941b232a1ed +0 -0
- data/test/dummy/tmp/cache/assets/D23/EB0/sprockets%2Fe26ee953fe7e3172d737e6e67a96332a +0 -0
- data/test/dummy/tmp/cache/assets/D25/C00/sprockets%2Ff63d097054df34bc660bdf98f7661b99 +0 -0
- data/test/dummy/tmp/cache/assets/D26/470/sprockets%2F1e9b32c11057bc537b0021de4f1f1fc6 +0 -0
- data/test/dummy/tmp/cache/assets/D29/910/sprockets%2Fe51f36e9fde73e3928070a96fcf77571 +0 -0
- data/test/dummy/tmp/cache/assets/D2A/E10/sprockets%2F2d2a1cfcc28a38330d30434fd8c1077c +0 -0
- data/test/dummy/tmp/cache/assets/D2B/210/sprockets%2F67aaa6c903e6b15c74de39af0002a451 +0 -0
- data/test/dummy/tmp/cache/assets/D2B/CF0/sprockets%2F70b2adc5e73b271342371aaad257b76d +0 -0
- data/test/dummy/tmp/cache/assets/D2D/E40/sprockets%2Faf21fa3d26ad3f68a23532178e20fb15 +0 -0
- data/test/dummy/tmp/cache/assets/D2F/100/sprockets%2F8c0286ee70744ca12c7c12a563de4b2a +0 -0
- data/test/dummy/tmp/cache/assets/D32/3E0/sprockets%2Fc9f2c6b93b29fa3b0d5420b751903eb1 +0 -0
- data/test/dummy/tmp/cache/assets/D32/6E0/sprockets%2Fb4f78f31b9aab6dbd2911b07076d4601 +0 -0
- data/test/dummy/tmp/cache/assets/D32/A80/sprockets%2Fb12fb26042f73cf3b2796abc2836ee20 +0 -0
- data/test/dummy/tmp/cache/assets/D36/7F0/sprockets%2F78e0c63f0043ae6e6536ec504cc23a9b +0 -0
- data/test/dummy/tmp/cache/assets/D36/E70/sprockets%2F69b00a4118d012bf6d7cf293b5f316ff +0 -0
- data/test/dummy/tmp/cache/assets/D37/070/sprockets%2F59e3be9a13634f3b3d0cab4ad0889063 +0 -0
- data/test/dummy/tmp/cache/assets/D39/740/sprockets%2Fd4834d921f293e5dcc04bea2b3917d51 +0 -0
- data/test/dummy/tmp/cache/assets/D3A/520/sprockets%2F7193d867aa217d4a306848dbcc1d9c0b +0 -0
- data/test/dummy/tmp/cache/assets/D3A/670/sprockets%2F0db6624d07920a5f4decb479718da33c +0 -0
- data/test/dummy/tmp/cache/assets/D3A/690/sprockets%2Fb5058a82d02b84df6210af598cfa644c +0 -0
- data/test/dummy/tmp/cache/assets/D3A/A00/sprockets%2F1077cd94fef55fbb01ce529612180bd5 +0 -0
- data/test/dummy/tmp/cache/assets/D3A/ED0/sprockets%2F5ae1cf0266d63b8eb0647535ca93b63d +0 -0
- data/test/dummy/tmp/cache/assets/D3C/640/sprockets%2F42e7a70bb8be9398385afb3c4742aa04 +0 -0
- data/test/dummy/tmp/cache/assets/D3C/E40/sprockets%2Fba57600a2dd2f6da96613de37f27930f +0 -0
- data/test/dummy/tmp/cache/assets/D3D/4E0/sprockets%2F7d37b8c27a3f3b1a02c4fe17643de865 +0 -0
- data/test/dummy/tmp/cache/assets/D3E/940/sprockets%2F5ed82a03c1de5c34135b67ff053787ec +0 -0
- data/test/dummy/tmp/cache/assets/D3E/F80/sprockets%2Fa146a4bfc3b8cb08334b9b14fe379756 +0 -0
- data/test/dummy/tmp/cache/assets/D3F/050/sprockets%2Fab4aa96dbce1e6b359f2658118291d90 +0 -0
- data/test/dummy/tmp/cache/assets/D3F/590/sprockets%2F13a259ba93c919fa5a47ba9cf10569f1 +0 -0
- data/test/dummy/tmp/cache/assets/D3F/E10/sprockets%2Ff8492202733ea4a4f67065c95eec1beb +0 -0
- data/test/dummy/tmp/cache/assets/D40/6C0/sprockets%2Fafe496eaca27b82020893b81383e8b6b +0 -0
- data/test/dummy/tmp/cache/assets/D40/D10/sprockets%2F7af151c9b6080d9285fe058ae6d40c4d +0 -0
- data/test/dummy/tmp/cache/assets/D40/E50/sprockets%2F278df3df34e9573cbd9a402e42d1193b +0 -0
- data/test/dummy/tmp/cache/assets/D41/220/sprockets%2Fafb511e47c76bf448b6f7072c8d3118c +0 -0
- data/test/dummy/tmp/cache/assets/D41/770/sprockets%2F271c5f12457864bbb0c6646c9ebf1f3f +0 -0
- data/test/dummy/tmp/cache/assets/D41/8A0/sprockets%2Fbc7ce77806517ea173350e6a4d8c55db +0 -0
- data/test/dummy/tmp/cache/assets/D41/D70/sprockets%2F48b33bbf96854b502b0eaf902e69d55c +0 -0
- data/test/dummy/tmp/cache/assets/D41/FE0/sprockets%2F2901ba969f333cc19393afd2f0fc7c64 +0 -0
- data/test/dummy/tmp/cache/assets/D42/970/sprockets%2Fe27c8084b9cf2eaa063f585e92064c5a +0 -0
- data/test/dummy/tmp/cache/assets/D43/F70/sprockets%2F2c844357dd8de7db147f80c3539b0ee0 +0 -0
- data/test/dummy/tmp/cache/assets/D44/6D0/sprockets%2F4d7032af47bfce2d4a8564830f8a6a96 +0 -0
- data/test/dummy/tmp/cache/assets/D45/1C0/sprockets%2F7e052d17bd4b749ba373bea97380c8f6 +0 -0
- data/test/dummy/tmp/cache/assets/D45/3B0/sprockets%2Fd26b5a0d570ef57d06df6f032e9b8980 +0 -0
- data/test/dummy/tmp/cache/assets/D46/770/sprockets%2F96355435f9ab8090c2d3e4f0ddd9b7c3 +0 -0
- data/test/dummy/tmp/cache/assets/D46/8E0/sprockets%2F1a4f07bd2741629bdd572848dccf773e +0 -0
- data/test/dummy/tmp/cache/assets/D47/2B0/sprockets%2Ff3d8c4ca1a44044d98395b36b770fcf9 +0 -0
- data/test/dummy/tmp/cache/assets/D47/8F0/sprockets%2F1cc6e49382be4f74cbb97821ae1928c4 +0 -0
- data/test/dummy/tmp/cache/assets/D47/AC0/sprockets%2Fcb9189183de4d74faa04d6ad1347964f +0 -0
- data/test/dummy/tmp/cache/assets/D48/1D0/sprockets%2Fbff4201c0944eaf31a2f6a0110cbd224 +0 -0
- data/test/dummy/tmp/cache/assets/D48/2F0/sprockets%2F6b79e4839df89b4abb51c2c6105d15e8 +0 -0
- data/test/dummy/tmp/cache/assets/D48/960/sprockets%2F90e2c11ff8fd31e591b9fd39932631bf +0 -0
- data/test/dummy/tmp/cache/assets/D4A/C80/sprockets%2F0289519826ada458af4b9a728fdfcf31 +0 -0
- data/test/dummy/tmp/cache/assets/D4B/C20/sprockets%2Fc28f3c4d6cd98dbb784830d7c6214d65 +0 -0
- data/test/dummy/tmp/cache/assets/D4B/E90/sprockets%2F51d49f9bc2549684e6da91a4e0bc379b +0 -0
- data/test/dummy/tmp/cache/assets/D4C/490/sprockets%2F7e207e1654e5343a964fd6cf3fefb447 +0 -0
- data/test/dummy/tmp/cache/assets/D4C/BD0/sprockets%2F4ac9d1aa903d4731edf18fe2b9589829 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/640/sprockets%2Fdaab3d2130266b5b7a2f1d04b8c4322e +0 -0
- data/test/dummy/tmp/cache/assets/D4E/6C0/sprockets%2Fedd9cf282af0f00637e5273c8c3888b9 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/D00/sprockets%2F1a6846f0a837ae2524e2f9ec89e6ef43 +0 -0
- data/test/dummy/tmp/cache/assets/D4F/410/sprockets%2F1377bb2e86073ae3a688e5a6c499a9df +0 -0
- data/test/dummy/tmp/cache/assets/D50/E10/sprockets%2F28698bc0c536fe5e97a2935e3bb929bb +0 -0
- data/test/dummy/tmp/cache/assets/D51/230/sprockets%2F742ba6ca9f84d98ffc38ca5687c05155 +0 -0
- data/test/dummy/tmp/cache/assets/D53/440/sprockets%2F2def445147b9f5d6363f6f6d497d2f0e +0 -0
- data/test/dummy/tmp/cache/assets/D53/DE0/sprockets%2F7736b51cb3bf8679b8bdc8ab9d184954 +0 -0
- data/test/dummy/tmp/cache/assets/D54/0D0/sprockets%2F448752db3a53dd453db1b01de121ebd2 +0 -0
- data/test/dummy/tmp/cache/assets/D56/1F0/sprockets%2F291fcb7a26ff3aac6bc1404e0a247242 +0 -0
- data/test/dummy/tmp/cache/assets/D57/DF0/sprockets%2F8d06b94587d49e037e77f8afcb6802cf +0 -0
- data/test/dummy/tmp/cache/assets/D59/070/sprockets%2F822cd47e69d40ba87f95181fdd698ed5 +0 -0
- data/test/dummy/tmp/cache/assets/D5A/070/sprockets%2Fe7159b621a21a7a0ebd81a32912e8faa +0 -0
- data/test/dummy/tmp/cache/assets/D5A/D80/sprockets%2F28dc9152e2ead49ae414a5b82d04a1a2 +0 -0
- data/test/dummy/tmp/cache/assets/D5C/660/sprockets%2F5baf6a64b3151ae6bf40155e90db6e03 +0 -0
- data/test/dummy/tmp/cache/assets/D5C/E00/sprockets%2F92930d4e993eb8bd3498b699dccf9a33 +0 -0
- data/test/dummy/tmp/cache/assets/D5E/3D0/sprockets%2F5f786d832b4e0ba05f6abc3ea314901a +0 -0
- data/test/dummy/tmp/cache/assets/D5F/7F0/sprockets%2Fabbcc55042a82b42c900c09d59de4c29 +0 -0
- data/test/dummy/tmp/cache/assets/D60/2A0/sprockets%2Fcd5c12269b6c414bf722c6c2dc0e18c4 +0 -0
- data/test/dummy/tmp/cache/assets/D62/140/sprockets%2F7e5a724c4c00951a0da7ec767ce19aa1 +0 -0
- data/test/dummy/tmp/cache/assets/D62/2E0/sprockets%2F51a06ddef9bd05b405fd605d37be3154 +0 -0
- data/test/dummy/tmp/cache/assets/D63/B00/sprockets%2F2672399dfcdd2b6b61536cab3d800bc1 +0 -0
- data/test/dummy/tmp/cache/assets/D63/D60/sprockets%2Ff791df22a3d7e2f4ef01ad0742f370c1 +0 -0
- data/test/dummy/tmp/cache/assets/D63/DC0/sprockets%2Fc298c2b66150c7f11d95cecf450bb14a +0 -0
- data/test/dummy/tmp/cache/assets/D63/DE0/sprockets%2F73c9e04acfc930681ab170b3e4bfc453 +0 -0
- data/test/dummy/tmp/cache/assets/D64/670/sprockets%2F7dc8c0ad36d436eb56a0824a46e0eb08 +0 -0
- data/test/dummy/tmp/cache/assets/D64/B50/sprockets%2F7ac06eacb363b85744337c0ea88e2b0c +0 -0
- data/test/dummy/tmp/cache/assets/D65/990/sprockets%2Fa2965ca374a00aaceb747e60b654e2f8 +0 -0
- data/test/dummy/tmp/cache/assets/D66/360/sprockets%2Fc94d86aa0bc1a44817a1fd3db0873a87 +0 -0
- data/test/dummy/tmp/cache/assets/D66/6C0/sprockets%2F1b63a7f0e3fb2a7f3124f198d0ff462b +0 -0
- data/test/dummy/tmp/cache/assets/D67/8E0/sprockets%2Ffd0eaaf36da9805e6c4ec303534162f5 +0 -0
- data/test/dummy/tmp/cache/assets/D67/C10/sprockets%2Ffb4b4451c110f07957c2ecacf854c5d4 +0 -0
- data/test/dummy/tmp/cache/assets/D68/000/sprockets%2F39c01fa5c01830f3558eb1c97c4dfb6b +0 -0
- data/test/dummy/tmp/cache/assets/D68/0C0/sprockets%2F6c628ddf1ba5c680e04ad54a476f163b +0 -0
- data/test/dummy/tmp/cache/assets/D68/210/sprockets%2Fdc284967860db06c2cb2e1da78bab156 +0 -0
- data/test/dummy/tmp/cache/assets/D6A/2E0/sprockets%2Fc3a3a8e66c9b58b52b1db3ad754c9423 +0 -0
- data/test/dummy/tmp/cache/assets/D6B/BA0/sprockets%2F8293eb343aead8dda54496532fb24fa1 +0 -0
- data/test/dummy/tmp/cache/assets/D6C/AD0/sprockets%2Fdabce05f6e4419832e20d6b7420fe9a7 +0 -0
- data/test/dummy/tmp/cache/assets/D6D/080/sprockets%2F3cc7b7355591babda1661e6c5e9f8c20 +0 -0
- data/test/dummy/tmp/cache/assets/D6D/690/sprockets%2Fd288d7215df092fdc70b3b8216dce2f3 +0 -0
- data/test/dummy/tmp/cache/assets/D6D/7A0/sprockets%2Fff4be901f55528b85b2b1fc73ebc4352 +0 -0
- data/test/dummy/tmp/cache/assets/D6D/E80/sprockets%2F9ef00ee94e3b0eed7c4e45b342085d51 +0 -0
- data/test/dummy/tmp/cache/assets/D6E/940/sprockets%2Fb19f43bd8383eeb5e26a4d2b79f1240e +0 -0
- data/test/dummy/tmp/cache/assets/D6E/9F0/sprockets%2F15f61ad82d9ca6cce6a0e42b7249662f +0 -0
- data/test/dummy/tmp/cache/assets/D6E/AD0/sprockets%2F4441be9946083b61e75f7bf1a1cca5cf +0 -0
- data/test/dummy/tmp/cache/assets/D73/3F0/sprockets%2F09b4a9c1131740eba5d85fcf9c86b97a +0 -0
- data/test/dummy/tmp/cache/assets/D76/030/sprockets%2F7e8689ec6a9f3754a4aa660e303cbf4a +0 -0
- data/test/dummy/tmp/cache/assets/D76/C80/sprockets%2F952307811ad5e9e8b540cf5e9cf08cea +0 -0
- data/test/dummy/tmp/cache/assets/D76/CA0/sprockets%2F797920cdabaf2f8431968a34c2cbae79 +0 -0
- data/test/dummy/tmp/cache/assets/D77/B70/sprockets%2Fa02f64f352cfa69d33983fd15e8ea3d7 +0 -0
- data/test/dummy/tmp/cache/assets/D77/FF0/sprockets%2F126c2e2ca6f5e8477c9525f46cdba7d5 +0 -0
- data/test/dummy/tmp/cache/assets/D79/2F0/sprockets%2F4b9fd617fe0d6c7e5eb934a139507e3d +0 -0
- data/test/dummy/tmp/cache/assets/D79/E80/sprockets%2F7d329345d1b9f914c87fc5e07ea9ab4b +0 -0
- data/test/dummy/tmp/cache/assets/D7A/5C0/sprockets%2F6e2b202ee971a68c1e78eddf5658e53a +0 -0
- data/test/dummy/tmp/cache/assets/D7A/8C0/sprockets%2Fc477a2d0aa5d658fd7294d6f6c5a484e +0 -0
- data/test/dummy/tmp/cache/assets/D7C/160/sprockets%2F6847e66cdafb094701f479a515ede5dd +0 -0
- data/test/dummy/tmp/cache/assets/D7C/750/sprockets%2F1f76d236fdf42a817bd84da719fde069 +0 -0
- data/test/dummy/tmp/cache/assets/D7C/B90/sprockets%2Fc89b5af12387ee80ca80e3f2ac776c79 +0 -0
- data/test/dummy/tmp/cache/assets/D7E/2A0/sprockets%2F1ce479f9423e748690a75abbabf8af84 +0 -0
- data/test/dummy/tmp/cache/assets/D7F/A60/sprockets%2F5c683951503f673cceffa6ba76f38b8d +0 -0
- data/test/dummy/tmp/cache/assets/D81/120/sprockets%2F75c7f18e61fa042b776ce2e5c3ff786f +0 -0
- data/test/dummy/tmp/cache/assets/D82/560/sprockets%2Fcb5875caef3f569f08878b13cdd991a2 +0 -0
- data/test/dummy/tmp/cache/assets/D84/0A0/sprockets%2F07fc0bfe2237a171b813aa147f3ced1a +0 -0
- data/test/dummy/tmp/cache/assets/D85/050/sprockets%2Fa9b35663e7dc78eacde8d84ae3599163 +0 -0
- data/test/dummy/tmp/cache/assets/D85/5A0/sprockets%2Fc2cbee1b5160e0e8b022933feb36ea30 +0 -0
- data/test/dummy/tmp/cache/assets/D87/6D0/sprockets%2F51df69aad9a6f892254deb9d4c1992f8 +0 -0
- data/test/dummy/tmp/cache/assets/D88/1B0/sprockets%2Fb5bb04fc812b607ce046a4b702be4c4f +0 -0
- data/test/dummy/tmp/cache/assets/D88/7E0/sprockets%2Fe9fedb2c5be893a15939dc65f684196b +0 -0
- data/test/dummy/tmp/cache/assets/D8A/2C0/sprockets%2F6ec8da0142f240ce8a7e0b46aea363c1 +0 -0
- data/test/dummy/tmp/cache/assets/D8A/370/sprockets%2Fb4600d72a29aba7a39c2ec58aa04f18b +0 -0
- data/test/dummy/tmp/cache/assets/D8A/B90/sprockets%2F7506f75d60f93f9e8405ffb9cf85ddb2 +0 -0
- data/test/dummy/tmp/cache/assets/D8A/BF0/sprockets%2F1967ce66d464496a6fab44ff8be55ef6 +0 -0
- data/test/dummy/tmp/cache/assets/D8C/9C0/sprockets%2F2e7c2cd86215800a37c4d4b1bf0bea5f +0 -0
- data/test/dummy/tmp/cache/assets/D8E/910/sprockets%2Fbbf8e4c05ca721c1cd18c17902256ade +0 -0
- data/test/dummy/tmp/cache/assets/D8F/C40/sprockets%2Fa76260381aff4aa0c8beea0404e95de2 +0 -0
- data/test/dummy/tmp/cache/assets/D93/3B0/sprockets%2Fd0fb3bdcf317425a433a125c986b3dff +0 -0
- data/test/dummy/tmp/cache/assets/D94/1A0/sprockets%2Fb4748c092e8a4c127bcfacb06cdc2735 +0 -0
- data/test/dummy/tmp/cache/assets/D94/AD0/sprockets%2Fa1ac4bf342006e1f98def10cf9d7d234 +0 -0
- data/test/dummy/tmp/cache/assets/D95/430/sprockets%2Fcf054ac65aa2c4b72d661fc32c898aa5 +0 -0
- data/test/dummy/tmp/cache/assets/D96/C10/sprockets%2F620f6865aeb0de3c5cf8b305b13c7cb7 +0 -0
- data/test/dummy/tmp/cache/assets/D97/2B0/sprockets%2F16a899a4b20af5f53cdd2870e1b0aed8 +0 -0
- data/test/dummy/tmp/cache/assets/D97/4C0/sprockets%2F4d4aea86610bc9652c70455a6beafc4d +0 -0
- data/test/dummy/tmp/cache/assets/D99/330/sprockets%2Ff01679ca9c88dd0a3eb6922b0b8f3bc0 +0 -0
- data/test/dummy/tmp/cache/assets/D99/B10/sprockets%2F4aa8fece5b18d820a44dc266a89d50e0 +0 -0
- data/test/dummy/tmp/cache/assets/D99/CD0/sprockets%2Ffe0c5f4b8b52baa0f91870da12599a6d +0 -0
- data/test/dummy/tmp/cache/assets/D9D/170/sprockets%2F37f702f1f3ad35b9022fc87fdce7de02 +0 -0
- data/test/dummy/tmp/cache/assets/D9E/C90/sprockets%2F9cd75b38f1c1f85bbdac2576ca9106b5 +0 -0
- data/test/dummy/tmp/cache/assets/D9F/6F0/sprockets%2Fff261c15e6b97bf57e372f0de1ad571a +0 -0
- data/test/dummy/tmp/cache/assets/D9F/800/sprockets%2F5c722d8150c68e6eacad70fb64e5e1f5 +0 -0
- data/test/dummy/tmp/cache/assets/DA0/1B0/sprockets%2F71e2cd8803aac9fb0bb4c47593cf17e8 +0 -0
- data/test/dummy/tmp/cache/assets/DA1/530/sprockets%2F88a8bb9debb752ba06f07909db83e02d +0 -0
- data/test/dummy/tmp/cache/assets/DA3/9F0/sprockets%2F5122955dfe6694bdc6b69cbea09d2cd1 +0 -0
- data/test/dummy/tmp/cache/assets/DA4/450/sprockets%2F6f2bd50f9f1551ed8e00fd8b84f37c2c +0 -0
- data/test/dummy/tmp/cache/assets/DA5/0E0/sprockets%2Fe61590dc98f1e532ea20e296c5fce7bd +0 -0
- data/test/dummy/tmp/cache/assets/DA6/FC0/sprockets%2F900ed66847c0ec1eff94ad75fc26f11e +0 -0
- data/test/dummy/tmp/cache/assets/DAB/B00/sprockets%2F5286678a74e7bcc66e0d3c7c7d2db5fb +0 -0
- data/test/dummy/tmp/cache/assets/DAD/810/sprockets%2Fcfb7db145b0d0a3010f5d0cd7a08fb15 +0 -0
- data/test/dummy/tmp/cache/assets/DAE/A40/sprockets%2F7fefa2cd6e72f17c926159c9b7c3a95a +0 -0
- data/test/dummy/tmp/cache/assets/DB0/BF0/sprockets%2F52e4cdf37aa489ff6c138dedf036588d +0 -0
- data/test/dummy/tmp/cache/assets/DB1/C80/sprockets%2Fa2d1a10a3cc780fd30127b2be96ddfa2 +0 -0
- data/test/dummy/tmp/cache/assets/DB2/850/sprockets%2F9d6e12a0e28cc9ded4e859613cf75f6e +0 -0
- data/test/dummy/tmp/cache/assets/DB6/710/sprockets%2Ff53e9d96ae4808ad0f9e09ab4ef78f80 +0 -0
- data/test/dummy/tmp/cache/assets/DBA/7F0/sprockets%2F4f7fd7b68b8bc29c67fa996e37eaf512 +0 -0
- data/test/dummy/tmp/cache/assets/DBD/080/sprockets%2F039ace5986a3cbf4cca0b0a753bc71a6 +0 -0
- data/test/dummy/tmp/cache/assets/DBE/210/sprockets%2Fa12ca5480c3e2b9cf44ab4ef32e813ec +0 -0
- data/test/dummy/tmp/cache/assets/DBE/DF0/sprockets%2F6d1f018e11ee2240a8dd1df920c6cddd +0 -0
- data/test/dummy/tmp/cache/assets/DC0/760/sprockets%2Fb7e4cf2efcf48d0dcc420131fd30d454 +0 -0
- data/test/dummy/tmp/cache/assets/DC1/C20/sprockets%2Fb60b7b3aeb56bd55b67183b6f151ecca +0 -0
- data/test/dummy/tmp/cache/assets/DC5/5F0/sprockets%2F9d4cc0ae7ac214bb22c7cf455d06b9c9 +0 -0
- data/test/dummy/tmp/cache/assets/DC5/660/sprockets%2F637431e1c8fffeaafc23f021bd49fa06 +0 -0
- data/test/dummy/tmp/cache/assets/DC6/7C0/sprockets%2Fb408df7a822c70a0924e0cdf6c8fe2ca +0 -0
- data/test/dummy/tmp/cache/assets/DC8/2F0/sprockets%2F15c5ad9491aa5ef9fe4aef6333fa12c0 +0 -0
- data/test/dummy/tmp/cache/assets/DC8/C70/sprockets%2Fbb5351434afe5616cbe7e4a6cea95a6b +0 -0
- data/test/dummy/tmp/cache/assets/DCC/F40/sprockets%2Fdc3342c548fc7d3c4f4e27732b5acfea +0 -0
- data/test/dummy/tmp/cache/assets/DCD/390/sprockets%2Fdcd461b67aec99b76eea270a9ad2c046 +0 -0
- data/test/dummy/tmp/cache/assets/DCD/730/sprockets%2Fe577d2f2df0ce1516b2bdfa9fe0909e0 +0 -0
- data/test/dummy/tmp/cache/assets/DCD/8D0/sprockets%2Fbf36f09be83b4d0986ad23ea4d1f32df +0 -0
- data/test/dummy/tmp/cache/assets/DCE/1C0/sprockets%2F58cc5eb1cb2a47c8067c940caecf449d +0 -0
- data/test/dummy/tmp/cache/assets/DCE/BA0/sprockets%2F57c5ecddc82aa706b1e64691a8a5bcc9 +0 -0
- data/test/dummy/tmp/cache/assets/DCF/4A0/sprockets%2F3efd01a56bae3ae99fd13085f75b9e0d +0 -0
- data/test/dummy/tmp/cache/assets/DD1/4A0/sprockets%2Fd1fd81d46b69d255ebc7ab7f3f96a03a +0 -0
- data/test/dummy/tmp/cache/assets/DD2/380/sprockets%2F7972dab64d4a2a8007c3ecfd887ace4e +0 -0
- data/test/dummy/tmp/cache/assets/DD2/D90/sprockets%2Facc08ab37871b8576bfcb992aedaf228 +0 -0
- data/test/dummy/tmp/cache/assets/DD3/FE0/sprockets%2Fd19b0f09a29f8558a8d1f5cfc02acec9 +0 -0
- data/test/dummy/tmp/cache/assets/DD8/5C0/sprockets%2F9dd7bcb46a4b58ee446353a9cdaf93f2 +0 -0
- data/test/dummy/tmp/cache/assets/DD9/AA0/sprockets%2Ff96cdb075b4fc5b6eabb92832f6ad758 +0 -0
- data/test/dummy/tmp/cache/assets/DD9/F90/sprockets%2Ff09bdb745c8fa4987aa1ffcd6370c94b +0 -0
- data/test/dummy/tmp/cache/assets/DDB/140/sprockets%2F7815fdf1a6a74db4fca71ff6537ced67 +0 -0
- data/test/dummy/tmp/cache/assets/DDD/E10/sprockets%2Fd7292f5eb3a7b1f583efbf05aef567d9 +0 -0
- data/test/dummy/tmp/cache/assets/DDE/C00/sprockets%2Ffb5947d8ea5a7d6c08c71b3c9d7a88cb +0 -0
- data/test/dummy/tmp/cache/assets/DE7/3B0/sprockets%2F55fc91edc7ee6e5f818993cbddb6b707 +0 -0
- data/test/dummy/tmp/cache/assets/DE7/550/sprockets%2Ffff04b0980f1fbe9ece54cd8ca779867 +0 -0
- data/test/dummy/tmp/cache/assets/DE8/980/sprockets%2Fea9daa72d1acd0886cc064d0ea6c4a30 +0 -0
- data/test/dummy/tmp/cache/assets/DEF/140/sprockets%2F0182a5cba9d2df2eabb3783cf53a1ea9 +0 -0
- data/test/dummy/tmp/cache/assets/DF5/0C0/sprockets%2Faf8105cfdb7ceae04b099c4a2f654ce1 +0 -0
- data/test/dummy/tmp/cache/assets/DF5/4D0/sprockets%2Fa1a06ee61db75c3c0bed4caad288789b +0 -0
- data/test/dummy/tmp/cache/assets/DF7/110/sprockets%2F0654cdd8dfa5adb61e2029fefe5f50c0 +0 -0
- data/test/dummy/tmp/cache/assets/DF7/D40/sprockets%2F38cdcfc274accc45023affa7be98350c +0 -0
- data/test/dummy/tmp/cache/assets/DF8/570/sprockets%2Fd956ef1a15caba08edb2fc63c569f20d +0 -0
- data/test/dummy/tmp/cache/assets/DFB/E90/sprockets%2Ff7bd5fbb19ef32fc5a396d8012fac3f0 +0 -0
- data/test/dummy/tmp/cache/assets/DFC/9D0/sprockets%2F38fd8e0a2fde3b853f2a24571cd2dfdd +0 -0
- data/test/dummy/tmp/cache/assets/DFE/3C0/sprockets%2Fe7c824dbbee345aa5a66a56ebe82a29e +0 -0
- data/test/dummy/tmp/cache/assets/DFF/560/sprockets%2F5c1cedb5538de9d0c4dc9fdb62554fa1 +0 -0
- data/test/dummy/tmp/cache/assets/E02/B00/sprockets%2F723ccdfbeacf6c4176de34f371c91af9 +0 -0
- data/test/dummy/tmp/cache/assets/E02/DA0/sprockets%2F9829dec75de6c2a52fdc20d428d2edae +0 -0
- data/test/dummy/tmp/cache/assets/E04/860/sprockets%2F972757dbdbdfabfeac8ecb8a15520793 +0 -0
- data/test/dummy/tmp/cache/assets/E05/A70/sprockets%2F7a4daf48a8b7fba4f7bd770048b37fbf +0 -0
- data/test/dummy/tmp/cache/assets/E07/5B0/sprockets%2F75fdbfc0584a9cb9dda6428a66dec4b5 +0 -0
- data/test/dummy/tmp/cache/assets/E0C/810/sprockets%2Fe74897a12cedd8efea5a559354bd5bfc +0 -0
- data/test/dummy/tmp/cache/assets/E0F/B40/sprockets%2Ff5dfabed7f563e53d4735ef9c4b7a0e9 +0 -0
- data/test/dummy/tmp/cache/assets/E11/400/sprockets%2Ff6a9c23ee9f2ed728efa077ea66dfb55 +0 -0
- data/test/dummy/tmp/cache/assets/E11/4E0/sprockets%2F86e145a39f85cceeaffdff91ebb61449 +0 -0
- data/test/dummy/tmp/cache/assets/E11/C70/sprockets%2Fe5ad970d57c66489f9eebacb8e3a5ae5 +0 -0
- data/test/dummy/tmp/cache/assets/E13/B10/sprockets%2Fafbb0a11dcbf1c86ee74a1f22f2c173a +0 -0
- data/test/dummy/tmp/cache/assets/E14/0B0/sprockets%2F8bffda6f68fc139ee329bc86f6b7d2f1 +0 -0
- data/test/dummy/tmp/cache/assets/E1E/DE0/sprockets%2F84b3baefc2c0a8c2c9c0a92eacc3557b +0 -0
- data/test/dummy/tmp/cache/assets/E1F/5E0/sprockets%2Fedacf71afed14b1da329d30fcaf84091 +0 -0
- data/test/dummy/tmp/cache/assets/E21/330/sprockets%2F816aead61cd3e240f2bbe1e78da1fdb7 +0 -0
- data/test/dummy/tmp/cache/assets/E27/540/sprockets%2F3507970b2c1ccbf7b6bc37d61efadfeb +0 -0
- data/test/dummy/tmp/cache/assets/E2A/030/sprockets%2Fc8ab33fc707f5fb9b8befd27b142b3cb +0 -0
- data/test/dummy/tmp/cache/assets/E2C/EA0/sprockets%2Fcb15d5ff97502cc7dfe8a2e06ab16efb +0 -0
- data/test/dummy/tmp/cache/assets/E2F/3D0/sprockets%2Ff740ae8eecbaedadc3c664c62b83e925 +0 -0
- data/test/dummy/tmp/cache/assets/E30/C50/sprockets%2Fdaad6c4c7b1429f8de49d81fac6ad18b +0 -0
- data/test/dummy/tmp/cache/assets/E32/FD0/sprockets%2Fce7d29b07b2f0d14ef1add992dfafa89 +0 -0
- data/test/dummy/tmp/cache/assets/E36/230/sprockets%2F56aec75c7f17ef3509d4cadcf2e6fc3d +0 -0
- data/test/dummy/tmp/cache/assets/E37/6B0/sprockets%2Fce49aa1fbe8185b07e78cf9b9eee22ab +0 -0
- data/test/dummy/tmp/cache/assets/E3B/DD0/sprockets%2F8cb9fef1ee4f6bcbb80758f5c675db1a +0 -0
- data/test/dummy/tmp/cache/assets/E3C/680/sprockets%2Fd057ba99f8cc7b032da8ed9e8c0dff7c +0 -0
- data/test/dummy/tmp/cache/assets/E3E/270/sprockets%2F426e7ee1f8aeb990a55fdf8d6eefbd04 +0 -0
- data/test/dummy/tmp/cache/assets/E54/0F0/sprockets%2Fddbe86c2b19c9b2c5d0bca8e248a1fcb +0 -0
- data/test/dummy/tmp/cache/assets/E83/3A0/sprockets%2Ffdb5f7dc3aba4ce1edb8fd4bd1b42923 +0 -0
- data/test/dummy/tmp/cache/assets/E89/BE0/sprockets%2F9bfc41fee1adbc5e0ab3e58eafb550f9 +0 -0
- data/test/dummy/tmp/cache/assets/E93/2E0/sprockets%2Fba1eb3cc84f5e1fd789bf5f61a8ecdbc +0 -0
- metadata +90 -24
- data/app/assets/javascripts/Core/computeSunPosition.js +0 -116
- data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +0 -125
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +0 -350
- data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +0 -511
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +0 -448
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +0 -19
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +0 -886
- data/app/assets/javascripts/Shaders/Noise.glsl +0 -453
- data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +0 -6
- data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +0 -30
- data/app/assets/javascripts/Shaders/Ray.glsl +0 -532
- data/app/assets/javascripts/Widgets/Animation/darker.css +0 -69
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +0 -4
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +0 -348
- data/app/assets/javascripts/Widgets/Fullscreen/darker.css +0 -14
- data/app/assets/javascripts/Widgets/Images/enterFullscreen-darker.svg +0 -18
- data/app/assets/javascripts/Widgets/Images/exitFullscreen-darker.svg +0 -18
- data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
- data/app/assets/javascripts/Widgets/Timeline/darker.css +0 -20
- data/app/assets/javascripts/Workers/package.json +0 -6
@@ -1,886 +0,0 @@
|
|
1
|
-
float _czm_addWithCancellationCheck(float left, float right, float tolerance)
|
2
|
-
{
|
3
|
-
float difference = left + right;
|
4
|
-
if ((sign(left) != sign(right)) && abs(difference / max(abs(left), abs(right))) < tolerance)
|
5
|
-
{
|
6
|
-
return 0.0;
|
7
|
-
}
|
8
|
-
else
|
9
|
-
{
|
10
|
-
return difference;
|
11
|
-
}
|
12
|
-
}
|
13
|
-
|
14
|
-
/**
|
15
|
-
* DOC_TBA
|
16
|
-
*
|
17
|
-
* @name czm_quadraticRoots
|
18
|
-
* @glslStruct
|
19
|
-
*/
|
20
|
-
struct czm_quadraticRoots
|
21
|
-
{
|
22
|
-
int numberOfRoots;
|
23
|
-
float root0;
|
24
|
-
float root1;
|
25
|
-
};
|
26
|
-
|
27
|
-
/**
|
28
|
-
* Computes the real-valued roots of the 2nd order polynomial function of one variable with only real coefficients.
|
29
|
-
*
|
30
|
-
* @name czm_quadraticRealPolynomialRealRoots
|
31
|
-
* @glslFunction
|
32
|
-
*
|
33
|
-
* @param {float} a The coefficient of the 2nd order monomial.
|
34
|
-
* @param {float} b The coefficient of the 1st order monomial.
|
35
|
-
* @param {float} c The coefficient of the 0th order monomial.
|
36
|
-
*
|
37
|
-
* @returns {czm_quadraticRoots} Zero, one, or two real-valued roots.
|
38
|
-
*
|
39
|
-
* @example
|
40
|
-
* czm_quadraticRoots r = czm_quadraticRealPolynomialRealRoots(2.0, -4.0, -6.0); // 2(x + 1)(x - 3)
|
41
|
-
* // The result is r.numberOfRoots = 2, r.root0 = -1.0, and r.root1 = 3.0.
|
42
|
-
*/
|
43
|
-
czm_quadraticRoots czm_quadraticRealPolynomialRealRoots(float a, float b, float c)
|
44
|
-
{
|
45
|
-
// This function's return statements have an ANGLE workaround: http://code.google.com/p/angleproject/issues/detail?id=185
|
46
|
-
|
47
|
-
const float tolerance = czm_epsilon7;
|
48
|
-
|
49
|
-
if (a == 0.0)
|
50
|
-
{
|
51
|
-
if (b == 0.0)
|
52
|
-
{
|
53
|
-
// Constant function: c = 0. No real polynomial roots possible.
|
54
|
-
czm_quadraticRoots r = czm_quadraticRoots(0, 0.0, 0.0);
|
55
|
-
return r;
|
56
|
-
}
|
57
|
-
else
|
58
|
-
{
|
59
|
-
// Linear function: b * x + c = 0.
|
60
|
-
czm_quadraticRoots r = czm_quadraticRoots(1, -c / b, 0.0);
|
61
|
-
return r;
|
62
|
-
}
|
63
|
-
}
|
64
|
-
else if (b == 0.0)
|
65
|
-
{
|
66
|
-
if (c == 0.0)
|
67
|
-
{
|
68
|
-
// 2nd order monomial: a * x^2 = 0.
|
69
|
-
czm_quadraticRoots r = czm_quadraticRoots(2, 0.0, 0.0);
|
70
|
-
return r;
|
71
|
-
}
|
72
|
-
else
|
73
|
-
{
|
74
|
-
float cMagnitude = abs(c);
|
75
|
-
float aMagnitude = abs(a);
|
76
|
-
|
77
|
-
if ((cMagnitude < aMagnitude) && (cMagnitude / aMagnitude < tolerance)) // c ~= 0.0.
|
78
|
-
{
|
79
|
-
// 2nd order monomial: a * x^2 = 0.
|
80
|
-
czm_quadraticRoots r = czm_quadraticRoots(2, 0.0, 0.0);
|
81
|
-
return r;
|
82
|
-
}
|
83
|
-
else if ((cMagnitude > aMagnitude) && (aMagnitude / cMagnitude < tolerance)) // a ~= 0.0.
|
84
|
-
{
|
85
|
-
// Constant function: c = 0.
|
86
|
-
czm_quadraticRoots r = czm_quadraticRoots(0, 0.0, 0.0);
|
87
|
-
return r;
|
88
|
-
}
|
89
|
-
else
|
90
|
-
{
|
91
|
-
// a * x^2 + c = 0
|
92
|
-
float ratio = -c / a;
|
93
|
-
|
94
|
-
if (ratio < 0.0)
|
95
|
-
{
|
96
|
-
// Both roots are complex.
|
97
|
-
czm_quadraticRoots r = czm_quadraticRoots(0, 0.0, 0.0);
|
98
|
-
return r;
|
99
|
-
}
|
100
|
-
else
|
101
|
-
{
|
102
|
-
// Both roots are real.
|
103
|
-
float root = sqrt(ratio);
|
104
|
-
|
105
|
-
// Return them in ascending order.
|
106
|
-
czm_quadraticRoots r = czm_quadraticRoots(2, -root, root);
|
107
|
-
return r;
|
108
|
-
}
|
109
|
-
}
|
110
|
-
}
|
111
|
-
}
|
112
|
-
else if (c == 0.0)
|
113
|
-
{
|
114
|
-
// a * x^2 + b * x = 0
|
115
|
-
float ratio = -b / a;
|
116
|
-
|
117
|
-
// Return them in ascending order.
|
118
|
-
if (ratio < 0.0)
|
119
|
-
{
|
120
|
-
czm_quadraticRoots r = czm_quadraticRoots(2, ratio, 0.0);
|
121
|
-
return r;
|
122
|
-
}
|
123
|
-
else
|
124
|
-
{
|
125
|
-
czm_quadraticRoots r = czm_quadraticRoots(2, 0.0, ratio);
|
126
|
-
return r;
|
127
|
-
}
|
128
|
-
}
|
129
|
-
else
|
130
|
-
{
|
131
|
-
// a * x^2 + b * x + c = 0
|
132
|
-
float b2 = b * b;
|
133
|
-
float four_ac = 4.0 * a * c;
|
134
|
-
float radicand = _czm_addWithCancellationCheck(b2, -four_ac, tolerance);
|
135
|
-
|
136
|
-
if (radicand < 0.0)
|
137
|
-
{
|
138
|
-
// Both roots are complex.
|
139
|
-
czm_quadraticRoots r = czm_quadraticRoots(0, 0.0, 0.0);
|
140
|
-
return r;
|
141
|
-
}
|
142
|
-
else
|
143
|
-
{
|
144
|
-
// Both roots are real.
|
145
|
-
float q = -0.5 * _czm_addWithCancellationCheck(b, sign(b) * sqrt(radicand), tolerance);
|
146
|
-
|
147
|
-
// Return them in ascending order.
|
148
|
-
if (b > 0.0)
|
149
|
-
{
|
150
|
-
// q < 0.0
|
151
|
-
czm_quadraticRoots r = czm_quadraticRoots(2, q / a, c / q);
|
152
|
-
return r;
|
153
|
-
}
|
154
|
-
else
|
155
|
-
{
|
156
|
-
// q > 0.0
|
157
|
-
czm_quadraticRoots r = czm_quadraticRoots(2, c / q, q / a);
|
158
|
-
return r;
|
159
|
-
}
|
160
|
-
}
|
161
|
-
}
|
162
|
-
}
|
163
|
-
|
164
|
-
///////////////////////////////////////////////////////////////////////////////
|
165
|
-
|
166
|
-
/**
|
167
|
-
* DOC_TBA
|
168
|
-
*
|
169
|
-
* @name czm_sphere
|
170
|
-
* @glslStruct
|
171
|
-
*/
|
172
|
-
struct czm_sphere
|
173
|
-
{
|
174
|
-
vec3 center;
|
175
|
-
float radius;
|
176
|
-
};
|
177
|
-
|
178
|
-
/**
|
179
|
-
* DOC_TBA
|
180
|
-
*
|
181
|
-
* @name czm_raySphereIntersectionInterval
|
182
|
-
* @glslFunction
|
183
|
-
*
|
184
|
-
* @see czm_sphereNormal
|
185
|
-
*/
|
186
|
-
czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, czm_sphere sphere)
|
187
|
-
{
|
188
|
-
// From Real-Time Rendering, Section 16.6.2, Optimized Ray/Sphere Intersection Solution, Page 741
|
189
|
-
|
190
|
-
// This function's return statements have an ANGLE workaround: http://code.google.com/p/angleproject/issues/detail?id=185
|
191
|
-
|
192
|
-
// PERFORMANCE_IDEA: A more optimized but less friendly function could take radius squared directly,
|
193
|
-
// assume a center or origin of zero, etc.
|
194
|
-
|
195
|
-
vec3 l = sphere.center - ray.origin;
|
196
|
-
float s = dot(l, ray.direction);
|
197
|
-
float l2 = dot(l, l);
|
198
|
-
float r2 = sphere.radius * sphere.radius;
|
199
|
-
|
200
|
-
if ((s < 0.0) // Looking away from sphere.
|
201
|
-
&& (l2 > r2)) // Outside of sphere.
|
202
|
-
{
|
203
|
-
return czm_emptyRaySegment; // ray does not intersect (at least not along the indicated direction).
|
204
|
-
}
|
205
|
-
|
206
|
-
float s2 = s * s;
|
207
|
-
float m2 = l2 - s2;
|
208
|
-
|
209
|
-
if (m2 > r2) // Discriminant is negative, yielding only imaginary roots.
|
210
|
-
{
|
211
|
-
return czm_emptyRaySegment; // ray does not intersect.
|
212
|
-
}
|
213
|
-
|
214
|
-
float q = sqrt(r2 - m2);
|
215
|
-
|
216
|
-
if (czm_equalsEpsilon(q, 0.0)) // Discriminant is zero, yielding a double root.
|
217
|
-
{
|
218
|
-
return czm_raySegment(s, s); // ray is tangent.
|
219
|
-
}
|
220
|
-
|
221
|
-
if (l2 > r2) // Outside of sphere.
|
222
|
-
{
|
223
|
-
czm_raySegment i = czm_raySegment(s - q, s + q);
|
224
|
-
return i;
|
225
|
-
}
|
226
|
-
else if (l2 < r2) // Inside of sphere.
|
227
|
-
{
|
228
|
-
czm_raySegment i = czm_raySegment(0.0, s + q);
|
229
|
-
return i;
|
230
|
-
}
|
231
|
-
else if (s > 0.0) // On sphere and looking inward.
|
232
|
-
{
|
233
|
-
czm_raySegment i = czm_raySegment(0.0, s + q);
|
234
|
-
return i;
|
235
|
-
}
|
236
|
-
else // On sphere and looking outward or tangent.
|
237
|
-
{
|
238
|
-
return czm_emptyRaySegment;
|
239
|
-
}
|
240
|
-
}
|
241
|
-
|
242
|
-
/**
|
243
|
-
* DOC_TBA
|
244
|
-
*
|
245
|
-
* @name czm_sphereNormal
|
246
|
-
* @glslFunction
|
247
|
-
*
|
248
|
-
* @see czm_raySphereIntersectionInterval
|
249
|
-
* @see czm_pointAlongRay
|
250
|
-
*/
|
251
|
-
vec3 czm_sphereNormal(czm_sphere sphere, vec3 pointOnSphere)
|
252
|
-
{
|
253
|
-
return normalize(pointOnSphere - sphere.center);
|
254
|
-
}
|
255
|
-
|
256
|
-
///////////////////////////////////////////////////////////////////////////////
|
257
|
-
|
258
|
-
/**
|
259
|
-
* DOC_TBA
|
260
|
-
*
|
261
|
-
* @name czm_cone
|
262
|
-
* @glslStruct
|
263
|
-
*/
|
264
|
-
struct czm_cone
|
265
|
-
{
|
266
|
-
vec3 vertex;
|
267
|
-
vec3 axis; // Unit-length direction vector
|
268
|
-
float halfAperture; // Measured from the cone axis to the cone wall
|
269
|
-
// PERFORMANCE_IDEA: Make sure all of these are used...
|
270
|
-
float cosineOfHalfAperture;
|
271
|
-
float cosineSquaredOfHalfAperture;
|
272
|
-
float sineOfHalfAperture;
|
273
|
-
float sineSquaredOfHalfAperture;
|
274
|
-
mat3 intersectionMatrix;
|
275
|
-
};
|
276
|
-
|
277
|
-
czm_cone czm_coneNew(vec3 vertex, vec3 axis, float halfAperture)
|
278
|
-
{
|
279
|
-
float cosineOfHalfAperture = cos(halfAperture);
|
280
|
-
float cosineSquaredOfHalfAperture = cosineOfHalfAperture * cosineOfHalfAperture;
|
281
|
-
float sineOfHalfAperture = sin(halfAperture);
|
282
|
-
float sineSquaredOfHalfAperture = sineOfHalfAperture * sineOfHalfAperture;
|
283
|
-
|
284
|
-
float x2 = axis.x * axis.x;
|
285
|
-
float y2 = axis.y * axis.y;
|
286
|
-
float z2 = axis.z * axis.z;
|
287
|
-
float xy = axis.x * axis.y;
|
288
|
-
float yz = axis.y * axis.z;
|
289
|
-
float zx = axis.z * axis.x;
|
290
|
-
|
291
|
-
// This is a symmetric matrix.
|
292
|
-
mat3 intersectionMatrix = mat3(
|
293
|
-
cosineSquaredOfHalfAperture - x2, -xy, -zx,
|
294
|
-
-xy, cosineSquaredOfHalfAperture - y2, -yz,
|
295
|
-
-zx, -yz, cosineSquaredOfHalfAperture - z2);
|
296
|
-
|
297
|
-
czm_cone temp = czm_cone(vertex, axis, halfAperture,
|
298
|
-
cosineOfHalfAperture, cosineSquaredOfHalfAperture,
|
299
|
-
sineOfHalfAperture, sineSquaredOfHalfAperture, intersectionMatrix);
|
300
|
-
return temp;
|
301
|
-
}
|
302
|
-
|
303
|
-
/**
|
304
|
-
* Determines if a point is in, or on the boundary, of an infinite cone.
|
305
|
-
*
|
306
|
-
* @name czm_coneContainsPoint
|
307
|
-
* @glslFunction
|
308
|
-
*
|
309
|
-
* @param {czm_cone} cone The infinite cone.
|
310
|
-
* @param {vec3} point The point to test for containment.
|
311
|
-
*
|
312
|
-
* @returns {bool} <code>true</code> if the point is in the infinite cone; otherwise, <code>false</code>.
|
313
|
-
*
|
314
|
-
* @see czm_rayConeIntersectionInterval
|
315
|
-
*
|
316
|
-
* @example
|
317
|
-
* czm_cone cone = czm_coneNew(vec3(0.0), vec3(0.0, 0.0, 1.0), radians(45.0)); // vertex, axis, halfAperture
|
318
|
-
* vec3 point = vec3(1.0, 0.0, 0.0);
|
319
|
-
* bool b = czm_coneContainsPoint(cone, point)); // false
|
320
|
-
*/
|
321
|
-
bool czm_coneContainsPoint(czm_cone cone, vec3 point)
|
322
|
-
{
|
323
|
-
vec3 n = normalize(point - cone.vertex);
|
324
|
-
return (dot(n, cone.axis) >= cone.cosineOfHalfAperture);
|
325
|
-
}
|
326
|
-
|
327
|
-
bool _czm_rayIntersectsReflectedCone(czm_ray ray, czm_cone cone, float time, float cosine)
|
328
|
-
{
|
329
|
-
vec3 s = ray.origin + (time * ray.direction) - cone.vertex; // The vector from the origin is at (vertex + s)
|
330
|
-
vec3 sUnit = normalize(s);
|
331
|
-
float c = dot(sUnit, cone.axis);
|
332
|
-
|
333
|
-
return (sign(c) != sign(cosine));
|
334
|
-
}
|
335
|
-
|
336
|
-
/**
|
337
|
-
* DOC_TBA
|
338
|
-
*
|
339
|
-
* @name czm_rayConeIntersectionInterval
|
340
|
-
* @glslFunction
|
341
|
-
*
|
342
|
-
* @see czm_coneNormal
|
343
|
-
* @see czm_coneContainsPoint
|
344
|
-
*/
|
345
|
-
czm_raySegmentCollection czm_rayConeIntersectionInterval(czm_ray ray, czm_cone cone)
|
346
|
-
{
|
347
|
-
vec3 temp = ray.origin - cone.vertex;
|
348
|
-
|
349
|
-
float t2 = dot(temp, temp);
|
350
|
-
|
351
|
-
float cosineNu = dot(ray.direction, cone.axis);
|
352
|
-
|
353
|
-
if (t2 == 0.0) // At vertex.
|
354
|
-
{
|
355
|
-
if (cosineNu >= cone.cosineOfHalfAperture) // Looking inward or along surface.
|
356
|
-
{
|
357
|
-
return czm_raySegmentCollectionNew(czm_fullRaySegment);
|
358
|
-
}
|
359
|
-
else // Looking outward.
|
360
|
-
{
|
361
|
-
return czm_raySegmentCollectionNew();
|
362
|
-
}
|
363
|
-
}
|
364
|
-
else // Not at vertex
|
365
|
-
{
|
366
|
-
float projection = dot(normalize(temp), cone.axis);
|
367
|
-
|
368
|
-
if (projection == cone.cosineOfHalfAperture) // On surface.
|
369
|
-
{
|
370
|
-
vec3 u = ray.direction;
|
371
|
-
|
372
|
-
mat3 crossProductMatrix = mat3(0.0, -u.z, u.y,
|
373
|
-
u.z, 0.0, -u.x,
|
374
|
-
-u.y, u.x, 0.0);
|
375
|
-
if (length(crossProductMatrix * temp) == 0.0) // Looking along surface.
|
376
|
-
{
|
377
|
-
if (dot(temp, u) > 0.0) // Looking away from vertex.
|
378
|
-
{
|
379
|
-
return czm_raySegmentCollectionNew(czm_fullRaySegment);
|
380
|
-
}
|
381
|
-
else // Looking toward vertex.
|
382
|
-
{
|
383
|
-
czm_raySegment i = czm_raySegment(0.0, length(temp));
|
384
|
-
return czm_raySegmentCollectionNew(i);
|
385
|
-
}
|
386
|
-
}
|
387
|
-
else // Looking tangent at surface.
|
388
|
-
{
|
389
|
-
return czm_raySegmentCollectionNew();
|
390
|
-
}
|
391
|
-
}
|
392
|
-
else // Not on surface
|
393
|
-
{
|
394
|
-
vec3 t = normalize(temp);
|
395
|
-
|
396
|
-
float cosineAlpha2 = cone.cosineOfHalfAperture * cone.cosineOfHalfAperture;
|
397
|
-
|
398
|
-
float cosineTau = dot(t, cone.axis);
|
399
|
-
float cosineDelta = dot(t, ray.direction);
|
400
|
-
|
401
|
-
float cosineNu2 = cosineNu * cosineNu;
|
402
|
-
float cosineTau2 = cosineTau * cosineTau;
|
403
|
-
|
404
|
-
float stuff = cosineTau * cosineNu;
|
405
|
-
|
406
|
-
float positiveTerm = cosineNu2 + cosineTau2;
|
407
|
-
float negativeTerm = (cosineDelta * cosineDelta - 1.0) * cosineAlpha2;
|
408
|
-
float signedTerm = -2.0 * stuff * cosineDelta;
|
409
|
-
|
410
|
-
if (signedTerm > 0.0)
|
411
|
-
{
|
412
|
-
positiveTerm = positiveTerm + signedTerm;
|
413
|
-
}
|
414
|
-
else if (signedTerm < 0.0)
|
415
|
-
{
|
416
|
-
negativeTerm = negativeTerm + signedTerm;
|
417
|
-
}
|
418
|
-
|
419
|
-
float d = 4.0 * cosineAlpha2 * (positiveTerm + negativeTerm);
|
420
|
-
|
421
|
-
if (d < 0.0) // Imaginary roots. No intersections.
|
422
|
-
{
|
423
|
-
if (cone.cosineOfHalfAperture < 0.0) // Obtuse cone.
|
424
|
-
{
|
425
|
-
return czm_raySegmentCollectionNew(czm_fullRaySegment);
|
426
|
-
}
|
427
|
-
else // Acute cone.
|
428
|
-
{
|
429
|
-
return czm_raySegmentCollectionNew();
|
430
|
-
}
|
431
|
-
}
|
432
|
-
else if (d > 0.0) // Distinct real roots. Two intersections.
|
433
|
-
{
|
434
|
-
float a = cosineNu2 - cosineAlpha2;
|
435
|
-
float c = cosineTau2 - cosineAlpha2;
|
436
|
-
float b = 2.0 * (stuff - cosineDelta * cosineAlpha2);
|
437
|
-
|
438
|
-
float s = (b == 0.0) ? 1.0 : sign(b);
|
439
|
-
float q = -(b + s * sqrt(d)) / 2.0;
|
440
|
-
|
441
|
-
float first = q / a;
|
442
|
-
float second = c / q;
|
443
|
-
if (second < first)
|
444
|
-
{
|
445
|
-
float thing = first;
|
446
|
-
first = second;
|
447
|
-
second = thing;
|
448
|
-
}
|
449
|
-
|
450
|
-
// Check roots to ensure that they are non-negative and intersect the desired nape of the cone.
|
451
|
-
bool firstTest = (first >= 0.0) && !(sign(dot(t + first * ray.direction, cone.axis)) == -sign(cone.cosineOfHalfAperture));
|
452
|
-
bool secondTest = (second >= 0.0) && !(sign(dot(t + second * ray.direction, cone.axis)) == -sign(cone.cosineOfHalfAperture));
|
453
|
-
|
454
|
-
float m = sqrt(t2);
|
455
|
-
|
456
|
-
if (cosineTau > cone.cosineOfHalfAperture) // Inside cone.
|
457
|
-
{
|
458
|
-
if (firstTest && secondTest)
|
459
|
-
{
|
460
|
-
// Ray starts inside cone and exits; then enters and never exits.
|
461
|
-
czm_raySegment one = czm_raySegment(0.0, m * first);
|
462
|
-
czm_raySegment two = czm_raySegment(m * second, czm_infinity);
|
463
|
-
return czm_raySegmentCollectionNew(one, two);
|
464
|
-
}
|
465
|
-
else if (firstTest)
|
466
|
-
{
|
467
|
-
// Ray starts inside cone and exits.
|
468
|
-
czm_raySegment i = czm_raySegment(0.0, m * first);
|
469
|
-
return czm_raySegmentCollectionNew(i);
|
470
|
-
}
|
471
|
-
else if (secondTest)
|
472
|
-
{
|
473
|
-
// Ray starts inside cone and exits.
|
474
|
-
czm_raySegment i = czm_raySegment(0.0, m * second);
|
475
|
-
return czm_raySegmentCollectionNew(i);
|
476
|
-
}
|
477
|
-
else
|
478
|
-
{
|
479
|
-
// Ray starts inside cone and never exits.
|
480
|
-
return czm_raySegmentCollectionNew(czm_fullRaySegment);
|
481
|
-
}
|
482
|
-
}
|
483
|
-
else
|
484
|
-
{
|
485
|
-
if (firstTest && secondTest)
|
486
|
-
{
|
487
|
-
// Ray enters and exits.
|
488
|
-
czm_raySegment i = czm_raySegment(m * first, m * second);
|
489
|
-
return czm_raySegmentCollectionNew(i);
|
490
|
-
}
|
491
|
-
else if (firstTest)
|
492
|
-
{
|
493
|
-
// Ray enters and never exits.
|
494
|
-
czm_raySegment i = czm_raySegment(m * first, czm_infinity);
|
495
|
-
return czm_raySegmentCollectionNew(i);
|
496
|
-
}
|
497
|
-
else if (secondTest)
|
498
|
-
{
|
499
|
-
// Ray enters and never exits.
|
500
|
-
czm_raySegment i = czm_raySegment(m * second, czm_infinity);
|
501
|
-
return czm_raySegmentCollectionNew(i);
|
502
|
-
}
|
503
|
-
else
|
504
|
-
{
|
505
|
-
// Ray never enters.
|
506
|
-
return czm_raySegmentCollectionNew();
|
507
|
-
}
|
508
|
-
}
|
509
|
-
}
|
510
|
-
else // (d == 0.0) Repeated real roots. Two intersections.
|
511
|
-
{
|
512
|
-
if (cone.cosineOfHalfAperture == 0.0) // Planar cone.
|
513
|
-
{
|
514
|
-
if (cosineTau >= 0.0) // Inside or on surface.
|
515
|
-
{
|
516
|
-
if (cosineNu >= 0.0) // Looking inward or tangent.
|
517
|
-
{
|
518
|
-
// Ray starts inside cone and never exits.
|
519
|
-
return czm_raySegmentCollectionNew(czm_fullRaySegment);
|
520
|
-
}
|
521
|
-
else
|
522
|
-
{
|
523
|
-
// Ray starts inside cone and intersects.
|
524
|
-
czm_raySegment i = czm_raySegment(0.0, -sqrt(t2) * cosineTau / cosineNu);
|
525
|
-
return czm_raySegmentCollectionNew(i);
|
526
|
-
}
|
527
|
-
}
|
528
|
-
else // Outside.
|
529
|
-
{
|
530
|
-
if (cosineNu <= 0.0) // Looking outward or tangent.
|
531
|
-
{
|
532
|
-
// Ray starts outside cone and never enters.
|
533
|
-
return czm_raySegmentCollectionNew();
|
534
|
-
}
|
535
|
-
else
|
536
|
-
{
|
537
|
-
// Ray starts outside cone and intersects.
|
538
|
-
czm_raySegment i = czm_raySegment(-sqrt(t2) * cosineTau / cosineNu, czm_infinity);
|
539
|
-
return czm_raySegmentCollectionNew(i);
|
540
|
-
}
|
541
|
-
}
|
542
|
-
}
|
543
|
-
else
|
544
|
-
{
|
545
|
-
float a = cosineNu2 - cosineAlpha2;
|
546
|
-
float c = cosineTau2 - cosineAlpha2;
|
547
|
-
float b = 2.0 * (stuff - cosineDelta * cosineAlpha2);
|
548
|
-
|
549
|
-
float root = (a == 0.0) ? -sign(b) * czm_infinity : (-sign(b) / sign(a)) * sqrt(c / a);
|
550
|
-
|
551
|
-
// Check roots to ensure that they are non-negative and intersect the desired nape of the cone.
|
552
|
-
bool rootTest = (root >= 0.0) && !(sign(dot(t + root * ray.direction, cone.axis)) == -sign(cone.cosineOfHalfAperture));
|
553
|
-
|
554
|
-
float m = sqrt(t2);
|
555
|
-
|
556
|
-
if (cosineTau > cone.cosineOfHalfAperture) // Inside cone.
|
557
|
-
{
|
558
|
-
if (rootTest)
|
559
|
-
{
|
560
|
-
// Ray starts inside cone and exits or becomes tangent.
|
561
|
-
czm_raySegment i = czm_raySegment(0.0, m * root);
|
562
|
-
return czm_raySegmentCollectionNew(i);
|
563
|
-
}
|
564
|
-
else
|
565
|
-
{
|
566
|
-
// Ray starts inside cone and never exits.
|
567
|
-
return czm_raySegmentCollectionNew(czm_fullRaySegment);
|
568
|
-
}
|
569
|
-
}
|
570
|
-
else
|
571
|
-
{
|
572
|
-
if (rootTest)
|
573
|
-
{
|
574
|
-
if (c < 0.0) // Outside both napes of the cone.
|
575
|
-
{
|
576
|
-
// Ray starts outside cone and becomes tangent.
|
577
|
-
float thing = m * root;
|
578
|
-
czm_raySegment i = czm_raySegment(thing, thing);
|
579
|
-
return czm_raySegmentCollectionNew(i);
|
580
|
-
}
|
581
|
-
else
|
582
|
-
{
|
583
|
-
// Ray starts outside cone and enters at vertex.
|
584
|
-
float thing = m * root;
|
585
|
-
czm_raySegment i = czm_raySegment(thing, czm_infinity);
|
586
|
-
return czm_raySegmentCollectionNew(i);
|
587
|
-
}
|
588
|
-
}
|
589
|
-
else
|
590
|
-
{
|
591
|
-
// Ray never enters.
|
592
|
-
return czm_raySegmentCollectionNew();
|
593
|
-
}
|
594
|
-
}
|
595
|
-
}
|
596
|
-
}
|
597
|
-
}
|
598
|
-
}
|
599
|
-
}
|
600
|
-
|
601
|
-
/**
|
602
|
-
* DOC_TBA
|
603
|
-
*
|
604
|
-
* @name czm_rayConeIntersectNormal
|
605
|
-
* @glslFunction
|
606
|
-
*
|
607
|
-
* @see czm_rayConeIntersectionInterval
|
608
|
-
* @see czm_pointAlongRay
|
609
|
-
*
|
610
|
-
* @example
|
611
|
-
* // Compute the outward-facing cone normal where a ray first intersects a cone
|
612
|
-
* czm_ray ray = czm_ray(vec3(0.0), vec3(0.0, 0.0, 1.0)); // origin, direction
|
613
|
-
* czm_cone cone = czm_coneNew(vec3(0.0, 0.0, 1.0), vec3(0.0, 0.0, 1.0), radians(45.0)); // vertex, axis, halfAperture
|
614
|
-
* czm_raySegment i = czm_rayConeIntersectionInterval(ray, cone);
|
615
|
-
* vec3 normal = czm_coneNormal(cone, czm_pointAlongRay(ray, i.start));
|
616
|
-
*/
|
617
|
-
vec3 czm_coneNormal(czm_cone cone, vec3 pointOnCone)
|
618
|
-
{
|
619
|
-
// PERFORMANCE_IDEA: Remove duplicate computation with _czm_rayIntersectsReflectedCone
|
620
|
-
vec3 s = pointOnCone - cone.vertex; // Vector from the origin is at (vertex + s)
|
621
|
-
vec3 sUnit = normalize(s);
|
622
|
-
return normalize((cone.cosineOfHalfAperture * sUnit - cone.axis) / cone.sineOfHalfAperture);
|
623
|
-
}
|
624
|
-
|
625
|
-
///////////////////////////////////////////////////////////////////////////////
|
626
|
-
|
627
|
-
/**
|
628
|
-
* DOC_TBA
|
629
|
-
*
|
630
|
-
* @name czm_ellipsoidSilhouetteCone
|
631
|
-
* @glslStruct
|
632
|
-
*/
|
633
|
-
struct czm_ellipsoidSilhouetteCone
|
634
|
-
{
|
635
|
-
czm_ellipsoid ellipsoid;
|
636
|
-
vec3 pointOutsideEllipsoid;
|
637
|
-
czm_cone coneInScaledSpace;
|
638
|
-
};
|
639
|
-
|
640
|
-
/**
|
641
|
-
* DOC_TBA
|
642
|
-
*
|
643
|
-
* @name czm_ellipsoidSilhouetteConeNormal
|
644
|
-
* @glslFunction
|
645
|
-
*
|
646
|
-
*/
|
647
|
-
vec3 czm_ellipsoidSilhouetteConeNormal(czm_ellipsoidSilhouetteCone cone, vec3 pointOnCone)
|
648
|
-
{
|
649
|
-
vec3 pointOnScaledCone = cone.ellipsoid.inverseRadii * (czm_inverseView * vec4(pointOnCone, 1.0)).xyz;
|
650
|
-
|
651
|
-
vec3 scaledNormal = czm_coneNormal(cone.coneInScaledSpace, pointOnScaledCone);
|
652
|
-
|
653
|
-
vec3 temp = -normalize(czm_viewRotation * (cone.ellipsoid.radii * scaledNormal));
|
654
|
-
|
655
|
-
return temp;
|
656
|
-
}
|
657
|
-
|
658
|
-
/**
|
659
|
-
* DOC_TBA
|
660
|
-
*
|
661
|
-
* @name czm_ellipsoidSilhouetteConeNew
|
662
|
-
* @glslFunction
|
663
|
-
*
|
664
|
-
*/
|
665
|
-
czm_ellipsoidSilhouetteCone czm_ellipsoidSilhouetteConeNew(czm_ellipsoid ellipsoid, vec3 pointOutsideEllipsoid)
|
666
|
-
{
|
667
|
-
vec3 q = ellipsoid.inverseRadii * (czm_inverseView * vec4(pointOutsideEllipsoid, 1.0)).xyz;
|
668
|
-
vec3 axis = -normalize(q);
|
669
|
-
|
670
|
-
float q2 = dot(q, q);
|
671
|
-
float sineSquaredOfHalfAperture = 1.0 / q2;
|
672
|
-
float sineOfHalfAperture = sqrt(sineSquaredOfHalfAperture);
|
673
|
-
float cosineSquaredOfHalfAperture = 1.0 - sineSquaredOfHalfAperture;
|
674
|
-
float cosineOfHalfAperture = sqrt(cosineSquaredOfHalfAperture);
|
675
|
-
float halfAperture = atan(sineOfHalfAperture / cosineOfHalfAperture);
|
676
|
-
|
677
|
-
float x2 = axis.x * axis.x;
|
678
|
-
float y2 = axis.y * axis.y;
|
679
|
-
float z2 = axis.z * axis.z;
|
680
|
-
float xy = axis.x * axis.y;
|
681
|
-
float yz = axis.y * axis.z;
|
682
|
-
float zx = axis.z * axis.x;
|
683
|
-
|
684
|
-
// This is a symmetric matrix.
|
685
|
-
mat3 intersectionMatrix = mat3(
|
686
|
-
cosineSquaredOfHalfAperture - x2, -xy, -zx,
|
687
|
-
-xy, cosineSquaredOfHalfAperture - y2, -yz,
|
688
|
-
-zx, -yz, cosineSquaredOfHalfAperture - z2);
|
689
|
-
|
690
|
-
czm_cone coneInScaledSpace = czm_cone(q, axis, halfAperture,
|
691
|
-
cosineOfHalfAperture, cosineSquaredOfHalfAperture,
|
692
|
-
sineOfHalfAperture, sineSquaredOfHalfAperture, intersectionMatrix);
|
693
|
-
|
694
|
-
// ANGLE workaround: http://code.google.com/p/angleproject/issues/detail?id=185
|
695
|
-
czm_ellipsoidSilhouetteCone temp = czm_ellipsoidSilhouetteCone(ellipsoid, pointOutsideEllipsoid, coneInScaledSpace);
|
696
|
-
return temp;
|
697
|
-
}
|
698
|
-
|
699
|
-
/**
|
700
|
-
* DOC_TBA
|
701
|
-
*
|
702
|
-
* @name czm_rayEllipsoidSilhouetteConeIntersectionInterval
|
703
|
-
* @glslFunction
|
704
|
-
*
|
705
|
-
*/
|
706
|
-
czm_raySegment czm_rayEllipsoidSilhouetteConeIntersectionInterval(czm_ray ray, czm_ellipsoidSilhouetteCone cone)
|
707
|
-
{
|
708
|
-
// Determine the ray in the scaled space.
|
709
|
-
vec3 origin = cone.ellipsoid.inverseRadii * (czm_inverseView * vec4(ray.origin, 1.0)).xyz;
|
710
|
-
vec3 direction = normalize(cone.ellipsoid.inverseRadii * (czm_inverseViewRotation * ray.direction));
|
711
|
-
czm_ray rayInScaledSpace = czm_ray(origin, direction);
|
712
|
-
|
713
|
-
// Perform the intersection in the scaled space.
|
714
|
-
czm_raySegmentCollection collection = czm_rayConeIntersectionInterval(rayInScaledSpace, cone.coneInScaledSpace);
|
715
|
-
|
716
|
-
if (collection.count == 0) // No intersection.
|
717
|
-
{
|
718
|
-
return czm_emptyRaySegment;
|
719
|
-
}
|
720
|
-
else // Intersection.
|
721
|
-
{
|
722
|
-
czm_raySegment interval = collection.intervals[0];
|
723
|
-
|
724
|
-
// Honor ray origin case (start == 0.0).
|
725
|
-
float start = interval.start;
|
726
|
-
if (start != 0.0)
|
727
|
-
{
|
728
|
-
// Determine start in unscaled space.
|
729
|
-
vec3 temp = (czm_view * vec4(cone.ellipsoid.radii * czm_pointAlongRay(rayInScaledSpace, start), 1.0)).xyz;
|
730
|
-
start = dot(temp, ray.direction);
|
731
|
-
}
|
732
|
-
|
733
|
-
// Honor infinite ray (stop == infinity).
|
734
|
-
float stop = interval.stop;
|
735
|
-
if (stop != czm_infinity)
|
736
|
-
{
|
737
|
-
// Determine stop in unscaled space.
|
738
|
-
vec3 temp = (czm_view * vec4(cone.ellipsoid.radii * czm_pointAlongRay(rayInScaledSpace, stop), 1.0)).xyz;
|
739
|
-
stop = dot(temp, ray.direction);
|
740
|
-
}
|
741
|
-
|
742
|
-
return czm_raySegment(start, stop);
|
743
|
-
}
|
744
|
-
}
|
745
|
-
|
746
|
-
///////////////////////////////////////////////////////////////////////////////
|
747
|
-
|
748
|
-
/**
|
749
|
-
* DOC_TBA
|
750
|
-
*
|
751
|
-
* @name czm_halfspace
|
752
|
-
* @glslStruct
|
753
|
-
*/
|
754
|
-
struct czm_halfspace
|
755
|
-
{
|
756
|
-
vec3 center;
|
757
|
-
vec3 normal; // Unit vector.
|
758
|
-
};
|
759
|
-
|
760
|
-
/**
|
761
|
-
* DOC_TBA
|
762
|
-
*
|
763
|
-
* @name czm_rayHalfspaceIntersectionInterval
|
764
|
-
* @glslFunction
|
765
|
-
*
|
766
|
-
*/
|
767
|
-
czm_raySegment czm_rayHalfspaceIntersectionInterval(czm_ray ray, czm_halfspace halfspace)
|
768
|
-
{
|
769
|
-
float numerator = dot(halfspace.center - ray.origin, halfspace.normal);
|
770
|
-
float denominator = dot(ray.direction, halfspace.normal);
|
771
|
-
|
772
|
-
if (numerator > 0.0) // Inside.
|
773
|
-
{
|
774
|
-
if (denominator > 0.0) // Looking outward.
|
775
|
-
{
|
776
|
-
return czm_raySegment(0.0, numerator / denominator);
|
777
|
-
}
|
778
|
-
else // Looking inward or parallel.
|
779
|
-
{
|
780
|
-
return czm_fullRaySegment;
|
781
|
-
}
|
782
|
-
}
|
783
|
-
else if (numerator < 0.0) // Outside.
|
784
|
-
{
|
785
|
-
if (denominator < 0.0 ) // Looking inward.
|
786
|
-
{
|
787
|
-
return czm_raySegment(numerator / denominator, czm_infinity);
|
788
|
-
}
|
789
|
-
else // Looking outward or parallel.
|
790
|
-
{
|
791
|
-
return czm_emptyRaySegment;
|
792
|
-
}
|
793
|
-
}
|
794
|
-
else // On surface.
|
795
|
-
{
|
796
|
-
if (denominator < 0.0 ) // Looking inward.
|
797
|
-
{
|
798
|
-
return czm_fullRaySegment;
|
799
|
-
}
|
800
|
-
else // Looking outward or parallel.
|
801
|
-
{
|
802
|
-
return czm_emptyRaySegment;
|
803
|
-
}
|
804
|
-
}
|
805
|
-
}
|
806
|
-
|
807
|
-
///////////////////////////////////////////////////////////////////////////////
|
808
|
-
|
809
|
-
/**
|
810
|
-
* DOC_TBA
|
811
|
-
*
|
812
|
-
* @name czm_ellipsoidSilhouetteHalfspace
|
813
|
-
* @glslStruct
|
814
|
-
*/
|
815
|
-
struct czm_ellipsoidSilhouetteHalfspace
|
816
|
-
{
|
817
|
-
czm_ellipsoid ellipsoid;
|
818
|
-
vec3 pointOutsideEllipsoid;
|
819
|
-
czm_halfspace halfspaceInScaledSpace;
|
820
|
-
};
|
821
|
-
|
822
|
-
/**
|
823
|
-
* DOC_TBA
|
824
|
-
*
|
825
|
-
* @name czm_ellipsoidSilhouetteHalfspaceNew
|
826
|
-
* @glslFunction
|
827
|
-
*
|
828
|
-
*/
|
829
|
-
czm_ellipsoidSilhouetteHalfspace czm_ellipsoidSilhouetteHalfspaceNew(czm_ellipsoid ellipsoid, vec3 pointOutsideEllipsoid)
|
830
|
-
{
|
831
|
-
vec3 q = ellipsoid.inverseRadii * (czm_inverseView * vec4(pointOutsideEllipsoid, 1.0)).xyz;
|
832
|
-
float magnitude = 1.0 / length(q);
|
833
|
-
vec3 normal = normalize(q);
|
834
|
-
vec3 center = magnitude * normal;
|
835
|
-
|
836
|
-
czm_halfspace halfspaceInScaledSpace = czm_halfspace(center, normal);
|
837
|
-
|
838
|
-
// ANGLE workaround: http://code.google.com/p/angleproject/issues/detail?id=185
|
839
|
-
czm_ellipsoidSilhouetteHalfspace temp = czm_ellipsoidSilhouetteHalfspace(ellipsoid, pointOutsideEllipsoid, halfspaceInScaledSpace);
|
840
|
-
return temp;
|
841
|
-
}
|
842
|
-
|
843
|
-
/**
|
844
|
-
* DOC_TBA
|
845
|
-
*
|
846
|
-
* @name czm_rayEllipsoidSilhouetteHalfspaceIntersectionInterval
|
847
|
-
* @glslFunction
|
848
|
-
*
|
849
|
-
*/
|
850
|
-
czm_raySegment czm_rayEllipsoidSilhouetteHalfspaceIntersectionInterval(czm_ray ray, czm_ellipsoidSilhouetteHalfspace halfspace)
|
851
|
-
{
|
852
|
-
// Determine the ray in the scaled space.
|
853
|
-
vec3 origin = halfspace.ellipsoid.inverseRadii * (czm_inverseView * vec4(ray.origin, 1.0)).xyz;
|
854
|
-
vec3 direction = halfspace.ellipsoid.inverseRadii * (czm_inverseViewRotation * ray.direction);
|
855
|
-
czm_ray rayInScaledSpace = czm_ray(origin, direction);
|
856
|
-
|
857
|
-
// Perform the intersection in the scaled space.
|
858
|
-
czm_raySegment interval = czm_rayHalfspaceIntersectionInterval(rayInScaledSpace, halfspace.halfspaceInScaledSpace);
|
859
|
-
|
860
|
-
if (czm_isEmpty(interval)) // No intersection.
|
861
|
-
{
|
862
|
-
return interval;
|
863
|
-
}
|
864
|
-
else // Intersection.
|
865
|
-
{
|
866
|
-
// Honor ray origin case (start == 0.0).
|
867
|
-
float start = interval.start;
|
868
|
-
if (start != 0.0)
|
869
|
-
{
|
870
|
-
// Determine start in unscaled space.
|
871
|
-
vec3 temp = (czm_view * vec4(halfspace.ellipsoid.radii * czm_pointAlongRay(rayInScaledSpace, start), 1.0)).xyz;
|
872
|
-
start = dot(temp, ray.direction);
|
873
|
-
}
|
874
|
-
|
875
|
-
// Honor infinite ray (stop == infinity).
|
876
|
-
float stop = interval.stop;
|
877
|
-
if (stop != czm_infinity)
|
878
|
-
{
|
879
|
-
// Determine stop in unscaled space.
|
880
|
-
vec3 temp = (czm_view * vec4(halfspace.ellipsoid.radii * czm_pointAlongRay(rayInScaledSpace, stop), 1.0)).xyz;
|
881
|
-
stop = dot(temp, ray.direction);
|
882
|
-
}
|
883
|
-
|
884
|
-
return czm_raySegment(start, stop);
|
885
|
-
}
|
886
|
-
}
|