⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 draggingshapeswithgeometry.java

📁 world wind java sdk 源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            layer.setPickEnabled(true);             return layer;         }        private AbstractLayer buildRandomCircleShapesLayer()         {             SurfaceShapeLayer layer = new SurfaceShapeLayer();           // Generate random numbers of circles over the US...            for (int i = 0; i < numCircles; i++) {                double lat = (25. + Math.random() * (50. - 25.));                double lon = -(64 + Math.random() * (125. - 64.));                double size = 100000. * Math.random();                SurfaceCircle surfaceCircle = new SurfaceCircle(LatLon.fromDegrees(lat, lon), size);                surfaceCircle.getAttributes().setInteriorMaterial(new Material(new Color(1f, 0.11f, 0.2f)));                surfaceCircle.getAttributes().setInteriorOpacity(0.6);                surfaceCircle.getAttributes().setOutlineMaterial(new Material(new Color(0f, 1f, 0f)));                surfaceCircle.getAttributes().setOutlineOpacity(0.6);                surfaceCircle.getAttributes().setOutlineWidth(3);                layer.addRenderable(surfaceCircle);            }            layer.setPickEnabled(true);             return layer;         }        private RenderableLayer buildRandomCirclesLayerPolyArc()         {             RenderableLayer layer = new RenderableLayer();           // Generate random numbers of circles over the US...            for (int i = 0; i < numCircles; i++) {                double lat = (25. + Math.random() * (50. - 25.));                double lon = -(64 + Math.random() * (125. - 64.));                double size = 100000. * Math.random();                CappedCylinder cyl = new SurfaceCircle2();                cyl.getAttributes().setMaterial(Material.RED);                cyl.getAttributes().setOpacity(0.8);                cyl.setCenter(LatLon.fromDegrees(lat, lon));                cyl.setRadius(size);                cyl.setAltitudes(0,0);                cyl.setTerrainConforming(true, true);                cyl.setEnableLevelOfDetail(true);                layer.addRenderable(cyl);            }            layer.setPickEnabled(true);             return layer;         }/******* COMMENT OUT UNTIL SurfaceEllipseGeometry2 can be refactored to reflect the new airspace package.        private RenderableLayer buildRandomEllipses(Globe globe)         {             RenderableLayer layer = new RenderableLayer();           // Generate random numbers of circles over the US...            for (int i = 0; i < numCircles; i++) {                double lat = (25. + Math.random() * (50. - 25.));                double lon = -(64 + Math.random() * (125. - 64.));                double size = 100000. * Math.random();                SurfaceEllipseGeometry2 ell = new SurfaceEllipseGeometry2(globe,                    LatLon.fromDegrees(lat, lon), size, size, Angle.ZERO, 8);                layer.addRenderable(ell);            }            layer.setPickEnabled(true);             return layer;         }**************/        private RenderableLayer buildWyomingLayer() {            RenderableLayer layer = new RenderableLayer();            // Square to cover (approx.) Wyoming...            // Wyoming is purportedly 97818 Sq. Miles --> 253,347,456,970 square meters            // (see http://www.netstate.com/states/alma/wy_alma.htm)            SurfaceShapeGeometry surfaceQuad = new SurfaceSectorGeometry(new Sector(                    Angle.fromDegrees(41), Angle.fromDegrees(45.),                    Angle.fromDegrees(-111), Angle.fromDegrees(-104)),                    new Color(0f, 1f, 1f, 0.3f), new Color(0.5f, 1f, 1f, 0.8f));            layer.addRenderable(surfaceQuad);            layer.setPickEnabled(true);            return layer;        }        private Font makeToolTipFont()        {            HashMap<TextAttribute, Object> fontAttributes = new HashMap<TextAttribute, Object>();            fontAttributes.put(TextAttribute.BACKGROUND, new Color(0.4f, 0.4f, 0.4f, 1f));            return Font.decode("Arial-BOLD-14").deriveFont(fontAttributes);        }        private RenderableLayer buildShapesLayer()        {            // Create a layer with shapes to drag.            RenderableLayer layer = new RenderableLayer();            // Create a yellow, semi-transparent surface shape over Mt. Shasta.            Color interiorColor = new Color(1f, 1f, 0f, 0.3f);            Color borderColor = new Color(1f, 1f, 0f, 0.8f);            SurfaceShapeGeometry surfaceSector = new SurfaceSectorGeometry(new Sector(                Angle.fromDegrees(41.0), Angle.fromDegrees(41.6),                Angle.fromDegrees(-122.5), Angle.fromDegrees(-121.7)),                interiorColor, borderColor);            layer.addRenderable(surfaceSector);            // Create a turquoise, semi-transparent surface shape over Lake Tahoe.            SurfaceShapeGeometry surfaceQuad = new SurfaceSectorGeometry(new Sector(                Angle.fromDegrees(38.9), Angle.fromDegrees(39.3),                Angle.fromDegrees(-120.2), Angle.fromDegrees(-119.9)),                new Color(0f, 1f, 1f, 0.3f), new Color(0.5f, 1f, 1f, 0.8f));            layer.addRenderable(surfaceQuad);            // Create an ellipse over the center of the States.            SurfaceShapeGeometry surfaceEllipse = new SurfaceEllipseGeometry(getWwd().getModel().getGlobe(),                LatLon.fromDegrees(38, -104), 1.5e5, 1e5, Angle.fromDegrees(15), 16,                new Color(0f, 1f, 1f, 0.3f), new Color(0.5f, 1f, 1f, 0.8f));            surfaceEllipse.setDrawInterior(false);            layer.addRenderable(surfaceEllipse);            // Create a quadrilateral over  the States.            SurfaceShapeGeometry surfaceQuadShape = new SurfaceQuadGeometry(getWwd().getModel().getGlobe(),                LatLon.fromDegrees(42, -104), 1e5, 1.3e5, Angle.fromDegrees(20),                new Color(0f, 1f, 1f, 0.3f), new Color(0.5f, 1f, 1f, 0.8f));            layer.addRenderable(surfaceQuadShape);            // Create a square over the  States.            SurfaceShapeGeometry surfaceSquareShape = new SurfaceSquareGeometry(getWwd().getModel().getGlobe(),                LatLon.fromDegrees(45, -104), 1e5,                new Color(0f, 1f, 1f, 0.3f), new Color(0.5f, 1f, 1f, 0.8f));            surfaceSquareShape.setDrawBorder(false);            layer.addRenderable(surfaceSquareShape);            // Create a circle over the  States.            SurfaceShapeGeometry surfaceCircleShape = new SurfaceCircleGeometry(getWwd().getModel().getGlobe(),                LatLon.fromDegrees(36, -104), 1e5, 16,                new Color(0f, 1f, 1f, 1f), new Color(0.5f, 1f, 1f, 0.8f));            layer.addRenderable(surfaceCircleShape);            // Create an elevated quadrilateral above Lake Tahoe.            Quadrilateral quad = new Quadrilateral(new Sector(                Angle.fromDegrees(38.9), Angle.fromDegrees(39.3),                Angle.fromDegrees(-120.2), Angle.fromDegrees(-119.9)),                50000d);            quad.setColor(new Color(1f, 1f, 0f, 1f));            layer.addRenderable(quad);            // Create a big polygon over Florida.            double originLat = 28;            double originLon = -82;            ArrayList<LatLon> positions = new ArrayList<LatLon>();            positions.add(new LatLon(Angle.fromDegrees(originLat + 5.0), Angle.fromDegrees(originLon + 2.5)));            positions.add(new LatLon(Angle.fromDegrees(originLat + 5.0), Angle.fromDegrees(originLon - 2.5)));            positions.add(new LatLon(Angle.fromDegrees(originLat + 2.5), Angle.fromDegrees(originLon - 5.0)));            positions.add(new LatLon(Angle.fromDegrees(originLat - 2.5), Angle.fromDegrees(originLon - 5.0)));            positions.add(new LatLon(Angle.fromDegrees(originLat - 5.0), Angle.fromDegrees(originLon - 2.5)));            positions.add(new LatLon(Angle.fromDegrees(originLat - 5.0), Angle.fromDegrees(originLon + 2.5)));            positions.add(new LatLon(Angle.fromDegrees(originLat - 2.5), Angle.fromDegrees(originLon + 5.0)));            positions.add(new LatLon(Angle.fromDegrees(originLat + 2.5), Angle.fromDegrees(originLon + 5.0)));            positions.add(new LatLon(Angle.fromDegrees(originLat + 5.0), Angle.fromDegrees(originLon + 2.5)));            SurfacePolygonGeometry polygon = new SurfacePolygonGeometry(positions,                new Color(1f, 0.11f, 0.2f, 0.4f), new Color(0f, 1f, 0f, 0.6f));            polygon.setBorderWidth(2.0);            layer.addRenderable(polygon);            // Test +180/-180 lon span Polyline            positions = new ArrayList<LatLon>();            positions.add(new LatLon(Angle.fromDegrees(-10), Angle.fromDegrees(170)));            positions.add(new LatLon(Angle.fromDegrees(-10), Angle.fromDegrees(-170)));            Polyline polyline = new Polyline(positions, 1000);            polyline.setPathType(Polyline.GREAT_CIRCLE);            layer.addRenderable(polyline);            // Test +180/-180 lon span SurfacePolyline            positions = new ArrayList<LatLon>();            positions.add(new LatLon(Angle.fromDegrees(20), Angle.fromDegrees(-170)));            positions.add(new LatLon(Angle.fromDegrees(15), Angle.fromDegrees(170)));            positions.add(new LatLon(Angle.fromDegrees(10), Angle.fromDegrees(-175)));            positions.add(new LatLon(Angle.fromDegrees(5), Angle.fromDegrees(170)));            positions.add(new LatLon(Angle.fromDegrees(0), Angle.fromDegrees(-170)));            positions.add(new LatLon(Angle.fromDegrees(20), Angle.fromDegrees(-170)));            SurfacePolygonGeometry surfacePolygon = new SurfacePolygonGeometry(positions,                new Color(1f, 0.11f, 0.2f, 0.4f), new Color(1f, 0f, 0f, 0.6f));            surfacePolygon.setBorderWidth(2.0);            layer.addRenderable(surfacePolygon);            return layer;        }    }    public static void main(String[] args)    {        try {            if (args.length > 0)                numCircles = Integer.parseInt(args[0]);        } catch (NumberFormatException ex) {            System.err.println("unable to parse argument as integer: " + args[0]);            System.err.println("using default number of circles: " + numCircles);        }        ApplicationTemplate.start("World Wind Shape Dragging", AppFrame.class);    }    private static int numCircles = 1000;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -