Je code depuis quelques temps une classe C++ permettant de gérer des coordonnées spatiales.
La classe en est arrivée à un point où toutes les fonctions primordiales sont faites et où il est temps de passer au debuggage grandeur nature.
Le projet ce trouve sur http://code.google.com/p/clocate/ ; merci à tous de me dire ce qu'il faudrai revoir.
En gros la classe permet de gérer des coordonnées de type XYZ et GPS. Parmi les coordonnées GPS il est possible d'utiliser les degrés décimales -Dd- (4.4242°), degrés,minutes décimales -DMd- (34°45.6452'), degrés,minutes,secondes décimales -DMSd- (12°55'3.23425") et les degrés,minutes,secondes -DMS- (7°43'9")
La classe :
-gère un certain nombre d'ellipsoïdes (ne pas hésiter à me le dire pour en ajouter)
-peut convertir : Dd<=>DMd<=>DMSd<=>DMS (attention : convertir de DMSd vers DMS enlève de la précision)
-peut convertir : XYZ<=>GPS (attention : cela enlève de la précision aussi) - ceci grâce aux ellipsoïdes justement
-calculer des distances entre deux points
-exporter les coordonnées sous forme binaire, chaine de caractères, XML ou dans des variables (selon le prototype).
-permet les opérations = (copie d'un objet) et == (comparaison de deux objets ; != est aussi disponible)
Exemple :
CLocate monPoint; monPoint.setDataFromValue( (long double)1532,(long double)65,(long double)9432 ); //Point de type XYZ monPoint.setEllipsoid( CLocate::ELLIPSOID_wgs84); monPoint.setCoordinateType( CLocate::COORD_DMSd); //Converti de XYZ vers degrés,minutes,secondes décimales std::cout << monPoint.getDataAsXML() << std::endl; //affichage des coordonnées au format XML if (monPoint != unAutrePoint ) std::cout << monPoint.getDistance( unAutrePoint ) << std::endl; //Calcul la distance avec un autre point s'ils sont différents l'un de l'autre