Ищите haversine с Google; вот мое решение:
#include <math.h>
#include "haversine.h"
#define d2r (M_PI / 180.0)
//calculate haversine distance for linear distance
double haversine_km(double lat1, double long1, double lat2, double long2)
{
double dlong = (long2 - long1) * d2r;
double dlat = (lat2 - lat1) * d2r;
double a = pow(sin(dlat/2.0), 2) + cos(lat1*d2r) * cos(lat2*d2r) * pow(sin(dlong/2.0), 2);
double c = 2 * atan2(sqrt(a), sqrt(1-a));
double d = 6367 * c;
return d;
}
double haversine_mi(double lat1, double long1, double lat2, double long2)
{
double dlong = (long2 - long1) * d2r;
double dlat = (lat2 - lat1) * d2r;
double a = pow(sin(dlat/2.0), 2) + cos(lat1*d2r) * cos(lat2*d2r) * pow(sin(dlong/2.0), 2);
double c = 2 * atan2(sqrt(a), sqrt(1-a));
double d = 3956 * c;
return d;
}
Если целью является только список всех установленных пакетов, это pip list
или conda list
.
pip freeze
, как conda list --export
, больше подходит для создания файлов требований для вашей среды. Например, если вы создали пакет в своей настраиваемой среде с определенными зависимостями, вы можете сделать conda list --export > requirements.txt
. Когда вы готовы распространять свой пакет для других пользователей, они могут легко дублировать вашу среду и связанные с ней зависимости с помощью conda create --name <envname> --file requirements.txt
.
Различия между conda
и pip
требуют более длительного обсуждения. В StackOverflow есть много объяснений. Эта статья Джейка ВандерПласа также отлично читается.
Вы также можете найти эту таблицу полезной. В нем перечислены эквивалентности операций между conda
, pip
и virtualenv
.