NASA World Wind

gov.nasa.worldwind.globes
Class EllipsoidalGlobe

java.lang.Object
  extended by gov.nasa.worldwind.avlist.AVListImpl
      extended by gov.nasa.worldwind.WWObjectImpl
          extended by gov.nasa.worldwind.globes.EllipsoidalGlobe
All Implemented Interfaces:
AVList, MessageListener, Extent, Globe, WWObject, PropertyChangeListener, EventListener
Direct Known Subclasses:
Earth, FlatGlobe

public class EllipsoidalGlobe
extends WWObjectImpl
implements Globe

Defines a globe modeled as an ellipsoid. This globe uses a Cartesian coordinate system in which the Y axis points to the north pole. The Z axis points to the intersection of the prime meridian and the equator, in the equatorial plane. The X axis completes a right-handed coordinate system, and is 90 degrees east of the Z axis and also in the equatorial plane. Sea level is at z = zero. By default the origin of the coordinate system lies at the center of the globe, but can be set to a different point when the globe is constructed.


Nested Class Summary
protected  class EllipsoidalGlobe.StateKey
           
 
Field Summary
protected  EGM96 egm96
           
protected  double equatorialRadius
           
protected  double es
           
protected  double polarRadius
           
 
Constructor Summary
EllipsoidalGlobe(double equatorialRadius, double polarRadius, double es, ElevationModel em)
          Create a new globe.
EllipsoidalGlobe(double equatorialRadius, double polarRadius, double es, ElevationModel em, Vec4 center)
          Create a new globe, and set the position of the globe's center.
 
Method Summary
 void applyEGMA96Offsets(String offsetsFilePath)
           
protected  Position cartesianToGeodetic(Vec4 cart)
          Compute the geographic position to corresponds to a Cartesian point.
 Matrix computeModelCoordinateOriginTransform(Angle latitude, Angle longitude, double metersElevation)
           
 Matrix computeModelCoordinateOriginTransform(Position position)
           
 Vec4 computeNorthPointingTangentAtLocation(Angle latitude, Angle longitude)
          Computes a vector tangent to this globe and pointing toward the north pole.
 Vec4 computePointFromLocation(LatLon location)
          Computes a cartesian point from a geographic location on the surface of this globe.
 Vec4 computePointFromPosition(Angle latitude, Angle longitude, double metersElevation)
          Computes a cartesian point from a latitude, longitude, and elevation.
 Vec4 computePointFromPosition(LatLon latLon, double metersElevation)
          Computes a cartesian point from a geographic location and elevation.
 Vec4 computePointFromPosition(Position position)
          Computes a cartesian point from a geographic position.
 Position computePositionFromPoint(Vec4 point)
          Computes the geographic position of a point in cartesian coordinates.
 Vec4 computeSurfaceNormalAtLocation(Angle latitude, Angle longitude)
          Returns the normal to the Globe at the specified position.
 Vec4 computeSurfaceNormalAtPoint(Vec4 point)
          Returns the normal to the Globe at the specified cartiesian point.
 Matrix computeSurfaceOrientationAtPosition(Angle latitude, Angle longitude, double metersElevation)
          Returns the cartesian transform Matrix that maps model coordinates to a local coordinate system at (latitude, longitude, metersElevation).
 Matrix computeSurfaceOrientationAtPosition(Position position)
          Returns the cartesian transform Matrix that maps model coordinates to a local coordinate system at (latitude, longitude, metersElevation).
protected  Vec4 geodeticToCartesian(Angle latitude, Angle longitude, double metersElevation)
          Maps a position to world Cartesian coordinates.
 Vec4 getCenter()
          Returns the extent's center point.
 double getDiameter()
          Returns the extent's diameter.
 double getEccentricitySquared()
          Indicates the square of this globe's eccentricity.
 double getEffectiveRadius(Plane plane)
          Computes the effective radius of the extent relative to a specified plane.
 double getElevation(Angle latitude, Angle longitude)
          Indicates the elevation at a specified location.
 ElevationModel getElevationModel()
          Indicates this globe's elevation model.
 double getElevations(Sector sector, List<? extends LatLon> latlons, double targetResolution, double[] elevations)
          Indicates the elevations of a collection of locations.
 double getEquatorialRadius()
          Indicates the radius of the globe at the equator, in meters.
 Extent getExtent()
          Indicates the spatial volume contained by this globe.
 GlobeStateKey getGlobeStateKey()
          Returns a typed state key identifying this globe's current configuration.
 GlobeStateKey getGlobeStateKey(DrawContext dc)
          Returns a typed state key identifying this globe's current configuration.
 Position getIntersectionPosition(Line line)
          Computes the intersections of this globe and a line.
 double getMaxElevation()
          Indicates the maximum elevation on this globe, in meters.
 double getMaximumRadius()
          Indicates the maximum radius on the globe.
 double[] getMinAndMaxElevations(Angle latitude, Angle longitude)
          Returns the minimum and maximum elevations at a specified location on this Globe.
 double[] getMinAndMaxElevations(Sector sector)
          Returns the minimum and maximum elevations within a specified sector on this Globe.
 double getMinElevation()
          Indicates the minimum elevation on this globe, in meters.
 double getPolarRadius()
          Indicates the radius of the globe at the poles, in meters.
 double getProjectedArea(View view)
          Computes the area in square pixels of this Extent after it is projected into the specified view's viewport.
 double getRadius()
          Returns the extent's radius.
 double getRadiusAt(Angle latitude, Angle longitude)
          Indicates the radius of the globe at a location.
 double getRadiusAt(LatLon latLon)
          Indicates this globe's radius at a specified location.
 Object getStateKey(DrawContext dc)
          Returns a state key identifying this globe's current configuration.
 Tessellator getTessellator()
          Returns this globe's current tessellator.
 Intersection[] intersect(Line line)
          Computes the intersections of this extent with line.
 Intersection[] intersect(Line line, double altitude)
          Intersects a specified line with this globe.
protected  Intersection[] intersect(Line line, double equRadius, double polRadius)
           
 Intersection[] intersect(Triangle t, double elevation)
          Intersects a specified triangle with the globe.
 boolean intersects(Frustum frustum)
          Determines whether or not this Extent intersects frustum.
 boolean intersects(Line line)
          Determines whether or not line intersects this Extent.
 boolean intersects(Plane plane)
          Calculate whether or not this Extent is intersected by plane.
 boolean isPointAboveElevation(Vec4 point, double elevation)
          Determines whether a point is above a given elevation
static ElevationModel makeElevationModel(String key, String defaultValue)
          Construct an elevation model given a key for a configuration source and the source's default value.
 void setElevationModel(ElevationModel elevationModel)
          Specifies this globe's elevation model.
 void setTessellator(Tessellator tessellator)
          Specifies this globe's tessellator.
 SectorGeometryList tessellate(DrawContext dc)
          Tessellate this globe for the currently visible region.
 
Methods inherited from class gov.nasa.worldwind.WWObjectImpl
onMessage, propertyChange
 
Methods inherited from class gov.nasa.worldwind.avlist.AVListImpl
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getBooleanValue, getBooleanValue, getChangeSupport, getDoubleValue, getDoubleValue, getEntries, getIntegerValue, getIntegerValue, getLongValue, getLongValue, getRestorableStateForAVPair, getStringValue, getStringValue, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface gov.nasa.worldwind.avlist.AVList
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
 
Methods inherited from interface java.beans.PropertyChangeListener
propertyChange
 
Methods inherited from interface gov.nasa.worldwind.event.MessageListener
onMessage
 

Field Detail

egm96

protected EGM96 egm96

equatorialRadius

protected final double equatorialRadius

es

protected final double es

polarRadius

protected final double polarRadius
Constructor Detail

EllipsoidalGlobe

public EllipsoidalGlobe(double equatorialRadius,
                        double polarRadius,
                        double es,
                        ElevationModel em)
Create a new globe. The globe's center point will be (0, 0, 0). The globe will be tessellated using tessellator defined by the AVKey.TESSELLATOR_CLASS_NAME configuration parameter.

Parameters:
equatorialRadius - Radius of the globe at the equator.
polarRadius - Radius of the globe at the poles.
es - Square of the globe's eccentricity.
em - Elevation model. May be null.

EllipsoidalGlobe

public EllipsoidalGlobe(double equatorialRadius,
                        double polarRadius,
                        double es,
                        ElevationModel em,
                        Vec4 center)
Create a new globe, and set the position of the globe's center. The globe will be tessellated using tessellator defined by the AVKey.TESSELLATOR_CLASS_NAME configuration parameter.

Parameters:
equatorialRadius - Radius of the globe at the equator.
polarRadius - Radius of the globe at the poles.
es - Square of the globe's eccentricity.
em - Elevation model. May be null.
center - Cartesian coordinates of the globe's center point.
Method Detail

applyEGMA96Offsets

public void applyEGMA96Offsets(String offsetsFilePath)
                        throws IOException
Throws:
IOException

cartesianToGeodetic

protected Position cartesianToGeodetic(Vec4 cart)
Compute the geographic position to corresponds to a Cartesian point.

Parameters:
cart - Cartesian point to convert to geographic.
Returns:
The geographic position of cart.
See Also:
geodeticToCartesian(gov.nasa.worldwind.geom.Angle, gov.nasa.worldwind.geom.Angle, double)

computeModelCoordinateOriginTransform

public Matrix computeModelCoordinateOriginTransform(Angle latitude,
                                                    Angle longitude,
                                                    double metersElevation)
Specified by:
computeModelCoordinateOriginTransform in interface Globe
See Also:
Globe.computeSurfaceOrientationAtPosition(gov.nasa.worldwind.geom.Angle, gov.nasa.worldwind.geom.Angle, double).

computeModelCoordinateOriginTransform

public Matrix computeModelCoordinateOriginTransform(Position position)
Specified by:
computeModelCoordinateOriginTransform in interface Globe
See Also:
Globe.computeSurfaceOrientationAtPosition(gov.nasa.worldwind.geom.Position)

computeNorthPointingTangentAtLocation

public Vec4 computeNorthPointingTangentAtLocation(Angle latitude,
                                                  Angle longitude)
Description copied from interface: Globe
Computes a vector tangent to this globe and pointing toward the north pole.

Specified by:
computeNorthPointingTangentAtLocation in interface Globe
Parameters:
latitude - Latitude of the location at which to compute the tangent vector.
longitude - Longitude of the location at which to compute the tangent vector.
Returns:
A vector tangent to this globe at (latitude, longitude), and pointing toward the north pole of this globe.

computePointFromLocation

public Vec4 computePointFromLocation(LatLon location)
Description copied from interface: Globe
Computes a cartesian point from a geographic location on the surface of this globe.

Specified by:
computePointFromLocation in interface Globe
Parameters:
location - Geographic location on the surface of the globe to convert to cartesian.
Returns:
The cartesian point that corresponds to the specified geographic location.

computePointFromPosition

public Vec4 computePointFromPosition(Angle latitude,
                                     Angle longitude,
                                     double metersElevation)
Description copied from interface: Globe
Computes a cartesian point from a latitude, longitude, and elevation.

Specified by:
computePointFromPosition in interface Globe
Parameters:
latitude - Latitude of the location to convert to cartesian.
longitude - Longitude of the location to convert to cartesian.
metersElevation - Elevation, in meters, of the geographic position to convert to cartesian.
Returns:
The cartesian point that corresponds to the specified geographic position.

computePointFromPosition

public Vec4 computePointFromPosition(LatLon latLon,
                                     double metersElevation)
Description copied from interface: Globe
Computes a cartesian point from a geographic location and elevation.

Specified by:
computePointFromPosition in interface Globe
Parameters:
latLon - Geographic location to convert to cartesian.
metersElevation - Elevation, in meters, of the geographic position to convert to cartesian.
Returns:
The cartesian point that corresponds to the specified geographic position.

computePointFromPosition

public Vec4 computePointFromPosition(Position position)
Description copied from interface: Globe
Computes a cartesian point from a geographic position.

Specified by:
computePointFromPosition in interface Globe
Parameters:
position - Geographic position to convert to cartesian. The position may include elevation above or below the globe's surface.
Returns:
The cartesian point that corresponds to the specified geographic position.

computePositionFromPoint

public Position computePositionFromPoint(Vec4 point)
Description copied from interface: Globe
Computes the geographic position of a point in cartesian coordinates.

Specified by:
computePositionFromPoint in interface Globe
Parameters:
point - Point of which to find the geographic position.
Returns:
The geographic position of the specified point.

computeSurfaceNormalAtLocation

public Vec4 computeSurfaceNormalAtLocation(Angle latitude,
                                           Angle longitude)
Returns the normal to the Globe at the specified position.

Specified by:
computeSurfaceNormalAtLocation in interface Globe
Parameters:
latitude - the latitude of the position.
longitude - the longitude of the position.
Returns:
the Globe normal at the specified position.

computeSurfaceNormalAtPoint

public Vec4 computeSurfaceNormalAtPoint(Vec4 point)
Returns the normal to the Globe at the specified cartiesian point.

Specified by:
computeSurfaceNormalAtPoint in interface Globe
Parameters:
point - the cartesian point.
Returns:
the Globe normal at the specified point.

computeSurfaceOrientationAtPosition

public Matrix computeSurfaceOrientationAtPosition(Angle latitude,
                                                  Angle longitude,
                                                  double metersElevation)
Returns the cartesian transform Matrix that maps model coordinates to a local coordinate system at (latitude, longitude, metersElevation). The X axis is mapped to the vector tangent to the globe and pointing East. The Y axis is mapped to the vector tangent to the Globe and pointing to the North Pole. The Z axis is mapped to the Globe normal at (latitude, longitude, metersElevation). The origin is mapped to the cartesian position of (latitude, longitude, metersElevation).

Specified by:
computeSurfaceOrientationAtPosition in interface Globe
Parameters:
latitude - the latitude of the position.
longitude - the longitude of the position.
metersElevation - the number of meters above or below mean sea level.
Returns:
the cartesian transform Matrix that maps model coordinates to the local coordinate system at the specified position.

computeSurfaceOrientationAtPosition

public Matrix computeSurfaceOrientationAtPosition(Position position)
Returns the cartesian transform Matrix that maps model coordinates to a local coordinate system at (latitude, longitude, metersElevation). They X axis is mapped to the vector tangent to the globe and pointing East. The Y axis is mapped to the vector tangent to the Globe and pointing to the North Pole. The Z axis is mapped to the Globe normal at (latitude, longitude, metersElevation). The origin is mapped to the cartesian position of (latitude, longitude, metersElevation).

Specified by:
computeSurfaceOrientationAtPosition in interface Globe
Parameters:
position - the latitude, longitude, and number of meters above or below mean sea level.
Returns:
the cartesian transform Matrix that maps model coordinates to the local coordinate system at the specified position.

geodeticToCartesian

protected Vec4 geodeticToCartesian(Angle latitude,
                                   Angle longitude,
                                   double metersElevation)
Maps a position to world Cartesian coordinates. The Y axis points to the north pole. The Z axis points to the intersection of the prime meridian and the equator, in the equatorial plane. The X axis completes a right-handed coordinate system, and is 90 degrees east of the Z axis and also in the equatorial plane. Sea level is at z = zero.

Parameters:
latitude - the latitude of the position.
longitude - the longitude of the position.
metersElevation - the number of meters above or below mean sea level.
Returns:
The Cartesian point corresponding to the input position.

getCenter

public Vec4 getCenter()
Description copied from interface: Extent
Returns the extent's center point.

Specified by:
getCenter in interface Extent
Returns:
the extent's center point.

getDiameter

public double getDiameter()
Description copied from interface: Extent
Returns the extent's diameter. The computation of the diameter depends on the implementing class. See the documentation for the individual classes to determine how they compute a diameter.

Specified by:
getDiameter in interface Extent
Returns:
the extent's diameter.

getEccentricitySquared

public double getEccentricitySquared()
Description copied from interface: Globe
Indicates the square of this globe's eccentricity. Eccentricity is a measure of how the equatorial and polar radii are related.

Specified by:
getEccentricitySquared in interface Globe
Returns:
The square of this globe's eccentricity.

getEffectiveRadius

public double getEffectiveRadius(Plane plane)
Description copied from interface: Extent
Computes the effective radius of the extent relative to a specified plane.

Specified by:
getEffectiveRadius in interface Extent
Parameters:
plane - the plane.
Returns:
the effective radius, or 0 if the plane is null.

getElevation

public double getElevation(Angle latitude,
                           Angle longitude)
Description copied from interface: Globe
Indicates the elevation at a specified location. If the elevation at the specified location is the elevation model's missing data signal, or if the location specified is outside the elevation model's coverage area, the elevation model's missing data replacement value is returned.

The elevation returned from this method is the best available in memory. If no elevation is in memory, the elevation model's minimum extreme elevation at the location is returned. Local disk caches are not consulted.

Specified by:
getElevation in interface Globe
Parameters:
latitude - the latitude of the location at which to determine elevation.
longitude - the longitude of the location at which to determine elevation.
Returns:
The elevation corresponding to the specified location, or the elevation model's missing-data replacement value if there is no elevation for the given location. Returns zero if no elevation model is available.
See Also:
Globe.getElevationModel()

getElevationModel

public ElevationModel getElevationModel()
Description copied from interface: Globe
Indicates this globe's elevation model.

Specified by:
getElevationModel in interface Globe
Returns:
this globe's elevation model.

getElevations

public double getElevations(Sector sector,
                            List<? extends LatLon> latlons,
                            double targetResolution,
                            double[] elevations)
Description copied from interface: Globe
Indicates the elevations of a collection of locations. Replaces any elevation values corresponding to the missing data signal with the elevation model's missing data replacement value. If a location within the elevation model's coverage area cannot currently be determined, the elevation model's minimum extreme elevation for that location is returned in the output buffer. If a location is outside the elevation model's coverage area, the output buffer for that location is not modified; it retains the buffer's original value.

Specified by:
getElevations in interface Globe
Parameters:
sector - the sector in question.
latlons - the locations to return elevations for. If a location is null, the output buffer for that location is not modified.
targetResolution - the desired horizontal resolution, in radians, of the raster or other elevation sample from which elevations are drawn. (To compute radians from a distance, divide the distance by the radius of the globe, ensuring that both the distance and the radius are in the same units.)
elevations - an array in which to place the returned elevations. The array must be pre-allocated and contain at least as many elements as the list of locations.
Returns:
the resolution achieved, in radians, or Double.MAX_VALUE if individual elevations cannot be determined for all of the locations. Returns zero if an elevation model is not available.
See Also:
Globe.getElevationModel()

getEquatorialRadius

public double getEquatorialRadius()
Description copied from interface: Globe
Indicates the radius of the globe at the equator, in meters.

Specified by:
getEquatorialRadius in interface Globe
Returns:
The radius at the equator, in meters.

getExtent

public Extent getExtent()
Description copied from interface: Globe
Indicates the spatial volume contained by this globe.

Specified by:
getExtent in interface Globe
Returns:
An Extent object representing the volume of space enclosed by this globe.

getGlobeStateKey

public GlobeStateKey getGlobeStateKey()
Description copied from interface: Globe
Returns a typed state key identifying this globe's current configuration. Can be used to subsequently determine whether the globe's configuration has changed.

Specified by:
getGlobeStateKey in interface Globe
Returns:
a state key for the globe's current configuration.

getGlobeStateKey

public GlobeStateKey getGlobeStateKey(DrawContext dc)
Description copied from interface: Globe
Returns a typed state key identifying this globe's current configuration. Can be used to subsequently determine whether the globe's configuration has changed.

Specified by:
getGlobeStateKey in interface Globe
Parameters:
dc - the current draw context.
Returns:
a state key for the globe's current configuration.

getIntersectionPosition

public Position getIntersectionPosition(Line line)
Description copied from interface: Globe
Computes the intersections of this globe and a line.

Specified by:
getIntersectionPosition in interface Globe
Parameters:
line - the line with which to intersect this globe.
Returns:
the geographic position of the intersection of this globe and specified line. If there are multiple intersections the intersection nearest to the line's origin is returned. The intersection may be a tangent. Returns null if the line does not intersect this globe.

getMaxElevation

public double getMaxElevation()
Description copied from interface: Globe
Indicates the maximum elevation on this globe, in meters.

Specified by:
getMaxElevation in interface Globe
Returns:
The maximum elevation, or zero if the maximum elevation cannot be determined.

getMaximumRadius

public double getMaximumRadius()
Description copied from interface: Globe
Indicates the maximum radius on the globe.

Specified by:
getMaximumRadius in interface Globe
Returns:
The maximum radius, in meters.

getMinAndMaxElevations

public double[] getMinAndMaxElevations(Angle latitude,
                                       Angle longitude)
Description copied from interface: Globe
Returns the minimum and maximum elevations at a specified location on this Globe. This returns a two-element array filled with zero if this Globe has no elevation model.

Specified by:
getMinAndMaxElevations in interface Globe
Parameters:
latitude - the latitude of the location in question.
longitude - the longitude of the location in question.
Returns:
A two-element double array indicating the minimum and maximum elevations at the specified location, respectively. These values are the global minimum and maximum if the local minimum and maximum values are currently unknown, or zero if this Globe has no elevation model.

getMinAndMaxElevations

public double[] getMinAndMaxElevations(Sector sector)
Description copied from interface: Globe
Returns the minimum and maximum elevations within a specified sector on this Globe. This returns a two-element array filled with zero if this Globe has no elevation model.

Specified by:
getMinAndMaxElevations in interface Globe
Parameters:
sector - the sector in question.
Returns:
A two-element double array indicating the sector's minimum and maximum elevations, respectively. These elements are the global minimum and maximum if the local minimum and maximum values are currently unknown, or zero if this Globe has no elevation model.

getMinElevation

public double getMinElevation()
Description copied from interface: Globe
Indicates the minimum elevation on this globe, in meters.

Specified by:
getMinElevation in interface Globe
Returns:
The minimum elevation, or zero if the minimum elevation cannot be determined.

getPolarRadius

public double getPolarRadius()
Description copied from interface: Globe
Indicates the radius of the globe at the poles, in meters.

Specified by:
getPolarRadius in interface Globe
Returns:
The radius at the poles, in meters.

getProjectedArea

public double getProjectedArea(View view)
Computes the area in square pixels of this Extent after it is projected into the specified view's viewport. The returned value is the screen area that this Extent covers in the infinite plane defined by the view's viewport. This area is not limited to the size of the view's viewport, and portions of this Extent are not clipped by the view's frustum.

This returns Double.POSITIVE_INFINITY if the view's eye point is inside this Extent, or if any portion of this Extent is behind the eye point. In either case, this Extent has no finite projection on the view.

Specified by:
getProjectedArea in interface Extent
Parameters:
view - the View for which to compute a projected screen area.
Returns:
the projected screen area of this Extent in square pixels, or Double.POSITIVE_INFINITY if the view's eye point is inside this Extent or part of this Extent is behind the view's eye point.

getRadius

public double getRadius()
Description copied from interface: Extent
Returns the extent's radius. The computation of the radius depends on the implementing class. See the documentation for the individual classes to determine how they compute a radius.

Specified by:
getRadius in interface Extent
Returns:
the extent's radius.

getRadiusAt

public double getRadiusAt(Angle latitude,
                          Angle longitude)
Description copied from interface: Globe
Indicates the radius of the globe at a location.

Specified by:
getRadiusAt in interface Globe
Parameters:
latitude - Latitude of the location at which to determine radius.
longitude - Longitude of the location at which to determine radius.
Returns:
The radius of the globe at the specified location, in meters.

getRadiusAt

public double getRadiusAt(LatLon latLon)
Description copied from interface: Globe
Indicates this globe's radius at a specified location.

Specified by:
getRadiusAt in interface Globe
Parameters:
latLon - the location of interest.
Returns:
the globe's radius at that location.

getStateKey

public Object getStateKey(DrawContext dc)
Description copied from interface: Globe
Returns a state key identifying this globe's current configuration. Can be used to subsequently determine whether the globe's configuration has changed.

Specified by:
getStateKey in interface Globe
Parameters:
dc - the current draw context.
Returns:
a state key for the globe's current configuration.

getTessellator

public Tessellator getTessellator()
Description copied from interface: Globe
Returns this globe's current tessellator.

Specified by:
getTessellator in interface Globe
Returns:
the globe's current tessellator.

intersect

public Intersection[] intersect(Line line)
Description copied from interface: Extent
Computes the intersections of this extent with line. The returned array may be either null or of zero length if no intersections are discovered. It does not contain null elements. Tangential intersections are marked as such. line is considered to have infinite length in both directions.

Specified by:
intersect in interface Extent
Parameters:
line - the Line with which to intersect this Extent.
Returns:
an array of intersections representing all the points where line enters or leave this Extent.

intersect

public Intersection[] intersect(Line line,
                                double altitude)
Description copied from interface: Globe
Intersects a specified line with this globe. Only the ellipsoid itself is considered; terrain elevations are not incorporated.

Specified by:
intersect in interface Globe
Parameters:
line - the line to intersect.
altitude - a distance in meters to expand the globe's equatorial and polar radii prior to performing the intersection.
Returns:
the intersection points, or null if no intersection occurs or the line is null.

intersect

protected Intersection[] intersect(Line line,
                                   double equRadius,
                                   double polRadius)

intersect

public Intersection[] intersect(Triangle t,
                                double elevation)
Description copied from interface: Globe
Intersects a specified triangle with the globe. Only the ellipsoid itself is considered; terrain elevations are not incorporated.

Specified by:
intersect in interface Globe
Parameters:
t - the triangle to intersect.
elevation - a distance in meters to expand the globe's equatorial and polar radii prior to performing the intersection.
Returns:
the intersection points, or null if no intersection occurs or triangle is null.

intersects

public boolean intersects(Frustum frustum)
Description copied from interface: Extent
Determines whether or not this Extent intersects frustum. Returns true if any part of these two objects intersect, including the case where either object wholly contains the other, false otherwise.

Specified by:
intersects in interface Extent
Parameters:
frustum - the Frustum with which to test for intersection.
Returns:
true if there is an intersection, false otherwise.

intersects

public boolean intersects(Line line)
Description copied from interface: Extent
Determines whether or not line intersects this Extent. This method may be faster than checking the size of the array returned by intersect(Line). Implementing methods must ensure that this method returns true if and only if intersect(Line) returns a non-null array containing at least one element.

Specified by:
intersects in interface Extent
Parameters:
line - the Line with which to test for intersection.
Returns:
true if an intersection is found, false otherwise.

intersects

public boolean intersects(Plane plane)
Description copied from interface: Extent
Calculate whether or not this Extent is intersected by plane.

Specified by:
intersects in interface Extent
Parameters:
plane - the Plane with which to test for intersection.
Returns:
true if plane is found to intersect this Extent.

isPointAboveElevation

public boolean isPointAboveElevation(Vec4 point,
                                     double elevation)
Determines whether a point is above a given elevation

Specified by:
isPointAboveElevation in interface Globe
Parameters:
point - the Vec4 point to test.
elevation - the elevation to test for.
Returns:
true if the given point is above the given elevation.

makeElevationModel

public static ElevationModel makeElevationModel(String key,
                                                String defaultValue)
Construct an elevation model given a key for a configuration source and the source's default value.

Parameters:
key - the key identifying the configuration property in Configuration.
defaultValue - the default value of the property to use if it's not found in Configuration.
Returns:
a new elevation model configured according to the configuration source.

setElevationModel

public void setElevationModel(ElevationModel elevationModel)
Description copied from interface: Globe
Specifies this globe's elevation model.

Specified by:
setElevationModel in interface Globe
Parameters:
elevationModel - this globe's elevation model. May be null to indicate no elevation model.

setTessellator

public void setTessellator(Tessellator tessellator)
Description copied from interface: Globe
Specifies this globe's tessellator.

Specified by:
setTessellator in interface Globe
Parameters:
tessellator - the new tessellator. Specify null to use the default tessellator.

tessellate

public SectorGeometryList tessellate(DrawContext dc)
Description copied from interface: Globe
Tessellate this globe for the currently visible region.

Specified by:
tessellate in interface Globe
Parameters:
dc - the current draw context.
Returns:
the tessellation, or null if the tessellation failed or the draw context identifies no visible region.

NASA World Wind