mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-03 23:06:37 +00:00
UConv: use great_circle_distance()
git-svn-id: https://svn.fhem.de/fhem/trunk@19686 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
ddbf4d33d2
commit
c89552d55f
@ -12,15 +12,15 @@ use POSIX;
|
|||||||
use utf8;
|
use utf8;
|
||||||
|
|
||||||
use Math::Trig;
|
use Math::Trig;
|
||||||
|
use Math::Trig ':pi';
|
||||||
|
use Math::Trig ':radial';
|
||||||
|
use Math::Trig ':great_circle';
|
||||||
use Scalar::Util qw(looks_like_number);
|
use Scalar::Util qw(looks_like_number);
|
||||||
use Time::HiRes qw(gettimeofday);
|
use Time::HiRes qw(gettimeofday);
|
||||||
use Time::Local;
|
use Time::Local;
|
||||||
|
|
||||||
#use Data::Dumper;
|
#use Data::Dumper;
|
||||||
|
|
||||||
my $DEG = pi / 180.0;
|
|
||||||
my $RAD = 180. / pi;
|
|
||||||
|
|
||||||
sub GetSeason (;$$$);
|
sub GetSeason (;$$$);
|
||||||
sub _GetSeasonPheno ($$;$$);
|
sub _GetSeasonPheno ($$;$$);
|
||||||
sub _ReplaceStringByHashKey($$;$);
|
sub _ReplaceStringByHashKey($$;$);
|
||||||
@ -800,7 +800,7 @@ sub mi2km($;$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#################################
|
#################################
|
||||||
### Angular conversions
|
### Plane angle conversions
|
||||||
###
|
###
|
||||||
|
|
||||||
# convert direction in degree to point of the compass
|
# convert direction in degree to point of the compass
|
||||||
@ -993,19 +993,8 @@ sub distance($$$$;$$) {
|
|||||||
if ( $lat1 eq $lat2 && $lng1 eq $lng2 );
|
if ( $lat1 eq $lat2 && $lng1 eq $lng2 );
|
||||||
|
|
||||||
my $aearth = 6378.137; # GRS80/WGS84 semi major axis of earth ellipsoid
|
my $aearth = 6378.137; # GRS80/WGS84 semi major axis of earth ellipsoid
|
||||||
|
my $km = great_circle_distance( deg2rad($lat1), pi/2. - deg2rad($lng1),
|
||||||
$lat1 *= $DEG;
|
deg2rad($lat2), pi/2. - deg2rad($lng2), $aearth );
|
||||||
$lng1 *= $DEG;
|
|
||||||
$lat2 *= $DEG;
|
|
||||||
$lng2 *= $DEG;
|
|
||||||
|
|
||||||
my $dlat = $lat2 - $lat1;
|
|
||||||
my $dlng = $lng2 - $lng1;
|
|
||||||
my $a =
|
|
||||||
sin( $dlat / 2. ) * sin( $dlat / 2. ) +
|
|
||||||
cos($lat1) * cos($lat2) * sin( $dlng / 2. ) * sin( $dlng / 2. );
|
|
||||||
my $c = 2. * atan2( sqrt($a), sqrt( 1. - $a ) );
|
|
||||||
my $km = $aearth * $c;
|
|
||||||
|
|
||||||
return _round(
|
return _round(
|
||||||
(
|
(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user