Exercice 3

L'orthodromie est une méthode mathématique qui permet de calculer la distance entre deux points sur une sphère. Elle a pour application (entre autres) le calcul de distances entre des villes de la surface terrestre (distance à vol d'oiseau).

On peut repérer une ville sur la Terre par sa latitude \phi et sa longitude \lambda dans un repère à coordonnées sphériques dont le centre est le centre de la Terre (on supposera par la suite que la Terre est une sphère parfaite). La distance entre deux villes A et B, de latitude et longitude respective (\phi_A, \lambda_A) et (\phi_B,\lambda_B) est donnée par la formule suivante:

d(A,B) = R \arccos[\sin(\phi_A)\sin(\phi_B)+\cos(\phi_A)\cos(\phi_B)\cos(\lambda_A-\lambda_B)]

où R est le rayon de la Terre (R = 6371 km).

On se propose de calculer des distances entre villes de la surface du globe en modélisant une classe Ville permettant d'identifier une ville à partir de sa latitude et de sa longitude. Un script python utilisant la classe Ville pourrait être le suivant:

    #!/usr/bin/env python

    import Ville

    nancy = Ville.Ville('Nancy')
    nancy.latitude = 48.6936
    nancy.longitude = 6.1846
    copenhague = Ville.Ville('Copenhague', 55.676111, 12.568333)
    barcelone = Ville.Ville('Barcelone', longitude = 2.183333, latitude = 41.383333)

    d1 = Ville.Ville.distance(nancy, barcelone)
    d2 = Ville.Ville.distance(nancy, copenhague)

    print nancy
    print copenhague
    print barcelone
    print "La distance entre Nancy et Barcelone vaut %.0f km" % (d1)
    print "La distance entre Nancy et Copenhague vaut %.0f km" % (d2)

qui donne à l'exécution le résultat suivant:

Nancy               : latitude =    48.693600 longitude =     6.184600
Copenhague          : latitude =    55.676111 longitude =    12.568333
Barcelone           : latitude =    41.383333 longitude =     2.183333
La distance entre Nancy et Barcelone vaut 871 km
La distance entre Nancy et Copenhague vaut 889 km

Ecrire la classe Ville.