# NAME

Geo::Horizon - Calculate distance to the visual horizon

# SYNOPSIS

``````  use Geo::Horizon;
my \$gh = Geo::Horizon->new("WGS84");
my \$lat=39;
my \$alt=1.7;
my \$distance_to_horizon=\$gh->distance(\$alt,\$lat);
print "Input Lat: \$lat1\n";
print "Output Distance: \$dist\n";``````

# DESCRIPTION

A perl object for calculating the distance to the visual horizon on an ellipsoid.

# CONSTRUCTOR

## new

``  my \$gh = Geo::Horizon->new(); #default WGS84``

# METHODS

## ellipsoid

Method to set or retrieve the current ellipsoid object. The ellipsoid is a Geo::Ellipsoids object.

``````  my \$ellipsoid=\$gh->ellipsoid;  #Default is WGS84

\$gh->ellipsoid('Clarke 1866'); #Built in ellipsoids from Geo::Ellipsoids
\$gh->ellipsoid({a=>1});        #Custom Sphere 1 unit radius``````

## distance

The straight-line of sight distance to the horizon: This formula does not take in account radio or optical refraction which will be further the longer the wavelength.

``````  my \$dist=\$obj->distance(\$alt, \$lat);  #alt in meters (ellipsoid units)
#lat in signed decimal degrees
my \$dist=\$obj->distance(\$alt);        #default lat => 0 (equator)
my \$dist=\$obj->distance;              #default alt => 1.7``````

Formula from http://newton.ex.ac.uk/research/qsystems/people/sque/physics/horizon/

``  Ds = sqrt(h(2R + h))``

## distance_great_circle

The curved distance along the ellipsoid to the horizon: This is the great circle distance from the track point snapped to the ellipsoid to the visual horizon of the observer.

``````  my \$dist=\$obj->distance_great_circle(\$alt, \$lat);
my \$dist=\$obj->distance_great_circle(\$alt);  #default lat => 0
my \$dist=\$obj->distance_great_circle();      #default alt => 1.7``````

Formula from http://newton.ex.ac.uk/research/qsystems/people/sque/physics/horizon/

``  Dc = R acos(R / (R + h))``

# BUGS

Please send to the geo-perl email list.

# AUTHOR

Michael R. Davis qw/perl michaelrdavis com/