| OpenGL-Earth documentation | Contained in the OpenGL-Earth distribution. |
OpenGL::Earth::Coords
# Where's Oslo on a 3D Sphere of radius 1.0?
use OpenGL::Earth::Coords;
my ($x, $y, $z) = OpenGL::Earth::Coords::earth_to_xyz(59.9167, 10.75, 1.0);
printf "x=%.3f y=%.3f z=%.3f\n", $x, $y, $z;
Just a quick and dirty module to convert lat/long coordinates into 3D x, y, z coordinates, assuming the Earth is a perfect sphere, which we know is not.
Cosimo Streppone, cosimo@cpan.org
This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| OpenGL-Earth documentation | Contained in the OpenGL-Earth distribution. |
# # Coordinates system related functions # # $Id: Coords.pm 120 2009-01-25 20:57:26Z Cosimo $ package OpenGL::Earth::Coords; # (1/360.0) * 2 * 3.14159265 use constant DEG_TO_RAD => 0.0174532925; # Convert earth latitude/longitude to 3D coords sub earth_to_xyz ($$$) { my ($lat, $lon, $radius) = @_; $lat *= DEG_TO_RAD; $lon *= DEG_TO_RAD; my $cos_lat = $radius * cos($lat); my $x = $cos_lat * cos($lon); my $y = $cos_lat * sin($lon); my $z = $radius * sin($lat); return ($x, $y, $z); } 1; __END__