#include <iostream>
#include <cstdlib>
#include <cmath>
#include <math.h>
using namespace std;
class GPSCoord
{
private : double longitude,latitude;
public : double longitude_degree(),latitude_degree(),longitude_radian(double longitude),latitude_radian(double latitude),distance_to(const GPSCoord & coordinate);
GPSCoord(double longitudo,double latitudo)
{
longitude=longitudo,latitude=latitudo;
}
};
int main()
{
double izmir_longitude=27.09,izmir_latitude=38.26;
GPSCoord izmir(izmir_longitude,izmir_latitude);
double ankara_longitude=32.85,ankara_latitude=39.92;
GPSCoord ankara(ankara_longitude,ankara_latitude);
izmir.distance_to(ankara);
double iytemath_longitude=26.633088,iytemath_latitude=38.324618;
GPSCoord iytemath(iytemath_longitude,iytemath_latitude);
double iytelibrary_longitude=26.639489,iytelibrary_latitude=38.320125;
GPSCoord iytelibrary(iytelibrary_longitude,iytelibrary_latitude);
iytemath.distance_to(iytelibrary);
return 0;
}
double GPSCoord::longitude_degree()
{
return longitude;
}
double GPSCoord::latitude_degree()
{
return latitude;
}
double GPSCoord::longitude_radian(double longitude)
{
return (longitude*22/7)/180;
}
double GPSCoord::latitude_radian(double latitude)
{
return (latitude*22/7)/180;
}
double GPSCoord::distance_to(const GPSCoord & coord)
{
double R=6371,longitude=longitude_degree(),latitude=latitude_degree();
double longitude_rad=longitude_radian(coord.longitude),latitude_rad=latitude_radian(coord.latitude);
double longitude_const_radian=longitude_radian(longitude),latitude_const_radian=latitude_radian(latitude);
double a= pow(sin((latitude_radian( (coord.latitude) - latitude ))/2),2) + cos(latitude_const_radian) * cos(latitude_rad) * pow(sin((longitude_radian((coord.longitude) - longitude))/2),2) ;
double c=2*atan2(sqrt(a),sqrt(1-a));
double d=R*c;
if(d==1 || d > 1)
{
cout << "Between Izmir and Ankara :" << d << " kilometers" << endl;
}
else if(d==0 || (d > 0 && d < 1))
{
d =d*1000;/*for km to m*/
cout << "Between IYTE Mathematics Department building and IYTE Library : "<< d << " meters " << endl;
}
else
{
cout << "Sorry, something went wrong." << endl;
}
return d ;
}