NASA World Wind

gov.nasa.worldwind.geom
Class Sector

java.lang.Object
  extended by gov.nasa.worldwind.geom.Sector
All Implemented Interfaces:
Cacheable, Comparable<Sector>, Iterable<LatLon>
Direct Known Subclasses:
MercatorSector

public class Sector
extends Object
implements Cacheable, Comparable<Sector>, Iterable<LatLon>

Sector represents a rectangular region of latitude and longitude. The region is defined by four angles: its minimum and maximum latitude, its minimum and maximum longitude. The angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude. The minimums and maximums are relative to these ranges, e.g., -80 is less than 20. Behavior of the class is undefined for angles outside these ranges. Normalization is not performed on the angles by this class, nor is it verified by the class' methods. See Angle for a description of specifying angles.

Sector instances are immutable.

See Also:
Angle

Field Summary
static Sector EMPTY_SECTOR
           
static Sector FULL_SPHERE
          A Sector of latitude [-90 degrees, + 90 degrees] and longitude [-180 degrees, + 180 degrees].
 
Constructor Summary
Sector(Angle minLatitude, Angle maxLatitude, Angle minLongitude, Angle maxLongitude)
          Creates a new Sector and initializes it to the specified angles.
Sector(Sector sector)
           
 
Method Summary
 double[] asDegreesArray()
          Returns the coordinates of the sector as an array of values in degrees, in the order minLat, maxLat, minLon, maxLon.
 List<LatLon> asList()
          Returns the coordinates of the sector as a list, in the order minLat, maxLat, minLon, maxLon.
 double[] asRadiansArray()
          Returns the coordinates of the sector as an array of values in radians, in the order minLat, maxLat, minLon, maxLon.
static Sector boundingSector(Globe globe, LatLon center, double radius)
          Returns a new Sector encompassing a circle centered at a given position, with a given radius in meter.
static Sector boundingSector(Iterable<? extends LatLon> locations)
           
static Sector boundingSector(Iterator<TrackPoint> positions)
           
static Sector boundingSector(LatLon pA, LatLon pB)
           
 int compareTo(Sector that)
          Compares this sector to a specified sector according to their minimum latitude, minimum longitude, maximum latitude, and maximum longitude, respectively.
static Box computeBoundingBox(Globe globe, double verticalExaggeration, Sector sector)
          Returns a Box that bounds the specified sector on the surface of the specified Globe.
static Box computeBoundingBox(Globe globe, double verticalExaggeration, Sector sector, double minElevation, double maxElevation)
          Returns a Box that bounds the specified sector on the surface of the specified Globe.
static Cylinder computeBoundingCylinder(Globe globe, double verticalExaggeration, Sector sector)
          Returns a cylinder that minimally surrounds the specified sector at a specified vertical exaggeration.
static Cylinder computeBoundingCylinder(Globe globe, double verticalExaggeration, Sector sector, double minElevation, double maxElevation)
          Returns a cylinder that minimally surrounds the specified sector at a specified vertical exaggeration and minimum and maximum elevations for the sector.
static Cylinder computeBoundingCylinderOrig(Globe globe, double verticalExaggeration, Sector sector)
           
static Cylinder computeBoundingCylinderOrig(Globe globe, double verticalExaggeration, Sector sector, double minElevation, double maxElevation)
          Returns a cylinder that minimally surrounds the specified minimum and maximum elevations in the sector at a specified vertical exaggeration.
static Sphere computeBoundingSphere(Globe globe, double verticalExaggeration, Sector sector)
          Returns a sphere that minimally surrounds the sector at a specified vertical exaggeration.
 Vec4 computeCenterPoint(Globe globe, double exaggeration)
          Computes the Cartesian coordinates of a Sector's center.
 Vec4[] computeCornerPoints(Globe globe, double exaggeration)
          Computes the Cartesian coordinates of a Sector's corners.
 boolean contains(Angle latitude, Angle longitude)
           
 boolean contains(LatLon latLon)
          Determines whether a latitude/longitude position is within the sector.
 boolean contains(Sector that)
          Determines whether another sectror is fully contained within this one.
 boolean containsDegrees(double degreesLatitude, double degreesLongitude)
           
 boolean containsRadians(double radiansLatitude, double radiansLongitude)
          Determines whether a latitude/longitude postion expressed in radians is within the sector.
 double distanceTo(DrawContext dc, Vec4 point)
          Returns an approximation of the distance in model coordinates between the surface geometry defined by this sector and the specified model coordinate point.
 boolean equals(Object o)
          Tests the equality of the sectors' angles.
static Sector fromDegrees(double[] array)
          Creates a new Sector and initializes it to angles in the specified array.
static Sector fromDegrees(double minLatitude, double maxLatitude, double minLongitude, double maxLongitude)
          Creates a new Sector and initializes it to the specified angles.
static Sector fromDegrees(Rectangle2D rectangle)
          Creates a new Sector and initializes it to the angles resulting from the given Rectangle2D in degrees lat-lon coordinates where x corresponds to longitude and y to latitude.
static Sector fromDegreesAndClamp(double minLatitude, double maxLatitude, double minLongitude, double maxLongitude)
          Creates a new Sector and initializes it to the specified angles.
static Sector fromRadians(double minLatitude, double maxLatitude, double minLongitude, double maxLongitude)
          Creates a new Sector and initializes it to the specified angles.
static Sector fromUTMRectangle(int zone, String hemisphere, double minEasting, double maxEasting, double minNorthing, double maxNorthing)
          Returns a geographic Sector which bounds the specified UTM rectangle.
 LatLon getCentroid()
          Returns the latitude and longitude of the sector's angular center: (minimum latitude + maximum latitude) / 2, (minimum longitude + maximum longitude) / 2.
 LatLon[] getCorners()
          Returns a list of the Lat/Lon coordinates of a Sector's corners.
 Angle getDeltaLat()
          Returns the angular difference between the sector's minimum and maximum latitudes: max - min
 double getDeltaLatDegrees()
           
 double getDeltaLatRadians()
           
 Angle getDeltaLon()
          Returns the angular difference between the sector's minimum and maximum longitudes: max - min.
 double getDeltaLonDegrees()
           
 double getDeltaLonRadians()
           
 Angle getMaxLatitude()
          Returns the sector's maximum latitude.
 Angle getMaxLongitude()
          Returns the sector's maximum longitude.
 Angle getMinLatitude()
          Returns the sector's minimum latitude.
 Angle getMinLongitude()
          Returns the sector's minimum longitude.
 long getSizeInBytes()
          Retrieve the size of this object in bytes.
 int hashCode()
          Computes a hash code from the sector's four angles.
 Sector intersection(Angle latitude, Angle longitude)
           
 Sector intersection(Sector that)
           
 boolean intersects(Sector that)
          Determines whether this sector intersects another sector's range of latitude and longitude.
 boolean intersectsInterior(Sector that)
          Determines whether the interiors of this sector and another sector intersect.
 boolean intersectsSegment(LatLon begin, LatLon end)
          Determines whether this sector intersects the specified geographic line segment.
 boolean isSameSector(Iterable<? extends LatLon> corners)
           
static boolean isSector(Iterable<? extends LatLon> corners)
           
 boolean isWithinLatLonLimits()
           
 Iterator<LatLon> iterator()
          Creates an iterator over the four corners of the sector, starting with the southwest position and continuing counter-clockwise.
static Sector[] splitBoundingSectors(Globe globe, LatLon center, double radius)
          Returns an array of Sectors encompassing a circle centered at a given position, with a given radius in meters.
static Sector[] splitBoundingSectors(Iterable<? extends LatLon> locations)
           
 Sector[] subdivide()
           
 Sector[] subdivide(int div)
           
 double[] toArrayDegrees()
          Returns a four element array containing the Sector's angles in degrees.
 Rectangle2D toRectangleDegrees()
          Returns a Rectangle2D corresponding to this Sector in degrees lat-lon coordinates where x corresponds to longitude and y to latitude.
 String toString()
          Returns a string indicating the sector's angles.
 Sector union(Angle latitude, Angle longitude)
           
static Sector union(Iterable<? extends Sector> sectors)
           
 Sector union(Sector that)
          Returns a new sector whose angles are the extremes of the this sector and another.
static Sector union(Sector sectorA, Sector sectorB)
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

EMPTY_SECTOR

public static final Sector EMPTY_SECTOR

FULL_SPHERE

public static final Sector FULL_SPHERE
A Sector of latitude [-90 degrees, + 90 degrees] and longitude [-180 degrees, + 180 degrees].

Constructor Detail

Sector

public Sector(Angle minLatitude,
              Angle maxLatitude,
              Angle minLongitude,
              Angle maxLongitude)
Creates a new Sector and initializes it to the specified angles. The angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude, but this method does not verify that.

Parameters:
minLatitude - the sector's minimum latitude.
maxLatitude - the sector's maximum latitude.
minLongitude - the sector's minimum longitude.
maxLongitude - the sector's maximum longitude.
Throws:
IllegalArgumentException - if any of the angles are null

Sector

public Sector(Sector sector)
Method Detail

asDegreesArray

public double[] asDegreesArray()
Returns the coordinates of the sector as an array of values in degrees, in the order minLat, maxLat, minLon, maxLon.

Returns:
the array of sector coordinates.

asList

public List<LatLon> asList()
Returns the coordinates of the sector as a list, in the order minLat, maxLat, minLon, maxLon.

Returns:
the list of sector coordinates.

asRadiansArray

public double[] asRadiansArray()
Returns the coordinates of the sector as an array of values in radians, in the order minLat, maxLat, minLon, maxLon.

Returns:
the array of sector coordinates.

boundingSector

public static Sector boundingSector(Globe globe,
                                    LatLon center,
                                    double radius)
Returns a new Sector encompassing a circle centered at a given position, with a given radius in meter.

Parameters:
globe - a Globe instance.
center - the circle center position.
radius - the circle radius in meter.
Returns:
the circle bounding sector.

boundingSector

public static Sector boundingSector(Iterable<? extends LatLon> locations)

boundingSector

public static Sector boundingSector(Iterator<TrackPoint> positions)

boundingSector

public static Sector boundingSector(LatLon pA,
                                    LatLon pB)

compareTo

public int compareTo(Sector that)
Compares this sector to a specified sector according to their minimum latitude, minimum longitude, maximum latitude, and maximum longitude, respectively.

Specified by:
compareTo in interface Comparable<Sector>
Parameters:
that - the Sector to compareTo with this.
Returns:
-1 if this sector compares less than that specified, 0 if they're equal, and 1 if it compares greater.
Throws:
IllegalArgumentException - if that is null

computeBoundingBox

public static Box computeBoundingBox(Globe globe,
                                     double verticalExaggeration,
                                     Sector sector)
Returns a Box that bounds the specified sector on the surface of the specified Globe. The returned box encloses the globe's surface terrain in the sector, according to the specified vertical exaggeration and the globe's minimum and maximum elevations in the sector. If the minimum and maximum elevation are equal, this assumes a maximum elevation of 10 + the minimum. If this fails to compute a box enclosing the sector, this returns a unit box enclosing one of the boxes corners.

Parameters:
globe - the globe the extent relates to.
verticalExaggeration - the globe's vertical surface exaggeration.
sector - a sector on the globe's surface to compute a bounding box for.
Returns:
a box enclosing the globe's surface on the specified sector.
Throws:
IllegalArgumentException - if either the globe or sector is null.

computeBoundingBox

public static Box computeBoundingBox(Globe globe,
                                     double verticalExaggeration,
                                     Sector sector,
                                     double minElevation,
                                     double maxElevation)
Returns a Box that bounds the specified sector on the surface of the specified Globe. The returned box encloses the globe's surface terrain in the sector, according to the specified vertical exaggeration, minimum elevation, and maximum elevation. If the minimum and maximum elevation are equal, this assumes a maximum elevation of 10 + the minimum. If this fails to compute a box enclosing the sector, this returns a unit box enclosing one of the boxes corners.

Parameters:
globe - the globe the extent relates to.
verticalExaggeration - the globe's vertical surface exaggeration.
sector - a sector on the globe's surface to compute a bounding box for.
minElevation - the globe's minimum elevation in the sector.
maxElevation - the globe's maximum elevation in the sector.
Returns:
a box enclosing the globe's surface on the specified sector.
Throws:
IllegalArgumentException - if either the globe or sector is null.

computeBoundingCylinder

public static Cylinder computeBoundingCylinder(Globe globe,
                                               double verticalExaggeration,
                                               Sector sector)
Returns a cylinder that minimally surrounds the specified sector at a specified vertical exaggeration.

Parameters:
globe - The globe associated with the sector.
verticalExaggeration - the vertical exaggeration to apply to the minimum and maximum elevations when computing the cylinder.
sector - the sector to return the bounding cylinder for.
Returns:
The minimal bounding cylinder in Cartesian coordinates.
Throws:
IllegalArgumentException - if sector is null

computeBoundingCylinder

public static Cylinder computeBoundingCylinder(Globe globe,
                                               double verticalExaggeration,
                                               Sector sector,
                                               double minElevation,
                                               double maxElevation)
Returns a cylinder that minimally surrounds the specified sector at a specified vertical exaggeration and minimum and maximum elevations for the sector.

Parameters:
globe - The globe associated with the sector.
verticalExaggeration - the vertical exaggeration to apply to the minimum and maximum elevations when computing the cylinder.
sector - the sector to return the bounding cylinder for.
minElevation - the minimum elevation of the bounding cylinder.
maxElevation - the maximum elevation of the bounding cylinder.
Returns:
The minimal bounding cylinder in Cartesian coordinates.
Throws:
IllegalArgumentException - if sector is null

computeBoundingCylinderOrig

public static Cylinder computeBoundingCylinderOrig(Globe globe,
                                                   double verticalExaggeration,
                                                   Sector sector)

computeBoundingCylinderOrig

public static Cylinder computeBoundingCylinderOrig(Globe globe,
                                                   double verticalExaggeration,
                                                   Sector sector,
                                                   double minElevation,
                                                   double maxElevation)
Returns a cylinder that minimally surrounds the specified minimum and maximum elevations in the sector at a specified vertical exaggeration.

Parameters:
globe - The globe associated with the sector.
verticalExaggeration - the vertical exaggeration to apply to the minimum and maximum elevations when computing the cylinder.
sector - the sector to return the bounding cylinder for.
minElevation - the minimum elevation of the bounding cylinder.
maxElevation - the maximum elevation of the bounding cylinder.
Returns:
The minimal bounding cylinder in Cartesian coordinates.
Throws:
IllegalArgumentException - if sector is null

computeBoundingSphere

public static Sphere computeBoundingSphere(Globe globe,
                                           double verticalExaggeration,
                                           Sector sector)
Returns a sphere that minimally surrounds the sector at a specified vertical exaggeration.

Parameters:
globe - the globe the sector is associated with
verticalExaggeration - the vertical exaggeration to apply to the globe's elevations when computing the sphere.
sector - the sector to return the bounding sphere for.
Returns:
The minimal bounding sphere in Cartesian coordinates.
Throws:
IllegalArgumentException - if globe or sector is null

computeCenterPoint

public Vec4 computeCenterPoint(Globe globe,
                               double exaggeration)
Computes the Cartesian coordinates of a Sector's center.

Parameters:
globe - The globe associated with the sector.
exaggeration - The vertical exaggeration to apply.
Returns:
the Cartesian coordinates of the sector's center.
Throws:
IllegalArgumentException - if globe is null.

computeCornerPoints

public Vec4[] computeCornerPoints(Globe globe,
                                  double exaggeration)
Computes the Cartesian coordinates of a Sector's corners.

Parameters:
globe - The globe associated with the sector.
exaggeration - The vertical exaggeration to apply.
Returns:
an array of four Cartesian points.
Throws:
IllegalArgumentException - if globe is null.

contains

public final boolean contains(Angle latitude,
                              Angle longitude)

contains

public final boolean contains(LatLon latLon)
Determines whether a latitude/longitude position is within the sector. The sector's angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude. The result of the operation is undefined if they are not.

Parameters:
latLon - the position to test, with angles normalized to +/- π latitude and +/- 2π longitude.
Returns:
true if the position is within the sector, false otherwise.
Throws:
IllegalArgumentException - if latlon is null.

contains

public boolean contains(Sector that)
Determines whether another sectror is fully contained within this one. The sector's angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude. The result of the operation is undefined if they are not.

Parameters:
that - the sector to test for containment.
Returns:
true if this sector fully contains the input sector, otherwise false.

containsDegrees

public boolean containsDegrees(double degreesLatitude,
                               double degreesLongitude)

containsRadians

public boolean containsRadians(double radiansLatitude,
                               double radiansLongitude)
Determines whether a latitude/longitude postion expressed in radians is within the sector. The sector's angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude. The result of the operation is undefined if they are not.

Parameters:
radiansLatitude - the latitude in radians of the position to test, normalized +/- π.
radiansLongitude - the longitude in radians of the position to test, normalized +/- 2π.
Returns:
true if the position is within the sector, false otherwise.

distanceTo

public double distanceTo(DrawContext dc,
                         Vec4 point)
Returns an approximation of the distance in model coordinates between the surface geometry defined by this sector and the specified model coordinate point. The returned value represents the shortest distance between the specified point and this sector's corner points or its center point. The draw context defines the globe and the elevations that are used to compute the corner points and the center point.

Parameters:
dc - The draw context defining the surface geometry.
point - The model coordinate point to compute a distance to.
Returns:
The distance between this sector's surface geometry and the specified point, in model coordinates.
Throws:
IllegalArgumentException - if any argument is null.

equals

public boolean equals(Object o)
Tests the equality of the sectors' angles. Sectors are equal if all of their corresponding angles are equal.

Overrides:
equals in class Object
Parameters:
o - the sector to compareTo with this.
Returns:
true if the four corresponding angles of each sector are equal, false otherwise.

fromDegrees

public static Sector fromDegrees(double[] array)
Creates a new Sector and initializes it to angles in the specified array. The array is assumed to hold four elements containing the Sector's angles, and must be ordered as follows: minimum latitude, maximum latitude, minimum longitude, and maximum longitude. Additionally, the angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude, but this method does not verify that.

Parameters:
array - the array of angles in degrees.
Returns:
he new Sector
Throws:
IllegalArgumentException - if array is null or if its length is less than 4.

fromDegrees

public static Sector fromDegrees(double minLatitude,
                                 double maxLatitude,
                                 double minLongitude,
                                 double maxLongitude)
Creates a new Sector and initializes it to the specified angles. The angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude, but this method does not verify that.

Parameters:
minLatitude - the sector's minimum latitude in degrees.
maxLatitude - the sector's maximum latitude in degrees.
minLongitude - the sector's minimum longitude in degrees.
maxLongitude - the sector's maximum longitude in degrees.
Returns:
the new Sector

fromDegrees

public static Sector fromDegrees(Rectangle2D rectangle)
Creates a new Sector and initializes it to the angles resulting from the given Rectangle2D in degrees lat-lon coordinates where x corresponds to longitude and y to latitude. The resulting geographic angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude, but this method does not verify that.

Parameters:
rectangle - the sector's rectangle in degrees lat-lon coordinates.
Returns:
the new Sector

fromDegreesAndClamp

public static Sector fromDegreesAndClamp(double minLatitude,
                                         double maxLatitude,
                                         double minLongitude,
                                         double maxLongitude)
Creates a new Sector and initializes it to the specified angles. The angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude, but this method does not verify that.

Parameters:
minLatitude - the sector's minimum latitude in degrees.
maxLatitude - the sector's maximum latitude in degrees.
minLongitude - the sector's minimum longitude in degrees.
maxLongitude - the sector's maximum longitude in degrees.
Returns:
the new Sector

fromRadians

public static Sector fromRadians(double minLatitude,
                                 double maxLatitude,
                                 double minLongitude,
                                 double maxLongitude)
Creates a new Sector and initializes it to the specified angles. The angles are assumed to be normalized to +/- π/2 radians latitude and +/- π radians longitude, but this method does not verify that.

Parameters:
minLatitude - the sector's minimum latitude in radians.
maxLatitude - the sector's maximum latitude in radians.
minLongitude - the sector's minimum longitude in radians.
maxLongitude - the sector's maximum longitude in radians.
Returns:
the new Sector

fromUTMRectangle

public static Sector fromUTMRectangle(int zone,
                                      String hemisphere,
                                      double minEasting,
                                      double maxEasting,
                                      double minNorthing,
                                      double maxNorthing)
Returns a geographic Sector which bounds the specified UTM rectangle. The UTM rectangle is located in specified UTM zone and hemisphere.

Parameters:
zone - the UTM zone.
hemisphere - the UTM hemisphere, either AVKey.NORTH or AVKey.SOUTH.
minEasting - the minimum UTM easting, in meters.
maxEasting - the maximum UTM easting, in meters.
minNorthing - the minimum UTM northing, in meters.
maxNorthing - the maximum UTM northing, in meters.
Returns:
a Sector that bounds the specified UTM rectangle.
Throws:
IllegalArgumentException - if zone is outside the range 1-60, if hemisphere is null, or if hemisphere is not one of AVKey.NORTH or AVKey.SOUTH.

getCentroid

public LatLon getCentroid()
Returns the latitude and longitude of the sector's angular center: (minimum latitude + maximum latitude) / 2, (minimum longitude + maximum longitude) / 2.

Returns:
The latitude and longitude of the sector's angular center

getCorners

public LatLon[] getCorners()
Returns a list of the Lat/Lon coordinates of a Sector's corners.

Returns:
an array of the four corner locations, in the order SW, SE, NE, NW

getDeltaLat

public final Angle getDeltaLat()
Returns the angular difference between the sector's minimum and maximum latitudes: max - min

Returns:
The angular difference between the sector's minimum and maximum latitudes.

getDeltaLatDegrees

public final double getDeltaLatDegrees()

getDeltaLatRadians

public final double getDeltaLatRadians()

getDeltaLon

public final Angle getDeltaLon()
Returns the angular difference between the sector's minimum and maximum longitudes: max - min.

Returns:
The angular difference between the sector's minimum and maximum longitudes

getDeltaLonDegrees

public final double getDeltaLonDegrees()

getDeltaLonRadians

public final double getDeltaLonRadians()

getMaxLatitude

public final Angle getMaxLatitude()
Returns the sector's maximum latitude.

Returns:
The sector's maximum latitude.

getMaxLongitude

public final Angle getMaxLongitude()
Returns the sector's maximum longitude.

Returns:
The sector's maximum longitude.

getMinLatitude

public final Angle getMinLatitude()
Returns the sector's minimum latitude.

Returns:
The sector's minimum latitude.

getMinLongitude

public final Angle getMinLongitude()
Returns the sector's minimum longitude.

Returns:
The sector's minimum longitude.

getSizeInBytes

public long getSizeInBytes()
Retrieve the size of this object in bytes. This implementation returns an exact value of the object's size.

Specified by:
getSizeInBytes in interface Cacheable
Returns:
the size of this object in bytes

hashCode

public int hashCode()
Computes a hash code from the sector's four angles.

Overrides:
hashCode in class Object
Returns:
a hash code incorporating the sector's four angles.

intersection

public final Sector intersection(Angle latitude,
                                 Angle longitude)

intersection

public final Sector intersection(Sector that)

intersects

public boolean intersects(Sector that)
Determines whether this sector intersects another sector's range of latitude and longitude. The sector's angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude. The result of the operation is undefined if they are not.

Parameters:
that - the sector to test for intersection.
Returns:
true if the sectors intersect, otherwise false.

intersectsInterior

public boolean intersectsInterior(Sector that)
Determines whether the interiors of this sector and another sector intersect. The sector's angles are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude. The result of the operation is undefined if they are not.

Parameters:
that - the sector to test for intersection.
Returns:
true if the sectors' interiors intersect, otherwise false.
See Also:
intersects(Sector)

intersectsSegment

public boolean intersectsSegment(LatLon begin,
                                 LatLon end)
Determines whether this sector intersects the specified geographic line segment. The line segment is specified by a begin location and an end location. The locations are are assumed to be connected by a linear path in geographic space. This returns true if any location along that linear path intersects this sector, including the begin and end locations.

Parameters:
begin - the line segment begin location.
end - the line segment end location.
Returns:
true true if this sector intersects the line segment, otherwise false.
Throws:
IllegalArgumentException - if either the begin location or the end location is null.

isSameSector

public boolean isSameSector(Iterable<? extends LatLon> corners)

isSector

public static boolean isSector(Iterable<? extends LatLon> corners)

isWithinLatLonLimits

public boolean isWithinLatLonLimits()

iterator

public Iterator<LatLon> iterator()
Creates an iterator over the four corners of the sector, starting with the southwest position and continuing counter-clockwise.

Specified by:
iterator in interface Iterable<LatLon>
Returns:
an iterator for the sector.

splitBoundingSectors

public static Sector[] splitBoundingSectors(Globe globe,
                                            LatLon center,
                                            double radius)
Returns an array of Sectors encompassing a circle centered at a given position, with a given radius in meters. If the geometry defined by the circle and radius spans the international dateline, this will return two sectors, one for each side of the dateline. Otherwise, this will return a single bounding sector. This returns null if the radius is zero.

Parameters:
globe - a Globe instance.
center - the circle center location.
radius - the circle radius in meters.
Returns:
the circle's bounding sectors, or null if the radius is zero.
Throws:
IllegalArgumentException - if either the globe or center is null, or if the radius is less than zero.

splitBoundingSectors

public static Sector[] splitBoundingSectors(Iterable<? extends LatLon> locations)

subdivide

public Sector[] subdivide()

subdivide

public Sector[] subdivide(int div)

toArrayDegrees

public double[] toArrayDegrees()
Returns a four element array containing the Sector's angles in degrees. The returned array is ordered as follows: minimum latitude, maximum latitude, minimum longitude, and maximum longitude.

Returns:
four-element array containing the Sector's angles.

toRectangleDegrees

public Rectangle2D toRectangleDegrees()
Returns a Rectangle2D corresponding to this Sector in degrees lat-lon coordinates where x corresponds to longitude and y to latitude.

Returns:
a Rectangle2D corresponding to this Sector in degrees lat-lon coordinates.

toString

public String toString()
Returns a string indicating the sector's angles.

Overrides:
toString in class Object
Returns:
A string indicating the sector's angles.

union

public final Sector union(Angle latitude,
                          Angle longitude)

union

public static Sector union(Iterable<? extends Sector> sectors)

union

public final Sector union(Sector that)
Returns a new sector whose angles are the extremes of the this sector and another. The new sector's minimum latitude and longitude will be the minimum of the two sectors. The new sector's maximum latitude and longitude will be the maximum of the two sectors. The sectors are assumed to be normalized to +/- 90 degrees latitude and +/- 180 degrees longitude. The result of the operation is undefined if they are not.

Parameters:
that - the sector to join with this.
Returns:
A new sector formed from the extremes of the two sectors, or this if the incoming sector is null.

union

public static Sector union(Sector sectorA,
                           Sector sectorB)

NASA World Wind