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

📄 airspaces.java

📁 world wind java sdk 源码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            orbit.setLocations(LatLon.fromDegrees(45.7477, -123.6372), LatLon.fromDegrees(45.7477, -122.6372));
            orbit.setAltitudes(15000.0, 25000.0);
            orbit.setWidth(30000.0);
            orbit.setOrbitType(Orbit.OrbitType.CENTER);
            orbit.setTerrainConforming(true, false);
            orbit.setValue(DESCRIPTION, "CENTER Orbit.");
            this.setupDefaultMaterial(orbit, Color.GRAY);
            airspaces.add(orbit);

            // Right Orbit
            orbit = new Orbit();
            orbit.setLocations(LatLon.fromDegrees(45.7477, -123.6372), LatLon.fromDegrees(45.7477, -122.6372));
            orbit.setAltitudes(10000.0, 20000.0);
            orbit.setWidth(30000.0);
            orbit.setOrbitType(Orbit.OrbitType.RIGHT);
            orbit.setTerrainConforming(true, true);
            orbit.setValue(DESCRIPTION, "RIGHT Orbit.");
            this.setupDefaultMaterial(orbit, Color.DARK_GRAY);
            airspaces.add(orbit);

            // Orbit from Los Angeles to New York
            orbit = new Orbit();
            orbit.setLocations(LatLon.fromDegrees(34.0489, -118.2481), LatLon.fromDegrees(40.7137, -74.0065));
            orbit.setAltitudes(10000.0, 100000.0);
            orbit.setWidth(500000.0);
            orbit.setOrbitType(Orbit.OrbitType.CENTER);
            orbit.setTerrainConforming(true, false);
            orbit.setValue(DESCRIPTION, "Orbit From L.A. to N.Y.");
            this.setupDefaultMaterial(orbit, Color.RED);
            airspaces.add(orbit);

            // Curtain around Snohomish County, WA
            Curtain curtain = new Curtain();
            curtain.setLocations(makeLatLon(SNOHOMISH_COUNTY));
            curtain.setAltitudes(5000.0, 10000.0);
            curtain.setTerrainConforming(true, false);
            curtain.setValue(DESCRIPTION, "Curtain around Snohomish County, WA.");
            this.setupDefaultMaterial(curtain, Color.GREEN);
            airspaces.add(curtain);

            // Curtain around San Juan County, WA
            curtain = new Curtain();
            curtain.setLocations(makeLatLon(SAN_JUAN_COUNTY_2));
            curtain.setAltitudes(5000.0, 10000.0);
            curtain.setTerrainConforming(true, true);
            curtain.setValue(DESCRIPTION, "Curtain around San Juan County, WA.");
            this.setupDefaultMaterial(curtain, Color.GREEN);
            airspaces.add(curtain);

            // Curtains of different path types crossing the dateline.
            curtain = new Curtain();
            curtain.setLocations(Arrays.asList(LatLon.fromDegrees(27.0, -112.0), LatLon.fromDegrees(35.0, 138.0)));
            curtain.setAltitudes(1000.0, 100000.0);
            curtain.setTerrainConforming(true, false);
            curtain.setValue(DESCRIPTION, "Great arc Curtain from America to Japan.");
            this.setupDefaultMaterial(curtain, Color.MAGENTA);
            airspaces.add(curtain);

            curtain = new Curtain();
            curtain.setLocations(Arrays.asList(LatLon.fromDegrees(27.0, -112.0), LatLon.fromDegrees(35.0, 138.0)));
            curtain.setPathType(AVKey.RHUMB_LINE);
            curtain.setAltitudes(1000.0, 100000.0);
            curtain.setTerrainConforming(false, true);
            curtain.setValue(DESCRIPTION, "Rhumb Curtain from America to Japan.");
            this.setupDefaultMaterial(curtain, Color.CYAN);
            airspaces.add(curtain);

            // Polygons of San Juan County, WA
            Polygon poly = new Polygon();
            poly.setLocations(makeLatLon(SAN_JUAN_COUNTY_1));
            poly.setAltitudes(5000.0, 10000.0);
            poly.setTerrainConforming(true, true);
            poly.setValue(DESCRIPTION, "Polygon of San Juan County, WA.");
            this.setupDefaultMaterial(poly, Color.GREEN);
            airspaces.add(poly);

            poly = new Polygon();
            poly.setLocations(makeLatLon(SAN_JUAN_COUNTY_3));
            poly.setAltitudes(5000.0, 10000.0);
            poly.setTerrainConforming(true, true);
            poly.setValue(DESCRIPTION, "Polygon of San Juan County, WA.");
            this.setupDefaultMaterial(poly, Color.GREEN);
            airspaces.add(poly);

            // Polygon over the Sierra Nevada mountains.
            poly = new Polygon();
            poly.setLocations(Arrays.asList(
                LatLon.fromDegrees(40.1323, -122.0911),
                LatLon.fromDegrees(38.0062, -120.7711),
                LatLon.fromDegrees(37.0562, -119.6226),
                LatLon.fromDegrees(36.9231, -118.1829),
                LatLon.fromDegrees(37.8211, -118.8557),
                LatLon.fromDegrees(39.0906, -120.0304),
                LatLon.fromDegrees(40.2609, -120.8295)));
            poly.setAltitudes(10000.0, 100000.0);
            poly.setTerrainConforming(true, true);
            poly.setValue(DESCRIPTION, "Polygon over the Sierra Nevada mountains.");
            this.setupDefaultMaterial(poly, Color.LIGHT_GRAY);
            airspaces.add(poly);

            // PolyArc
            PolyArc polyArc = new PolyArc();
            polyArc.setLocations(Arrays.asList(
                LatLon.fromDegrees(45.5, -122.0),
                LatLon.fromDegrees(46.0, -122.0),
                LatLon.fromDegrees(46.0, -121.0),
                LatLon.fromDegrees(45.5, -121.0)));
            polyArc.setAltitudes(5000.0, 10000.0);
            polyArc.setRadius(30000.0);
            polyArc.setAzimuths(Angle.fromDegrees(-45.0), Angle.fromDegrees(135.0));
            polyArc.setTerrainConforming(true, true);
            this.setupDefaultMaterial(polyArc, Color.GRAY);
            airspaces.add(polyArc);

            // Route
            Route route = new Route();
            route.setAltitudes(5000.0, 20000.0);
            route.setWidth(20000.0);
            route.setLocations(Arrays.asList(
                LatLon.fromDegrees(43.0, -121.0),
                LatLon.fromDegrees(44.0, -121.0),
                LatLon.fromDegrees(44.0, -120.0),
                LatLon.fromDegrees(43.0, -120.0)));
            route.setTerrainConforming(false, true);
            this.setupDefaultMaterial(route, Color.GREEN);
            airspaces.add(route);

            // Track
            TrackAirspace track = new TrackAirspace();
            track.setEnableInnerCaps(false);
            double leftWwidth = 100000d;
            double rightWidth = 100000d;
            double minAlt = 150000d;
            double maxAlt = 250000d;
            Box leg;
            track.addLeg(LatLon.fromDegrees(40.4705, -117.9242), LatLon.fromDegrees(42.6139, -108.3518), minAlt, maxAlt, leftWwidth, rightWidth);
            leg = track.addLeg(LatLon.fromDegrees(42.6139, -108.3518), LatLon.fromDegrees(44.9305,  -97.6665), minAlt/2, maxAlt/2, leftWwidth, rightWidth);
            leg.setTerrainConforming( false, false );
            leg = track.addLeg(LatLon.fromDegrees(44.9305,  -97.6665), LatLon.fromDegrees(47.0121,  -94.9218), minAlt/2, maxAlt/2, leftWwidth, rightWidth);
            leg.setTerrainConforming( false, false );
            leg = track.addLeg(LatLon.fromDegrees(47.0121,  -94.9218), LatLon.fromDegrees(44.7964,  -68.4230), minAlt/4, maxAlt/4, leftWwidth, rightWidth);
            leg.setTerrainConforming( true, false );
            this.setupDefaultMaterial(track, Color.ORANGE);
            airspaces.add(track);

            track = new TrackAirspace();
            leftWwidth = 80000d;
            rightWidth = 80000d;
            minAlt = 150000d;
            maxAlt = 250000d;
            track.addLeg(LatLon.fromDegrees(29.9970, -108.6046), LatLon.fromDegrees(33.5132, -107.7544), minAlt/6, maxAlt/6, leftWwidth, rightWidth).setTerrainConforming(false, false);
            track.addLeg(LatLon.fromDegrees(29.4047, -103.0465), LatLon.fromDegrees(34.4955, -102.2151), minAlt/4, maxAlt/4, leftWwidth, rightWidth).setTerrainConforming(false, true);
            track.addLeg(LatLon.fromDegrees(28.9956, -99.8026), LatLon.fromDegrees(36.0133, -98.3489), minAlt/2, maxAlt/2, leftWwidth, rightWidth).setTerrainConforming(true, true);
            track.addLeg(LatLon.fromDegrees(28.5986, -96.6126), LatLon.fromDegrees(36.8515, -95.0324), minAlt, maxAlt, leftWwidth, rightWidth).setTerrainConforming(true, false);
            track.addLeg(LatLon.fromDegrees(30.4647, -94.1764), LatLon.fromDegrees(35.5636, -92.9371), minAlt/2, maxAlt/2, leftWwidth, rightWidth).setTerrainConforming(false, false);
            track.addLeg(LatLon.fromDegrees(31.0959, -90.9424), LatLon.fromDegrees(35.1470, -89.4267), minAlt/4, maxAlt/4, leftWwidth, rightWidth).setTerrainConforming(false, true);
            track.addLeg(LatLon.fromDegrees(31.5107, -88.5723), LatLon.fromDegrees(34.2444, -87.4563), minAlt/6, maxAlt/6, leftWwidth, rightWidth).setTerrainConforming(true, true);
            this.setupDefaultMaterial(track, Color.MAGENTA);
            airspaces.add(track);

            // Sphere
            SphereAirspace sphere = new SphereAirspace();
            sphere.setLocation(LatLon.fromDegrees(47.7477, -122.6372));
            sphere.setAltitude(5000.0);
            sphere.setTerrainConforming(true);
            sphere.setRadius(5000.0);
            this.setupDefaultMaterial(sphere, Color.ORANGE);
            airspaces.add(sphere);

            sphere = new SphereAirspace();
            sphere.setLocation(LatLon.fromDegrees(47.7477, -121.6372));
            sphere.setAltitude(0.0);
            sphere.setTerrainConforming(true);
            sphere.setRadius(5000.0);
            this.setupDefaultMaterial(sphere, Color.MAGENTA);
            airspaces.add(sphere);

            // Continent sized sphere
            sphere = new SphereAirspace();
            sphere.setLocation(LatLon.fromDegrees(0.0, -180.0));
            sphere.setAltitude(0.0);
            sphere.setTerrainConforming(false);
            sphere.setRadius(1000000.0);
            this.setupDefaultMaterial(sphere, Color.RED);
            airspaces.add(sphere);

            this.setAirspaces(airspaces);
        }

        public void doLoadIntersectingAirspaces()
        {
            ArrayList<Airspace> airspaces = new ArrayList<Airspace>();
            double minAltitude = 1000;
            double maxAltitude = 10000;

            // Cylinder.
            CappedCylinder cyl = new CappedCylinder();
            cyl.setCenter(LatLon.fromDegrees(47.7477, -123.6372));
            cyl.setRadius(30000.0);
            cyl.setAltitudes(minAltitude, maxAltitude);
            cyl.setTerrainConforming(false, false);
            cyl.setValue(DESCRIPTION, "30,000m Radius Cylinder. Top & bottom terrain conformance.");
            this.setupDefaultMaterial(cyl, Color.BLUE);
            airspaces.add(cyl);

            // Radarc
            PartialCappedCylinder partCyl = new PartialCappedCylinder();
            partCyl.setCenter(LatLon.fromDegrees(46.7477, -123.6372));
            partCyl.setAltitudes(minAltitude, maxAltitude);
            partCyl.setTerrainConforming(false, false);
            // To render a Radarc,
            // (1) Specify inner radius and outer radius.
            // (2) Specify start and stop azimuth.
            partCyl.setRadii(15000.0, 30000.0);
            partCyl.setAzimuths(Angle.fromDegrees(0.0), Angle.fromDegrees(90.0));
            partCyl.setValue(DESCRIPTION, "Partial Cylinder from 0 to 90 degrees.");
            this.setupDefaultMaterial(partCyl, Color.DARK_GRAY);
            airspaces.add(partCyl);

            // Radarc
            partCyl = new PartialCappedCylinder();
            partCyl.setCenter(LatLon.fromDegrees(46.7477, -122.6372));
            partCyl.setAltitudes(minAltitude, maxAltitude);
            partCyl.setTerrainConforming(false, false);
            // To render a Radarc,
            // (1) Specify inner radius and outer radius.
            // (2) Specify start and stop azimuth.
            partCyl.setRadii(15000.0, 30000.0);
            partCyl.setAzimuths(Angle.fromDegrees(90.0), Angle.fromDegrees(0.0));
            partCyl.setValue(DESCRIPTION, "Partial Cylinder from 90 to 0 degrees.");
            this.setupDefaultMaterial(partCyl, Color.GRAY);
            airspaces.add(partCyl);

            // Cake
            Cake cake = new Cake();
            cake.setLayers(Arrays.asList(
                new Cake.Layer(LatLon.fromDegrees(46.7477, -121.6372), 10000.0, Angle.fromDegrees(190.0),
                    Angle.fromDegrees(170.0), 10000.0, 15000.0),
                new Cake.Layer(LatLon.fromDegrees(46.7477, -121.6372), 15000.0, Angle.fromDegrees(190.0),
                    Angle.fromDegrees(90.0), 16000.0, 21000.0),
                new Cake.Layer(LatLon.fromDegrees(46.7477, -121.6372), 12500.0, Angle.fromDegrees(270.0),
                    Angle.fromDegrees(60.0), 22000.0, 27000.0)));
            cake.getLayers().get(0).setTerrainConforming(false, false);
            cake.getLayers().get(1).setTerrainConforming(false, false);
            cake.getLayers().get(2).setTerrainConforming(false, false);
            cake.setValue(DESCRIPTION, "3 layer Cake.");
            this.setupDefaultMaterial(cake, Color.YELLOW);
            airspaces.add(cake);

            cake = new Cake();
            cake.setLayers(Arrays.asList(
                new Cake.Layer(LatLon.fromDegrees(36, -121), 10000.0, Angle.fromDegrees(0.0),
                    Angle.fromDegrees(360.0), 10000.0, 15000.0),
                new Cake.Layer(LatLon.fromDegrees(36.1, -121.1), 15000.0, Angle.fromDegrees(0.0),
                    Angle.fromDegrees(360.0), 16000.0, 21000.0),
                new Cake.Layer(LatLon.fromDegrees(35.9, -120.9), 12500.0, Angle.fromDegrees(0.0),
                    Angle.fromDegrees(360.0), 22000.0, 27000.0)));
            cake.getLayers().get(0).setTerrainConforming(false, false);
            cake.getLayers().get(1).setTerrainConforming(false, false);
            cake.getLayers().get(2).setTerrainConforming(false, false);
            cake.setValue(DESCRIPTION, "3 layer Cake. With disjoint layers.");
            this.setupDefaultMaterial(cake, Color.MAGENTA);
            airspaces.add(cake);

            // Left Orbit
            Orbit orbit = new Orbit();
            orbit.setLocations(LatLon.fromDegrees(45.7477, -123.6372), LatLon.fromDegrees(45.7477, -122.6372));

⌨️ 快捷键说明

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