NASA World Wind

gov.nasa.worldwind.globes
Class FlatGlobe

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

public class FlatGlobe
extends EllipsoidalGlobe

Defines a Globe represented as a projection onto a plane. The projection type is modifiable.


Nested Class Summary
 
Nested classes/interfaces inherited from class gov.nasa.worldwind.globes.EllipsoidalGlobe
EllipsoidalGlobe.StateKey
 
Field Summary
static String PROJECTION_LAT_LON
           
static String PROJECTION_MERCATOR
           
static String PROJECTION_MODIFIED_SINUSOIDAL
           
static String PROJECTION_SINUSOIDAL
           
 
Fields inherited from class gov.nasa.worldwind.globes.EllipsoidalGlobe
equatorialRadius, es, polarRadius
 
Fields inherited from class gov.nasa.worldwind.avlist.AVListImpl
changeSupport
 
Constructor Summary
FlatGlobe(double equatorialRadius, double polarRadius, double es, ElevationModel em)
           
 
Method Summary
protected  Position cartesianToGeodetic(Vec4 cart)
           
 Cylinder computeBoundingCylinder(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.
 Vec4 computeNorthPointingTangentAtLocation(Angle latitude, Angle longitude)
           
 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 computeTransformToPosition(Angle latitude, Angle longitude, double metersElevation)
          Returns the cartesian transform Matrix that maps coordinates to the local coordinate system at (latitude, longitude, metersElevation).
 Matrix computeTransformToPosition(Position position)
          Returns the cartesian transform Matrix that maps coordinates to the local coordinate system at (latitude, longitude, metersElevation).
protected  Vec4 geodeticToCartesian(Angle latitude, Angle longitude, double metersElevation)
          Maps a position to a flat world Cartesian coordinates.
 double getElevation(Angle latitude, Angle longitude)
           
 String getProjection()
           
 double getRadiusAt(Angle latitude, Angle longitude)
           
 double getRadiusAt(LatLon latLon)
           
 Object getStateKey(DrawContext dc)
           
protected  Intersection[] intersect(Line line, double equRadius, double polarRadius)
           
 boolean intersects(Line line)
          Calculate 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
 void setProjection(String projection)
           
 
Methods inherited from class gov.nasa.worldwind.globes.EllipsoidalGlobe
computeBoundingCylinder, computeBoundsFromSectorLatitudeRange, computeBoundsFromSectorQuadrilateral, computeBoundsFromSectorVertices, computePointFromPosition, computePointFromPosition, computePositionFromPoint, getCenter, getDiameter, getEccentricitySquared, getElevationModel, getElevations, getEquatorialRadius, getExtent, getIntersectionPosition, getMaxElevation, getMaximumRadius, getMinAndMaxElevations, getMinElevation, getPolarRadius, getRadius, getTessellator, intersect, intersect, intersect, intersects, setElevationModel, setTessellator, tessellate
 
Methods inherited from class gov.nasa.worldwind.WWObjectImpl
propertyChange
 
Methods inherited from class gov.nasa.worldwind.avlist.AVListImpl
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getDoubleValue, getDoubleValue, getEntries, getIntegerValue, getIntegerValue, getLongValue, getLongValue, 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
 

Field Detail

PROJECTION_LAT_LON

public static final String PROJECTION_LAT_LON
See Also:
Constant Field Values

PROJECTION_MERCATOR

public static final String PROJECTION_MERCATOR
See Also:
Constant Field Values

PROJECTION_MODIFIED_SINUSOIDAL

public static final String PROJECTION_MODIFIED_SINUSOIDAL
See Also:
Constant Field Values

PROJECTION_SINUSOIDAL

public static final String PROJECTION_SINUSOIDAL
See Also:
Constant Field Values
Constructor Detail

FlatGlobe

public FlatGlobe(double equatorialRadius,
                 double polarRadius,
                 double es,
                 ElevationModel em)
Method Detail

cartesianToGeodetic

protected Position cartesianToGeodetic(Vec4 cart)
Overrides:
cartesianToGeodetic in class EllipsoidalGlobe

computeBoundingCylinder

public Cylinder computeBoundingCylinder(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.

Specified by:
computeBoundingCylinder in interface Globe
Overrides:
computeBoundingCylinder in class EllipsoidalGlobe
Parameters:
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

computeNorthPointingTangentAtLocation

public Vec4 computeNorthPointingTangentAtLocation(Angle latitude,
                                                  Angle longitude)
Specified by:
computeNorthPointingTangentAtLocation in interface Globe
Overrides:
computeNorthPointingTangentAtLocation in class EllipsoidalGlobe

computeSurfaceNormalAtLocation

public Vec4 computeSurfaceNormalAtLocation(Angle latitude,
                                           Angle longitude)
Description copied from class: EllipsoidalGlobe
Returns the normal to the Globe at the specified position.

Specified by:
computeSurfaceNormalAtLocation in interface Globe
Overrides:
computeSurfaceNormalAtLocation in class EllipsoidalGlobe
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)
Description copied from class: EllipsoidalGlobe
Returns the normal to the Globe at the specified cartiesian point.

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

computeTransformToPosition

public Matrix computeTransformToPosition(Angle latitude,
                                         Angle longitude,
                                         double metersElevation)
Description copied from class: EllipsoidalGlobe
Returns the cartesian transform Matrix that maps coordinates to the local coordinate system at (latitude, longitude, metersElevation). They X axis will mapped to the vector tangent to the globe and pointing East. The Y axis will mapped to the vector tangent to the Globe and pointing to the North Pole. The Z axis will be mapped to the Globe normal at (latitude, longitude, metersElevation). The origin will be mapped to the cartesian position of (latitude, longitude, metersElevation).

Specified by:
computeTransformToPosition in interface Globe
Overrides:
computeTransformToPosition in class EllipsoidalGlobe
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 coordinates to the local coordinates at the specified position.

computeTransformToPosition

public Matrix computeTransformToPosition(Position position)
Description copied from class: EllipsoidalGlobe
Returns the cartesian transform Matrix that maps coordinates to the local coordinate system at (latitude, longitude, metersElevation). They X axis will mapped to the vector tangent to the globe and pointing East. The Y axis will mapped to the vector tangent to the Globe and pointing to the North Pole. The Z axis will be mapped to the Globe normal at (latitude, longitude, metersElevation). The origin will be mapped to the cartesian position of (latitude, longitude, metersElevation).

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

geodeticToCartesian

protected Vec4 geodeticToCartesian(Angle latitude,
                                   Angle longitude,
                                   double metersElevation)
Maps a position to a flat world Cartesian coordinates. The world plane is located at the origin and has UNIT-Z as normal. The Y axis points to the north pole. The Z axis points up. The X axis completes a right-handed coordinate system, and points east. Latitude and longitude zero are at the origine on y and x respectively. Sea level is at z = zero.

Overrides:
geodeticToCartesian in class EllipsoidalGlobe
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.

getElevation

public double getElevation(Angle latitude,
                           Angle longitude)
Specified by:
getElevation in interface Globe
Overrides:
getElevation in class EllipsoidalGlobe

getProjection

public String getProjection()

getRadiusAt

public double getRadiusAt(Angle latitude,
                          Angle longitude)
Specified by:
getRadiusAt in interface Globe
Overrides:
getRadiusAt in class EllipsoidalGlobe

getRadiusAt

public double getRadiusAt(LatLon latLon)
Specified by:
getRadiusAt in interface Globe
Overrides:
getRadiusAt in class EllipsoidalGlobe

getStateKey

public Object getStateKey(DrawContext dc)
Specified by:
getStateKey in interface Globe
Overrides:
getStateKey in class EllipsoidalGlobe

intersect

protected Intersection[] intersect(Line line,
                                   double equRadius,
                                   double polarRadius)
Overrides:
intersect in class EllipsoidalGlobe

intersects

public boolean intersects(Line line)
Description copied from interface: Extent
Calculate whether or not line intersects this Extent. This method may be faster than checking the size of the arary 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
Overrides:
intersects in class EllipsoidalGlobe
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
Overrides:
intersects in class EllipsoidalGlobe
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
Overrides:
isPointAboveElevation in class EllipsoidalGlobe
Parameters:
point - the Vec4 point to test.
elevation - the elevation to test for.
Returns:
true if the given point is above the given elevation.

setProjection

public void setProjection(String projection)

NASA World Wind