#!/usr/bin/perl use strict; use warnings; use Geo::Ellipsoid; my @ellipsoids = ( 'AIRY', 'AIRY-MODIFIED', 'AUSTRALIAN', 'BESSEL-1841', 'CLARKE-1880', 'EVEREST-1830', 'EVEREST-MODIFIED', 'FISHER-1960', 'FISHER-1968', 'GRS80', 'HOUGH-1956', 'HAYFORD', 'IAU76', 'KRASSOVSKY-1938', 'NAD27', 'NWL-9D', 'SOUTHAMERICAN-1969', 'SOVIET-1985', 'WGS72', 'WGS84' ); foreach my $ellipsoid(@ellipsoids) { my $geo = Geo::Ellipsoid->new( ellipsoid => $ellipsoid, units => 'degrees', distance_units => 'mile', longitude => 1, bearing => 1, ); my @origin = ( 37.619002, -122.374843 ); my @dest = ( 33.942536, -118.408074 ); my ( $range, $bearing ) = $geo->to( @origin, @dest ); my ($lat, $lon) = $geo->at( @origin, 2000, 45.0); my ($x, $y) = $geo->displacement( @origin, $lat, $lon ); my @pos = $geo->location( $lat, $lon, $x, $y ); print my $dist = $geo->range( @origin, @dest ), "\n"; }