/*************************************************************************************************************************************/ /* */ /* C O N V E R S I O N C A R T E S I E N N E - S P H E R I Q U E D E S C O O R D O N N E E S : */ /* */ /* */ /* Author of '$xcg/XYZ_RPT$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1996??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R F A C E ' listG ' : */ /* */ /* */ /* :Debut_listG: */ /* :Fin_listG: */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #define COORDONNEE_X \ FZERO #define COORDONNEE_Y \ FZERO #define COORDONNEE_Z \ FZERO /* Coordonnees spheriques. */ #define COORDONNEE_RHO \ FZERO #define COORDONNEE_PHI \ FZERO #define COORDONNEE_THETA \ FZERO /* Coordonnees polaires. */ #define CONVERTIR_DE_CARTESIENNES_EN_SPHERIQUES \ VRAI \ /* Indique si l'on convertit de cartesiennes en spheriques ('VRAI') ou bien de spheriques en */ \ /* cartesiennes ('FAUX'). */ #define EDITER_COORDONNEE_X \ VRAI #define EDITER_COORDONNEE_Y \ VRAI #define EDITER_COORDONNEE_Z \ VRAI #define EDITER_COORDONNEE_RHO \ VRAI #define EDITER_COORDONNEE_PHI \ VRAI #define EDITER_COORDONNEE_THETA \ VRAI #define EDITER_LES_MESSAGES_D_EN_TETE \ VRAI /* Controle de l'edition. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #define EDITER(valeur,editer,message) \ Bblock \ Test(IL_FAUT(editer)) \ Bblock \ Test(IL_FAUT(editer_les_messages_d_en_tete)) \ /* Test introduit le 20160316134903... */ \ Bblock \ CAL2(Prin2("%s=%.^^^\n",message,valeur)); \ /* Le 20060105153025, le format "16g" est passe a "^^g" pour plus de souplesse... */ \ /* */ \ /* Le 20091123122951, le format "^^g" est passe a "^^^" pour plus de souplesse... */ \ Eblock \ ATes \ Bblock \ CAL2(Prin1("%.^^^\n",valeur)); \ Eblock \ ETes \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Procedure d'edition conditionnelle. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O N V E R S I O N C A R T E S I E N N E - S P H E R I Q U E D E S C O O R D O N N E E S : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(Float,INIT(coordonnee_X,COORDONNEE_X)); DEFV(Float,INIT(coordonnee_Y,COORDONNEE_Y)); DEFV(Float,INIT(coordonnee_Z,COORDONNEE_Z)); /* Coordonnees spheriques. */ DEFV(Float,INIT(coordonnee_RHO,COORDONNEE_RHO)); DEFV(Float,INIT(coordonnee_PHI,COORDONNEE_PHI)); DEFV(Float,INIT(coordonnee_THETA,COORDONNEE_THETA)); /* Coordonnees polaires. */ DEFV(Logical,INIT(convertir_de_cartesiennes_en_spheriques,CONVERTIR_DE_CARTESIENNES_EN_SPHERIQUES)); /* Indique si l'on convertit de cartesiennes en spheriques ('VRAI') ou bien de spheriques en */ /* cartesiennes ('FAUX'). */ DEFV(Logical,INIT(editer_coordonnee_X,EDITER_COORDONNEE_X)); DEFV(Logical,INIT(editer_coordonnee_Y,EDITER_COORDONNEE_Y)); DEFV(Logical,INIT(editer_coordonnee_Z,EDITER_COORDONNEE_Z)); DEFV(Logical,INIT(editer_coordonnee_RHO,EDITER_COORDONNEE_RHO)); DEFV(Logical,INIT(editer_coordonnee_PHI,EDITER_COORDONNEE_PHI)); DEFV(Logical,INIT(editer_coordonnee_THETA,EDITER_COORDONNEE_THETA)); DEFV(Logical,INIT(editer_les_messages_d_en_tete,EDITER_LES_MESSAGES_D_EN_TETE)); /* Controle de l'edition. */ /*..............................................................................................................................*/ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_F("x=""X=",coordonnee_X); GET_ARGUMENT_F("y=""Y=",coordonnee_Y); GET_ARGUMENT_F("z=""Z=",coordonnee_Z); GET_ARGUMENT_F("rho=""r=""R=",coordonnee_RHO); GET_ARGUMENT_F("phi=""p=""P=",coordonnee_PHI); GET_ARGUMENT_F("theta=""t=""T=",coordonnee_THETA); GET_ARGUMENT_L("cartesiennes_spheriques=""cartesiennes=""cartesien=""cart=" ,convertir_de_cartesiennes_en_spheriques ); GET_ARGUMENT_N("spheriques_cartesiennes=""spheriques=""spherique=""sph=" ,convertir_de_cartesiennes_en_spheriques ); /* Le 20150217150816, les 'GET_ARGUMENT_L(...)' et 'GET_ARGUMENT_N(...)' precedents ont */ /* ete permutes car il me semble qu'il y avait-la une grave erreur... */ GET_ARGUMENT_L("ex=""eX=",editer_coordonnee_X); GET_ARGUMENT_L("ey=""eY=",editer_coordonnee_Y); GET_ARGUMENT_L("ez=""eZ=",editer_coordonnee_Z); GET_ARGUMENT_L("erho=""eRHO=",editer_coordonnee_RHO); GET_ARGUMENT_L("ephi=""ePHI=",editer_coordonnee_PHI); GET_ARGUMENT_L("etheta=""eTHETA=",editer_coordonnee_THETA); GET_ARGUMENT_L("messages=""message=""Men_tete=",editer_les_messages_d_en_tete); /* Arguments introduits le 20160316134903... */ ) ); Test(IL_FAUT(convertir_de_cartesiennes_en_spheriques)) Bblock EDITER(coordonnee_X,editer_coordonnee_X,"x"); EDITER(coordonnee_Y,editer_coordonnee_Y,"y"); EDITER(coordonnee_Z,editer_coordonnee_Z,"z"); EDITER(Rho_3D(coordonnee_X,coordonnee_Y,coordonnee_Z),editer_coordonnee_RHO,"rho"); EDITER(Phi_3D(coordonnee_X,coordonnee_Y,coordonnee_Z),editer_coordonnee_PHI,"phi"); EDITER(Theta_3D(coordonnee_X,coordonnee_Y,coordonnee_Z),editer_coordonnee_THETA,"theta"); Eblock ATes Bblock EDITER(Xcartesienne_3D(coordonnee_RHO,coordonnee_PHI,coordonnee_THETA),editer_coordonnee_X,"x"); EDITER(Ycartesienne_3D(coordonnee_RHO,coordonnee_PHI,coordonnee_THETA),editer_coordonnee_Y,"y"); EDITER(Zcartesienne_3D(coordonnee_RHO,coordonnee_PHI,coordonnee_THETA),editer_coordonnee_Z,"z"); EDITER(coordonnee_RHO,editer_coordonnee_RHO,"rho"); EDITER(coordonnee_PHI,editer_coordonnee_PHI,"phi"); EDITER(coordonnee_THETA,editer_coordonnee_THETA,"theta"); Eblock ETes RETU_Commande; Eblock ECommande