Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  Haversine
Language: C/C++
Code:
//============================================================================
// Name        : Haversine.cpp
// Author      : Reece Torbert
// Version     : 1.0.2
// Copyright   : Reece Torbert 2019
// Description : Lat/Long Distance using Haversine Formula
//============================================================================

#include <iostream>
#include <cmath>
using namespace std;


int main() {
    const int afterDeci = 3;
    const double pi = 3.14159265;
     const double radius = 3959; //in miles
     double phiA, phiB;
     double gammaA, gammaB;
    double latA, latB, lonA, lonB;
//  double deltaLat, deltaLon;
    double dist, distKm;
//  double hav;

     cout << "Point 1 (Enter the latitude and longitude in decimal degree form, +-xx.yyyyyyy, using - for west and south)" << endl;
         cin >> phiA>> gammaA;
    cout << "Point 2, in same form as above" << endl;
        cin >> phiB >> gammaB;

    //switching from degrees to radians, and doing delta calcl
       latA = (phiA*pi)/180;
       latB = (phiB*pi)/180;
       lonA = (gammaA*pi)/180;
       lonB = (gammaB*pi)/180;
//     deltaLat = latB - latA;
//     deltaLon = lonB - lonA;

    //performing calculations
    dist = sin(latA) * sin(latB) + cos(latA) * cos(latB) * cos(lonA - lonB);
    dist = acos(dist);
    dist = radius*dist;
    // hav = (sqrt ( ( (1-cos(deltaLat)/2) ) + (cos(latA) * cos(latB) * ((1-cos(deltaLon))/2)) ) );
    // dist = (2*radius)*(asin(sqrt(hav)));

    distKm = dist * 1.609;

    //setting cout definitions
    cout.setf(ios::fixed);
    cout.setf(ios::showpoint);
    cout.precision(afterDeci);
//  cout << "latA, latB, lonA, lonB" << endl << latA << endl << latB << endl << lonA << endl << lonB << endl;
    cout << "Distance:" << endl << dist << " miles, " << distKm << " kilometers." << endl;

     return 0;
}
          
Comments: