de.fhg.igd.earth.model.input.shapefile
Class ProjMath

java.lang.Object
  extended byde.fhg.igd.earth.model.input.shapefile.ProjMath

public final class ProjMath
extends Object

Math functions used by projection code. Title : Earth Copyright : Copyright (c) 2001 Organisation : IGD FhG

Version:
: 1.0
Author:
: Werner Beutel

Field Summary
static double DATELINE_D
          Dateline longitude in radians.
static float DATELINE_F
          Dateline longitude in radians.
static double LON_RANGE_D
          Longitude range in radians.
static float LON_RANGE_F
          Longitude range in radians.
static double NORTH_POLE_D
          North pole latitude in radians.
static float NORTH_POLE_F
          North pole latitude in radians.
static double SOUTH_POLE_D
          South pole latitude in radians.
static float SOUTH_POLE_F
          South pole latitude in radians.
 
Constructor Summary
private ProjMath()
           
 
Method Summary
static double[] arrayDegToRad(double[] degs)
          Converts an array of decimal degrees double lat/lons to double radians in place.
static float[] arrayDegToRad(float[] degs)
          Converts an array of decimal degrees float lat/lons to float radians in place.
static double[] arrayRadToDeg(double[] rads)
          Converts an array of radian double lat/lons to decimal degrees in place.
static float[] arrayRadToDeg(float[] rads)
          Converts an array of radian float lat/lons to decimal degrees in place.
static long DEG_TO_SC(double deg)
          Convert between decimal degrees and scoords.
static double degToRad(double deg)
          Convert degrees to radians.
static float degToRad(float deg)
          Convert degrees to radians.
static float geocentric_latitude(float lat, float flat)
          Calculate the geocentric latitude given a geographic latitude.
static float geographic_latitude(float lat, float flat)
          Calculate the geographic latitude given a geocentric latitude.
static int hashLatLon(float lat, float lon)
          Generate a hashCode value for a lat/lon pair.
static float lonDistance(float lon1, float lon2)
          Calculate the shortest arc distance between two lons.
static double normalize_latitude(double lat, double epsilon)
          Normalizes radian latitude.
static float normalize_latitude(float lat, float epsilon)
          Normalizes radian latitude.
private static double qint_new(double x)
           
private static double qint_old(double x)
           
static double qint(double x)
          Rounds the quantity away from 0.
static double radToDeg(double rad)
          Convert radians to degrees.
static float radToDeg(float rad)
          Convert radians to degrees.
static double roundAdjust(double x)
          rounds the quantity away from 0.
static double SC_TO_DEG(int sc)
          Convert between decimal degrees and scoords.
static float sphericalUnitsToDeg(float u, float uCircumference)
          Converts units (km, nm, miles, etc) to decimal degrees for a spherical planet.
static float sphericalUnitsToRad(float u, float uCircumference)
          Converts units (km, nm, miles, etc) to arc radians for a spherical planet.
static double wrap_longitude(double lon)
          Sets radian longitude to something sane.
static float wrap_longitude(float lon)
          Sets radian longitude to something sane.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NORTH_POLE_F

public static final transient float NORTH_POLE_F
North pole latitude in radians.

See Also:
Constant Field Values

SOUTH_POLE_F

public static final transient float SOUTH_POLE_F
South pole latitude in radians.

See Also:
Constant Field Values

NORTH_POLE_D

public static final transient double NORTH_POLE_D
North pole latitude in radians.

See Also:
Constant Field Values

SOUTH_POLE_D

public static final transient double SOUTH_POLE_D
South pole latitude in radians.

See Also:
Constant Field Values

DATELINE_F

public static final transient float DATELINE_F
Dateline longitude in radians.

See Also:
Constant Field Values

DATELINE_D

public static final transient double DATELINE_D
Dateline longitude in radians.

See Also:
Constant Field Values

LON_RANGE_F

public static final transient float LON_RANGE_F
Longitude range in radians.

See Also:
Constant Field Values

LON_RANGE_D

public static final transient double LON_RANGE_D
Longitude range in radians.

See Also:
Constant Field Values
Constructor Detail

ProjMath

private ProjMath()
Method Detail

roundAdjust

public static final double roundAdjust(double x)
rounds the quantity away from 0.

Parameters:
x - in value
Returns:
double
See Also:
qint(double)

qint

public static final double qint(double x)
Rounds the quantity away from 0.

Parameters:
x - value
Returns:
double

qint_old

private static final double qint_old(double x)

qint_new

private static final double qint_new(double x)

lonDistance

public static final float lonDistance(float lon1,
                                      float lon2)
Calculate the shortest arc distance between two lons.

Parameters:
lon1 - radians
lon2 - radians
Returns:
float distance

DEG_TO_SC

public static final long DEG_TO_SC(double deg)
Convert between decimal degrees and scoords.

Parameters:
deg - degrees
Returns:
long scoords

SC_TO_DEG

public static final double SC_TO_DEG(int sc)
Convert between decimal degrees and scoords.

Returns:
double decimal degrees

radToDeg

public static final double radToDeg(double rad)
Convert radians to degrees.

Parameters:
rad - radians
Returns:
double decimal degrees

radToDeg

public static final float radToDeg(float rad)
Convert radians to degrees.

Parameters:
rad - radians
Returns:
float decimal degrees

degToRad

public static final double degToRad(double deg)
Convert degrees to radians.

Parameters:
deg - degrees
Returns:
double radians

degToRad

public static final float degToRad(float deg)
Convert degrees to radians.

Parameters:
deg - degrees
Returns:
float radians

hashLatLon

public static final int hashLatLon(float lat,
                                   float lon)
Generate a hashCode value for a lat/lon pair.

Parameters:
lat - latitude
lon - longitude
Returns:
int hashcode

arrayDegToRad

public static final float[] arrayDegToRad(float[] degs)
Converts an array of decimal degrees float lat/lons to float radians in place.

Parameters:
degs - float[] lat/lons in decimal degrees
Returns:
float[] lat/lons in radians

arrayRadToDeg

public static final float[] arrayRadToDeg(float[] rads)
Converts an array of radian float lat/lons to decimal degrees in place.

Parameters:
rads - float[] lat/lons in radians
Returns:
float[] lat/lons in decimal degrees

arrayDegToRad

public static final double[] arrayDegToRad(double[] degs)
Converts an array of decimal degrees double lat/lons to double radians in place.

Parameters:
degs - double[] lat/lons in decimal degrees
Returns:
double[] lat/lons in radians

arrayRadToDeg

public static final double[] arrayRadToDeg(double[] rads)
Converts an array of radian double lat/lons to decimal degrees in place.

Parameters:
rads - double[] lat/lons in radians
Returns:
double[] lat/lons in decimal degrees

normalize_latitude

public static final float normalize_latitude(float lat,
                                             float epsilon)
Normalizes radian latitude. Normalizes latitude if at or exceeds epsilon distance from a pole.

Parameters:
lat - float latitude in radians
epsilon - epsilon (>= 0) radians distance from pole
Returns:
float latitude (-PI/2 <= phi <= PI/2)
See Also:
com.bbn.openmap.proj.Proj#normalize_latitude(float), com.bbn.openmap.LatLonPoint#normalize_latitude(float)

normalize_latitude

public static final double normalize_latitude(double lat,
                                              double epsilon)
Normalizes radian latitude. Normalizes latitude if at or exceeds epsilon distance from a pole.

Parameters:
lat - double latitude in radians
epsilon - epsilon (>= 0) radians distance from pole
Returns:
double latitude (-PI/2 <= phi <= PI/2)
See Also:
com.bbn.openmap.proj.Proj#normalize_latitude(float), com.bbn.openmap.LatLonPoint#normalize_latitude(float)

wrap_longitude

public static final float wrap_longitude(float lon)
Sets radian longitude to something sane.

Parameters:
lon - float longitude in radians
Returns:
float longitude (-PI <= lambda < PI)
See Also:
com.bbn.openmap.LatLonPoint#wrap_longitude(float)

wrap_longitude

public static final double wrap_longitude(double lon)
Sets radian longitude to something sane.

Parameters:
lon - double longitude in radians
Returns:
double longitude (-PI <= lambda < PI)
See Also:
wrap_longitude(float)

sphericalUnitsToDeg

public static final float sphericalUnitsToDeg(float u,
                                              float uCircumference)
Converts units (km, nm, miles, etc) to decimal degrees for a spherical planet. This does not check for arc distances > 1/2 planet circumference, which are better represented as (2pi - calculated arc).

Parameters:
u - units float value
uCircumference - units circumference of planet
Returns:
float decimal degrees

sphericalUnitsToRad

public static final float sphericalUnitsToRad(float u,
                                              float uCircumference)
Converts units (km, nm, miles, etc) to arc radians for a spherical planet. This does not check for arc distances > 1/2 planet circumference, which are better represented as (2pi - calculated arc).

Parameters:
u - units float value
uCircumference - units circumference of planet
Returns:
float arc radians

geocentric_latitude

public static final float geocentric_latitude(float lat,
                                              float flat)
Calculate the geocentric latitude given a geographic latitude. According to John Synder:
"The geographic or geodetic latitude is the angle which a line perpendicular to the surface of the ellipsoid at the given point makes with the plane of the equator. ...The geocentric latitude is the angle made by a line to the center of the ellipsoid with the equatorial plane". (Map Projections --A Working Manual, p 13)

Translated from Ken Anderson's lisp code Freeing the Essence of Computation

Parameters:
lat - float geographic latitude in radians
flat - float flatening factor
Returns:
float geocentric latitude in radians
See Also:
geographic_latitude(float, float)

geographic_latitude

public static final float geographic_latitude(float lat,
                                              float flat)
Calculate the geographic latitude given a geocentric latitude. Translated from Ken Anderson's lisp code Freeing the Essence of Computation

Parameters:
lat - float geocentric latitude in radians
flat - float flatening factor
Returns:
float geographic latitude in radians
See Also:
geocentric_latitude(float, float)


Copyright © Fraunhofer Gesellschaft. All Rights Reserved.