- /* Calcule de la distance entre deux points sur une sphere par Tanguy Moret
- * Code source sous license GPL */
-
- #include <iostream>
- #include <cmath>
- #include <cstdio>
-
- #define PI 3.14159265359
-
- class sphere {
- double longitudeA, longitudeB, latitudeA, latitudeB, rayon;
-
- public:
- void init();
- double calculedistance();
- };
-
- void sphere::init() {
- cout << "Entrez le rayon de la sphere (Rayon de la Terre = env. 6378.138) :\n";
- cin >> rayon;
- cout << "Entrez la longitude du point A suivi de sa latitude :\n";
- cin >> longitudeA >> latitudeA;
- cout << "\nEntrez la longitude du point B suivi de sa latitude:\n";
- cin >> longitudeB >> latitudeB;}
-
- /* acos retourne une valeur en radian, cos et sin en degrée car on multiplie
- * les latitudes/longitudes par PI/180 (360°=2PI Radian) */
-
- double sphere::calculedistance() {
- return((acos(cos(latitudeA*PI/180)*cos(latitudeB*PI/180)*cos((longitudeB*PI/180)-(longitudeA*PI/180))+sin(latitudeA*PI/180)*sin(latitudeB*PI/180)))*rayon);}
-
- int main()
- {
- sphere s1;
- cout << "\nCalcule de la distance entre deux points sur une sphere\n"
- << "Les latitudes nords sont positives, sud sont negatives\n"
- << "Les longitudes est de Greenwitch sont positives, ouest sont negatives\n\n";
- s1.init();
- cout << "\nLa distance entre les deux points est de : " << s1.calculedistance();
- getchar(); // On quitte lorsque l'utilisateur appuye sur une touche
- cout << "\nTanguy Moret - 11/06/2002\n";
- }
/* Calcule de la distance entre deux points sur une sphere par Tanguy Moret
* Code source sous license GPL */
#include <iostream>
#include <cmath>
#include <cstdio>
#define PI 3.14159265359
class sphere {
double longitudeA, longitudeB, latitudeA, latitudeB, rayon;
public:
void init();
double calculedistance();
};
void sphere::init() {
cout << "Entrez le rayon de la sphere (Rayon de la Terre = env. 6378.138) :\n";
cin >> rayon;
cout << "Entrez la longitude du point A suivi de sa latitude :\n";
cin >> longitudeA >> latitudeA;
cout << "\nEntrez la longitude du point B suivi de sa latitude:\n";
cin >> longitudeB >> latitudeB;}
/* acos retourne une valeur en radian, cos et sin en degrée car on multiplie
* les latitudes/longitudes par PI/180 (360°=2PI Radian) */
double sphere::calculedistance() {
return((acos(cos(latitudeA*PI/180)*cos(latitudeB*PI/180)*cos((longitudeB*PI/180)-(longitudeA*PI/180))+sin(latitudeA*PI/180)*sin(latitudeB*PI/180)))*rayon);}
int main()
{
sphere s1;
cout << "\nCalcule de la distance entre deux points sur une sphere\n"
<< "Les latitudes nords sont positives, sud sont negatives\n"
<< "Les longitudes est de Greenwitch sont positives, ouest sont negatives\n\n";
s1.init();
cout << "\nLa distance entre les deux points est de : " << s1.calculedistance();
getchar(); // On quitte lorsque l'utilisateur appuye sur une touche
cout << "\nTanguy Moret - 11/06/2002\n";
}