Geo-HelmertTransform
view release on metacpan or search on metacpan
lib/Geo/HelmertTransform.pm view on Meta::CPAN
$lon = atan2($y, $x);
$p = sqrt($x**2 + $y**2);
$lat2 = atan2($z, $p);
my $niter = 0;
do {
$lat = $lat2;
$v = $datum->a() / sqrt(1 - $datum->e2() * sin($lat) ** 2);
$lat2 = atan2(($z + $datum->e2() * $v * sin($lat)), $p);
die "exceeded 10000 iterations without converging in Geo::HelmertTransform::xyz_to_geo"
if (++$niter > 10000);
} while (abs($lat2 - $lat) > 2e-6); # about 1/10000 mile
$h = $p / cos($lat) - $v;
return (rad_to_deg($lat), rad_to_deg($lon), $h);
}
=item convert_datum D1 D2 LAT LON H
( run in 0.798 second using v1.01-cache-2.11-cpan-71847e10f99 )