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
ptetre des flottants 128 ou 160 bits.. 

a priori, la plupart du temps, lorsque tu lis du code ecrit par quelqu'un d'autre pour les premieres fois, l'information principale que tu cherches, c'est pas si telle ou telle variable est membre, locale, globale, passee en parametre, etc... c'est plutot ce que fait le code, les algos utilises, etc... pour comprendre la classe... donc la priorite c'est la lisibilite... c'est quoi le plus lisible, ca:
... (mais python simplement car les methodes sont ecrites explicitetement avec le pointeur en premier parametre:
)