Geo::Horizon

| Нет комментариев

Сегодня можно было бы написать про Google Buzz, но Perl API к нему еще не создан :-)

Зато на спане есть полезный модуль Geo::Horizon, который позволяет вычислить расстояние до горизонта. Расстояние прямой видимости зависит от широты, на которой находится наблюдатель, и от его роста.

Например, когда в центре Москвы (на широте около 55°) снесут все гостиницы и старые здания, человек ростом 180 см (вставшего на цыпочки, чтобы компенсировать расстояние от глаз до макушки) сможет видеть на расстоянии около пяти километров (что, в общем, сходится с тем, что говорили на уроках природоведения).

use v5.10;
use strict;
use Geo::Horizon;

say Geo::Horizon->new->distance(1.8, 55.7522); # 4794.73

При создании объекта типа Geo::Horizon возможно явно указать один из типов аппроксимации формы Земли, которые понимает модуль Geo::Ellipsoid, например:

my $gh = Geo::Horizon->new('WGS84');
say $gh->distance($height, $latitude);

Кроме того, возможно вычислить расстояние не по прямой, а по поверхности Земли. На высоте глаз человека разница будет неощутимой, но если смотреть с метеоплощадки телебашни в Ташкенте, то эта разница достигнет двух метров:

say $gh->distance(318, 41.345278);              # 63677.53
say $gh->distance_great_circle(318, 41.345278); # 63675.51

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 09.02.2010 23:40. Автор — ash.

Предыдущая запись — Template::Semantic

Следующая запись — state (1)

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.