📄 airspaces.java
字号:
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 + -